{
  "id": "9b23c39e70a8bd4f079f65ec70f34bcd",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.14",
  "solcLongVersion": "0.8.14+commit.80d49f37",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/Artist.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.7;\n\n/*\n ██████  ██████  ██    ██ ███    ██ ██████  \n██      ██    ██ ██    ██ ████   ██ ██   ██ \n███████ ██    ██ ██    ██ ██ ██  ██ ██   ██ \n     ██ ██    ██ ██    ██ ██  ██ ██ ██   ██ \n███████  ██████   ██████  ██   ████ ██████ \n*/\n\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\n\n// This contract is a combination of Mirror.xyz's Editions.sol and Zora's SingleEditionMintable.sol\n\n/**\n * @title Artist\n * @author SoundXYZ\n */\ncontract Artist is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\n    // todo (optimization): link Strings as a deployed library\n    using Strings for uint256;\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n\n    // ============ Structs ============\n\n    struct Edition {\n        // The account that will receive sales revenue.\n        address payable fundingRecipient;\n        // The price at which each token will be sold, in ETH.\n        uint256 price;\n        // The number of tokens sold so far.\n        uint32 numSold;\n        // The maximum number of tokens that can be sold.\n        uint32 quantity;\n        // Royalty amount in bps\n        uint32 royaltyBPS;\n        // start timestamp of auction (in seconds since unix epoch)\n        uint32 startTime;\n        // end timestamp of auction (in seconds since unix epoch)\n        uint32 endTime;\n    }\n\n    // ============ Storage ============\n\n    string internal baseURI;\n\n    CountersUpgradeable.Counter private atTokenId;\n    CountersUpgradeable.Counter private atEditionId;\n\n    // Mapping of edition id to descriptive data.\n    mapping(uint256 => Edition) public editions;\n    // Mapping of token id to edition id.\n    mapping(uint256 => uint256) public tokenToEdition;\n    // The amount of funds that have been deposited for a given edition.\n    mapping(uint256 => uint256) public depositedForEdition;\n    // The amount of funds that have already been withdrawn for a given edition.\n    mapping(uint256 => uint256) public withdrawnForEdition;\n\n    // ============ Events ============\n\n    event EditionCreated(\n        uint256 indexed editionId,\n        address fundingRecipient,\n        uint256 price,\n        uint32 quantity,\n        uint32 royaltyBPS,\n        uint32 startTime,\n        uint32 endTime\n    );\n\n    event EditionPurchased(\n        uint256 indexed editionId,\n        uint256 indexed tokenId,\n        // `numSold` at time of purchase represents the \"serial number\" of the NFT.\n        uint32 numSold,\n        // The account that paid for and received the NFT.\n        address indexed buyer\n    );\n\n    // ============ Methods ============\n\n    /**\n      @param _owner Owner of edition\n      @param _name Name of artist\n    */\n    function initialize(\n        address _owner,\n        uint256 _artistId,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public initializer {\n        __ERC721_init(_name, _symbol);\n        __Ownable_init();\n\n        // Set ownership to original sender of contract call\n        transferOwnership(_owner);\n\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\n\n        // Set token id start to be 1 not 0\n        atTokenId.increment();\n        // Set edition id start to be 1 not 0\n        atEditionId.increment();\n    }\n\n    function createEdition(\n        address payable _fundingRecipient,\n        uint256 _price,\n        uint32 _quantity,\n        uint32 _royaltyBPS,\n        uint32 _startTime,\n        uint32 _endTime\n    ) external onlyOwner {\n        editions[atEditionId.current()] = Edition({\n            fundingRecipient: _fundingRecipient,\n            price: _price,\n            numSold: 0,\n            quantity: _quantity,\n            royaltyBPS: _royaltyBPS,\n            startTime: _startTime,\n            endTime: _endTime\n        });\n\n        emit EditionCreated(\n            atEditionId.current(),\n            _fundingRecipient,\n            _price,\n            _quantity,\n            _royaltyBPS,\n            _startTime,\n            _endTime\n        );\n\n        atEditionId.increment();\n    }\n\n    function buyEdition(uint256 _editionId) external payable {\n        // Check that the edition exists. Note: this is redundant\n        // with the next check, but it is useful for clearer error messaging.\n        require(editions[_editionId].quantity > 0, 'Edition does not exist');\n        // Check that there are still tokens available to purchase.\n        require(editions[_editionId].numSold < editions[_editionId].quantity, 'This edition is already sold out.');\n        // Check that the sender is paying the correct amount.\n        require(msg.value >= editions[_editionId].price, 'Must send enough to purchase the edition.');\n        // Don't allow purchases before the start time\n        require(editions[_editionId].startTime < block.timestamp, \"Auction hasn't started\");\n        // Don't allow purchases after the end time\n        require(editions[_editionId].endTime > block.timestamp, 'Auction has ended');\n\n        // Mint a new token for the sender, using the `tokenId`.\n        _mint(msg.sender, atTokenId.current());\n        // Update the deposited total for the edition\n        depositedForEdition[_editionId] += msg.value;\n        // Increment the number of tokens sold for this edition.\n        editions[_editionId].numSold++;\n        // Store the mapping of token id to the edition being purchased.\n        tokenToEdition[atTokenId.current()] = _editionId;\n\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\n\n        atTokenId.increment();\n    }\n\n    // ============ Operational Methods ============\n\n    function withdrawFunds(uint256 _editionId) external {\n        // Compute the amount available for withdrawing from this edition.\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\n\n        // Set the amount withdrawn to the amount deposited.\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\n        // Send the amount that was remaining for the edition, to the funding recipient.\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\n    }\n\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\n        editions[_editionId].startTime = _startTime;\n    }\n\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\n        editions[_editionId].endTime = _endTime;\n    }\n\n    // ============ NFT Methods ============\n\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\n\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\n    }\n\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/storefront\n    function contractURI() public view returns (string memory) {\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\n        return string(abi.encodePacked(baseURI, 'storefront'));\n    }\n\n    // ============ Extensions =================\n\n    /**\n        @dev Get token ids for a given edition id\n        @param _editionId edition id\n     */\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\n        uint256 index = 0;\n\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\n            if (tokenToEdition[id] == _editionId) {\n                tokenIdsOfEdition[index] = id;\n                index++;\n            }\n        }\n        return tokenIdsOfEdition;\n    }\n\n    /**\n        @dev Get owners of a given edition id\n        @param _editionId edition id\n     */\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\n        uint256 index = 0;\n\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\n            if (tokenToEdition[id] == _editionId) {\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\n                index++;\n            }\n        }\n        return ownersOfEdition;\n    }\n\n    /**\n        @dev Get royalty information for token\n        @param _editionId edition id\n        @param _salePrice Sale price for the token\n     */\n    function royaltyInfo(uint256 _editionId, uint256 _salePrice)\n        external\n        view\n        override\n        returns (address fundingRecipient, uint256 royaltyAmount)\n    {\n        Edition memory edition = editions[_editionId];\n\n        if (edition.fundingRecipient == address(0x0)) {\n            return (edition.fundingRecipient, 0);\n        }\n\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\n\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\n    }\n\n    function totalSupply() external view returns (uint256) {\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\n    }\n\n    function supportsInterface(bytes4 _interfaceId)\n        public\n        view\n        override(ERC721Upgradeable, IERC165Upgradeable)\n        returns (bool)\n    {\n        return\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\n    }\n\n    // ============ Private Methods ============\n\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\n\n        (bool success, ) = _recipient.call{value: _amount}('');\n        require(success, 'Unable to send value: recipient may have reverted');\n    }\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/introspection/IERC165Upgradeable.sol\";\n\n/**\n * @dev Interface for the NFT Royalty Standard.\n *\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\n *\n * _Available since v4.5._\n */\ninterface IERC2981Upgradeable is IERC165Upgradeable {\n    /**\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\n     */\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\n        external\n        view\n        returns (address receiver, uint256 royaltyAmount);\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721Upgradeable.sol\";\nimport \"./IERC721ReceiverUpgradeable.sol\";\nimport \"./extensions/IERC721MetadataUpgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/ContextUpgradeable.sol\";\nimport \"../../utils/StringsUpgradeable.sol\";\nimport \"../../utils/introspection/ERC165Upgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\n    using AddressUpgradeable for address;\n    using StringsUpgradeable for uint256;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Mapping from token ID to owner address\n    mapping(uint256 => address) private _owners;\n\n    // Mapping owner address to token count\n    mapping(address => uint256) private _balances;\n\n    // Mapping from token ID to approved address\n    mapping(uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\n        __ERC721_init_unchained(name_, symbol_);\n    }\n\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\n        return\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n        return _balances[owner];\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = _owners[tokenId];\n        require(owner != address(0), \"ERC721: invalid token ID\");\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        _requireMinted(tokenId);\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overridden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not token owner nor approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        _requireMinted(tokenId);\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n        _safeTransfer(from, to, tokenId, data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _owners[tokenId] != address(0);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _mint(to, tokenId);\n        require(\n            _checkOnERC721Received(address(0), to, tokenId, data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId);\n\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(address(0), to, tokenId);\n\n        _afterTokenTransfer(address(0), to, tokenId);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\n\n        _beforeTokenTransfer(owner, address(0), tokenId);\n\n        // Clear approvals\n        _approve(address(0), tokenId);\n\n        _balances[owner] -= 1;\n        delete _owners[tokenId];\n\n        emit Transfer(owner, address(0), tokenId);\n\n        _afterTokenTransfer(owner, address(0), tokenId);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId);\n\n        // Clear approvals from the previous owner\n        _approve(address(0), tokenId);\n\n        _balances[from] -= 1;\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        _afterTokenTransfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits an {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\n    }\n\n    /**\n     * @dev Approve `operator` to operate on all of `owner` tokens\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function _setApprovalForAll(\n        address owner,\n        address operator,\n        bool approved\n    ) internal virtual {\n        require(owner != operator, \"ERC721: approve to caller\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Reverts if the `tokenId` has not been minted yet.\n     */\n    function _requireMinted(uint256 tokenId) internal view virtual {\n        require(_exists(tokenId), \"ERC721: invalid token ID\");\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) private returns (bool) {\n        if (to.isContract()) {\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n                } else {\n                    /// @solidity memory-safe-assembly\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        } else {\n            return true;\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[44] private __gap;\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    function __Ownable_init() internal onlyInitializing {\n        __Ownable_init_unchained();\n    }\n\n    function __Ownable_init_unchained() internal onlyInitializing {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n}\n"
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n    uint8 private constant _ADDRESS_LENGTH = 20;\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0x00\";\n        }\n        uint256 temp = value;\n        uint256 length = 0;\n        while (temp != 0) {\n            length++;\n            temp >>= 8;\n        }\n        return toHexString(value, length);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n    }\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary CountersUpgradeable {\n    struct Counter {\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\n        uint256 _value; // default: 0\n    }\n\n    function current(Counter storage counter) internal view returns (uint256) {\n        return counter._value;\n    }\n\n    function increment(Counter storage counter) internal {\n        unchecked {\n            counter._value += 1;\n        }\n    }\n\n    function decrement(Counter storage counter) internal {\n        uint256 value = counter._value;\n        require(value > 0, \"Counter: decrement overflow\");\n        unchecked {\n            counter._value = value - 1;\n        }\n    }\n\n    function reset(Counter storage counter) internal {\n        counter._value = 0;\n    }\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165Upgradeable {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165Upgradeable.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721Upgradeable is IERC165Upgradeable {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external;\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the caller.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool _approved) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721ReceiverUpgradeable {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721Upgradeable.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n                /// @solidity memory-safe-assembly\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary StringsUpgradeable {\n    bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n    uint8 private constant _ADDRESS_LENGTH = 20;\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0x00\";\n        }\n        uint256 temp = value;\n        uint256 length = 0;\n        while (temp != 0) {\n            length++;\n            temp >>= 8;\n        }\n        return toHexString(value, length);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n    }\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165Upgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\n    function __ERC165_init() internal onlyInitializing {\n    }\n\n    function __ERC165_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Indicates that the contract has been initialized.\n     * @custom:oz-retyped-from bool\n     */\n    uint8 private _initialized;\n\n    /**\n     * @dev Indicates that the contract is in the process of being initialized.\n     */\n    bool private _initializing;\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint8 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\n     */\n    modifier initializer() {\n        bool isTopLevelCall = !_initializing;\n        require(\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n            \"Initializable: contract is already initialized\"\n        );\n        _initialized = 1;\n        if (isTopLevelCall) {\n            _initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            _initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\n     * initialization.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     */\n    modifier reinitializer(uint8 version) {\n        require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n        _initialized = version;\n        _initializing = true;\n        _;\n        _initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        require(_initializing, \"Initializable: contract is not initializing\");\n        _;\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     */\n    function _disableInitializers() internal virtual {\n        require(!_initializing, \"Initializable: contract is initializing\");\n        if (_initialized < type(uint8).max) {\n            _initialized = type(uint8).max;\n            emit Initialized(type(uint8).max);\n        }\n    }\n}\n"
      },
      "contracts/test-contracts/ArtistCreatorUpgradeTest.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.7;\n\n/*\n ██████  ██████  ██    ██ ███    ██ ██████  \n██      ██    ██ ██    ██ ████   ██ ██   ██ \n███████ ██    ██ ██    ██ ██ ██  ██ ██   ██ \n     ██ ██    ██ ██    ██ ██  ██ ██ ██   ██ \n███████  ██████   ██████  ██   ████ ██████ \n*/\n\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\nimport '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';\nimport '../Artist.sol';\n\ncontract ArtistCreatorUpgradeTest is Initializable, UUPSUpgradeable, OwnableUpgradeable {\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSAUpgradeable for bytes32;\n\n    // ============ Storage ============\n\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\n    CountersUpgradeable.Counter private atArtistId;\n    // address used for signature verification, changeable by owner\n    address public admin;\n    bytes32 public DOMAIN_SEPARATOR;\n    address public beaconAddress;\n    // registry of created contracts\n    address[] public artistContracts;\n\n    // ============ Events ============\n\n    /// Emitted when an Artist is created\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\n\n    // ============ Functions ============\n\n    /// Initializes factory\n    function initialize() public initializer {\n        __Ownable_init_unchained();\n\n        // set admin for artist deployment authorization\n        admin = msg.sender;\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\n\n        // set up beacon with msg.sender as the owner\n        UpgradeableBeacon _beacon = new UpgradeableBeacon(address(new Artist()));\n        _beacon.transferOwnership(msg.sender);\n        beaconAddress = address(_beacon);\n\n        // Set artist id start to be 1 not 0\n        atArtistId.increment();\n    }\n\n    /// Creates a new artist contract as a factory with a deterministic address\n    /// Important: None of these fields (except the Url fields with the same hash) can be changed after calling\n    /// @param _name Name of the artist\n    function createArtist(\n        bytes calldata signature,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public returns (address) {\n        require((getSigner(signature) == admin), 'invalid authorization signature');\n\n        BeaconProxy proxy = new BeaconProxy(\n            beaconAddress,\n            abi.encodeWithSelector(\n                Artist(address(0)).initialize.selector,\n                msg.sender,\n                atArtistId.current(),\n                _name,\n                _symbol,\n                _baseURI\n            )\n        );\n\n        // add to registry\n        artistContracts.push(address(proxy));\n\n        emit CreatedArtist(atArtistId.current(), _name, _symbol, address(proxy));\n\n        atArtistId.increment();\n\n        return address(proxy);\n    }\n\n    /// Get signer address of signature\n    function getSigner(bytes calldata signature) public view returns (address) {\n        require(admin != address(0), 'whitelist not enabled');\n        // Verify EIP-712 signature by recreating the data structure\n        // that we signed on the client side, and then using that to recover\n        // the address that signed the signature for this data.\n        bytes32 digest = keccak256(\n            abi.encodePacked('\\x19\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, msg.sender)))\n        );\n        // Use the recover method to see what address was used to create\n        // the signature on this data.\n        // Note that if the digest doesn't exactly match what was signed we'll\n        // get a random recovered address.\n        address recoveredAddress = digest.recover(signature);\n        return recoveredAddress;\n    }\n\n    /// Sets the admin for authorizing artist deployment\n    /// @param _newAdmin address of new admin\n    function setAdmin(address _newAdmin) external {\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\n        admin = _newAdmin;\n    }\n\n    function _authorizeUpgrade(address) internal override onlyOwner {}\n\n    function markOfTheBeast() public pure returns (uint256) {\n        return 666;\n    }\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../ERC1967/ERC1967UpgradeUpgradeable.sol\";\nimport \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n *\n * _Available since v4.1._\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\n    function __UUPSUpgradeable_init() internal onlyInitializing {\n    }\n\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n    }\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\n    address private immutable __self = address(this);\n\n    /**\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n     * fail.\n     */\n    modifier onlyProxy() {\n        require(address(this) != __self, \"Function must be called through delegatecall\");\n        require(_getImplementation() == __self, \"Function must be called through active proxy\");\n        _;\n    }\n\n    /**\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n     * callable on the implementing contract but not through proxies.\n     */\n    modifier notDelegated() {\n        require(address(this) == __self, \"UUPSUpgradeable: must not be called through delegatecall\");\n        _;\n    }\n\n    /**\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n     */\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\n        return _IMPLEMENTATION_SLOT;\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\n     *\n     * Calls {_authorizeUpgrade}.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\n        _authorizeUpgrade(newImplementation);\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n     * encoded in `data`.\n     *\n     * Calls {_authorizeUpgrade}.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\n        _authorizeUpgrade(newImplementation);\n        _upgradeToAndCallUUPS(newImplementation, data, true);\n    }\n\n    /**\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n     * {upgradeTo} and {upgradeToAndCall}.\n     *\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n     *\n     * ```solidity\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\n     * ```\n     */\n    function _authorizeUpgrade(address newImplementation) internal virtual;\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../StringsUpgradeable.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSAUpgradeable {\n    enum RecoverError {\n        NoError,\n        InvalidSignature,\n        InvalidSignatureLength,\n        InvalidSignatureS,\n        InvalidSignatureV\n    }\n\n    function _throwError(RecoverError error) private pure {\n        if (error == RecoverError.NoError) {\n            return; // no error: do nothing\n        } else if (error == RecoverError.InvalidSignature) {\n            revert(\"ECDSA: invalid signature\");\n        } else if (error == RecoverError.InvalidSignatureLength) {\n            revert(\"ECDSA: invalid signature length\");\n        } else if (error == RecoverError.InvalidSignatureS) {\n            revert(\"ECDSA: invalid signature 's' value\");\n        } else if (error == RecoverError.InvalidSignatureV) {\n            revert(\"ECDSA: invalid signature 'v' value\");\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature` or error string. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {toEthSignedMessageHash} on it.\n     *\n     * Documentation for signature generation:\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n        // Check the signature length\n        // - case 65: r,s,v signature (standard)\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\n        if (signature.length == 65) {\n            bytes32 r;\n            bytes32 s;\n            uint8 v;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            /// @solidity memory-safe-assembly\n            assembly {\n                r := mload(add(signature, 0x20))\n                s := mload(add(signature, 0x40))\n                v := byte(0, mload(add(signature, 0x60)))\n            }\n            return tryRecover(hash, v, r, s);\n        } else if (signature.length == 64) {\n            bytes32 r;\n            bytes32 vs;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            /// @solidity memory-safe-assembly\n            assembly {\n                r := mload(add(signature, 0x20))\n                vs := mload(add(signature, 0x40))\n            }\n            return tryRecover(hash, r, vs);\n        } else {\n            return (address(0), RecoverError.InvalidSignatureLength);\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n     *\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address, RecoverError) {\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\n        return tryRecover(hash, v, r, s);\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n     *\n     * _Available since v4.2._\n     */\n    function recover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address, RecoverError) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n            return (address(0), RecoverError.InvalidSignatureS);\n        }\n        if (v != 27 && v != 28) {\n            return (address(0), RecoverError.InvalidSignatureV);\n        }\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        if (signer == address(0)) {\n            return (address(0), RecoverError.InvalidSignature);\n        }\n\n        return (signer, RecoverError.NoError);\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n     * produces hash corresponding to the one signed with the\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n     * JSON-RPC method as part of EIP-191.\n     *\n     * See {recover}.\n     */\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n        // 32 is the length in bytes of hash,\n        // enforced by the type signature above\n        return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\n     * produces hash corresponding to the one signed with the\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n     * JSON-RPC method as part of EIP-191.\n     *\n     * See {recover}.\n     */\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", StringsUpgradeable.toString(s.length), s));\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Typed Data, created from a\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\n     * to the one signed with the\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n     * JSON-RPC method as part of EIP-712.\n     *\n     * See {recover}.\n     */\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n    }\n}\n"
      },
      "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IBeacon.sol\";\nimport \"../Proxy.sol\";\nimport \"../ERC1967/ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\n *\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n * conflict with the storage layout of the implementation behind the proxy.\n *\n * _Available since v3.4._\n */\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the proxy with `beacon`.\n     *\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\n     * constructor.\n     *\n     * Requirements:\n     *\n     * - `beacon` must be a contract with the interface {IBeacon}.\n     */\n    constructor(address beacon, bytes memory data) payable {\n        _upgradeBeaconToAndCall(beacon, data, false);\n    }\n\n    /**\n     * @dev Returns the current beacon address.\n     */\n    function _beacon() internal view virtual returns (address) {\n        return _getBeacon();\n    }\n\n    /**\n     * @dev Returns the current implementation address of the associated beacon.\n     */\n    function _implementation() internal view virtual override returns (address) {\n        return IBeacon(_getBeacon()).implementation();\n    }\n\n    /**\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n     *\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n     *\n     * Requirements:\n     *\n     * - `beacon` must be a contract.\n     * - The implementation returned by `beacon` must be a contract.\n     */\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\n        _upgradeBeaconToAndCall(beacon, data, false);\n    }\n}\n"
      },
      "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IBeacon.sol\";\nimport \"../../access/Ownable.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */\ncontract UpgradeableBeacon is IBeacon, Ownable {\n    address private _implementation;\n\n    /**\n     * @dev Emitted when the implementation returned by the beacon is changed.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n     * beacon.\n     */\n    constructor(address implementation_) {\n        _setImplementation(implementation_);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function implementation() public view virtual override returns (address) {\n        return _implementation;\n    }\n\n    /**\n     * @dev Upgrades the beacon to a new implementation.\n     *\n     * Emits an {Upgraded} event.\n     *\n     * Requirements:\n     *\n     * - msg.sender must be the owner of the contract.\n     * - `newImplementation` must be a contract.\n     */\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Sets the implementation contract address for this beacon\n     *\n     * Requirements:\n     *\n     * - `newImplementation` must be a contract.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"UpgradeableBeacon: implementation is not a contract\");\n        _implementation = newImplementation;\n    }\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822ProxiableUpgradeable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeaconUpgradeable.sol\";\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/StorageSlotUpgradeable.sol\";\nimport \"../utils/Initializable.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\n    function __ERC1967Upgrade_init() internal onlyInitializing {\n    }\n\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\n    }\n    // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _getImplementation() internal view returns (address) {\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(AddressUpgradeable.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Perform implementation upgrade\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeTo(address newImplementation) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Perform implementation upgrade with additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCall(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _upgradeTo(newImplementation);\n        if (data.length > 0 || forceCall) {\n            _functionDelegateCall(newImplementation, data);\n        }\n    }\n\n    /**\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\n            _setImplementation(newImplementation);\n        } else {\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n                require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n            } catch {\n                revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n            }\n            _upgradeToAndCall(newImplementation, data, forceCall);\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _getAdmin() internal view returns (address) {\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     */\n    function _changeAdmin(address newAdmin) internal {\n        emit AdminChanged(_getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n     */\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Emitted when the beacon is upgraded.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function _getBeacon() internal view returns (address) {\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        require(AddressUpgradeable.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n        require(\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\n            \"ERC1967: beacon implementation is not a contract\"\n        );\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n    }\n\n    /**\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n     *\n     * Emits a {BeaconUpgraded} event.\n     */\n    function _upgradeBeaconToAndCall(\n        address newBeacon,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n        if (data.length > 0 || forceCall) {\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\n        }\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\n        require(AddressUpgradeable.isContract(target), \"Address: delegate call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return AddressUpgradeable.verifyCallResult(success, returndata, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeaconUpgradeable {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {BeaconProxy} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"
      },
      "@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlotUpgradeable {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {BeaconProxy} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"
      },
      "@openzeppelin/contracts/proxy/Proxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n    /**\n     * @dev Delegates the current call to `implementation`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _delegate(address implementation) internal virtual {\n        assembly {\n            // Copy msg.data. We take full control of memory in this inline assembly\n            // block because it will not return to Solidity code. We overwrite the\n            // Solidity scratch pad at memory position 0.\n            calldatacopy(0, 0, calldatasize())\n\n            // Call the implementation.\n            // out and outsize are 0 because we don't know the size yet.\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n            // Copy the returned data.\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, returndatasize())\n            }\n        }\n    }\n\n    /**\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n     * and {_fallback} should delegate.\n     */\n    function _implementation() internal view virtual returns (address);\n\n    /**\n     * @dev Delegates the current call to the address returned by `_implementation()`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _fallback() internal virtual {\n        _beforeFallback();\n        _delegate(_implementation());\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n     * function in the contract matches the call data.\n     */\n    fallback() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n     * is empty.\n     */\n    receive() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n     * call, or as part of the Solidity `fallback` or `receive` functions.\n     *\n     * If overridden should call `super._beforeFallback()`.\n     */\n    function _beforeFallback() internal virtual {}\n}\n"
      },
      "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n    // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Perform implementation upgrade\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeTo(address newImplementation) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Perform implementation upgrade with additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCall(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _upgradeTo(newImplementation);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(newImplementation, data);\n        }\n    }\n\n    /**\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n            _setImplementation(newImplementation);\n        } else {\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n                require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n            } catch {\n                revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n            }\n            _upgradeToAndCall(newImplementation, data, forceCall);\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _getAdmin() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     */\n    function _changeAdmin(address newAdmin) internal {\n        emit AdminChanged(_getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n     */\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Emitted when the beacon is upgraded.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function _getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n        require(\n            Address.isContract(IBeacon(newBeacon).implementation()),\n            \"ERC1967: beacon implementation is not a contract\"\n        );\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n    }\n\n    /**\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n     *\n     * Emits a {BeaconUpgraded} event.\n     */\n    function _upgradeBeaconToAndCall(\n        address newBeacon,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n                /// @solidity memory-safe-assembly\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/StorageSlot.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/access/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"
      },
      "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n     *\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n     * function call, and allows initializing the storage of the proxy like a Solidity constructor.\n     */\n    constructor(address _logic, bytes memory _data) payable {\n        _upgradeToAndCall(_logic, _data, false);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _implementation() internal view virtual override returns (address impl) {\n        return ERC1967Upgrade._getImplementation();\n    }\n}\n"
      },
      "contracts/ArtistCreatorV3.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.14;\n\n/*\n               ^###############################################&5               \n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \n\n*/\n\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\n\n/// @title The Artist Creator factory contract\n/// @author Sound.xyz - @gigamesh & @vigneshka\ncontract ArtistCreatorV3 is Initializable, UUPSUpgradeable, OwnableUpgradeable {\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSAUpgradeable for bytes32;\n\n    // ============ Storage ============\n\n    // Typehash of the signed message provided to createArtist\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\n    // ID for each Artist proxy // DEPRECATED in ArtistCreatorV2\n    CountersUpgradeable.Counter private atArtistId;\n    // Address used for signature verification, changeable by owner\n    address public admin;\n    // Domain separator is used to prevent replay attacks using signatures from different networks\n    bytes32 public DOMAIN_SEPARATOR;\n    // The address of UpgradeableBeacon, which was deployed in the initialize function of ArtistCreator.sol\n    address public beaconAddress;\n    // Array of the Artist proxies // DEPRECATED in ArtistCreatorV2\n    address[] public artistContracts;\n\n    // ============ Events ============\n\n    /// Emitted when an Artist is created\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\n\n    // ============ Functions ============\n\n    /// @notice Creates a new artist contract as a factory with a deterministic address\n    /// @param _name Name of the artist\n    function createArtist(\n        bytes calldata signature,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public returns (address) {\n        require((getSigner(signature) == admin), 'invalid authorization signature');\n\n        bytes32 salt = bytes32(uint256(uint160(_msgSender())));\n\n        // salted contract creation using create2\n        BeaconProxy proxy = new BeaconProxy{salt: salt}(\n            beaconAddress,\n            // 0x5f1e6f6d is the initialize function selector on ArtistV6 (hash of \"function initialize(address, string, string, string)\")\n            abi.encodeWithSelector(0x5f1e6f6d, _msgSender(), _name, _symbol, _baseURI)\n        );\n\n        // the first parameter, artistId, is deprecated\n        emit CreatedArtist(0, _name, _symbol, address(proxy));\n\n        return address(proxy);\n    }\n\n    /// @notice Gets signer address of signature\n    /// @param signature Signature of the message\n    function getSigner(bytes calldata signature) public view returns (address) {\n        require(admin != address(0), 'whitelist not enabled');\n        // Verify EIP-712 signature by recreating the data structure\n        // that we signed on the client side, and then using that to recover\n        // the address that signed the signature for this data.\n        bytes32 digest = keccak256(\n            abi.encodePacked('\\x19\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, _msgSender())))\n        );\n        // Use the recover method to see what address was used to create\n        // the signature on this data.\n        // Note that if the digest doesn't exactly match what was signed we'll\n        // get a random recovered address.\n        address recoveredAddress = digest.recover(signature);\n        return recoveredAddress;\n    }\n\n    /// @notice Sets the admin for authorizing artist deployment\n    /// @param _newAdmin address of new admin\n    function setAdmin(address _newAdmin) external {\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\n        admin = _newAdmin;\n    }\n\n    /// @notice Authorizes upgrades\n    /// @dev DO NOT REMOVE!\n    function _authorizeUpgrade(address) internal override onlyOwner {}\n}\n"
      },
      "contracts/ArtistCreatorV2.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.14;\n\n/*\n               ^###############################################&5               \n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \n\n*/\n\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\n\n/// @title The Artist Creator factory contract\n/// @author Sound.xyz - @gigamesh & @vigneshka\ncontract ArtistCreatorV2 is Initializable, UUPSUpgradeable, OwnableUpgradeable {\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSAUpgradeable for bytes32;\n\n    // ============ Storage ============\n\n    // Typehash of the signed message provided to createArtist\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\n    // ID for each Artist proxy // DEPRECATED in ArtistCreatorV2\n    CountersUpgradeable.Counter private atArtistId;\n    // Address used for signature verification, changeable by owner\n    address public admin;\n    // Domain separator is used to prevent replay attacks using signatures from different networks\n    bytes32 public DOMAIN_SEPARATOR;\n    // The address of UpgradeableBeacon, which was deployed in the initialize function of ArtistCreator.sol\n    address public beaconAddress;\n    // Array of the Artist proxies // DEPRECATED in ArtistCreatorV2\n    address[] public artistContracts;\n\n    // ============ Events ============\n\n    /// Emitted when an Artist is created\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\n\n    // ============ Functions ============\n\n    /// @notice Creates a new artist contract as a factory with a deterministic address\n    /// @param _name Name of the artist\n    function createArtist(\n        bytes calldata signature,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public returns (address) {\n        require((getSigner(signature) == admin), 'invalid authorization signature');\n\n        bytes32 salt = bytes32(uint256(uint160(_msgSender())));\n\n        // salted contract creation using create2\n        BeaconProxy proxy = new BeaconProxy{salt: salt}(\n            beaconAddress,\n            // 0x5f1e6f6d is the initialize function selector on ArtistV5 (hash of \"function initialize(address, string, string, string)\")\n            abi.encodeWithSelector(0x5f1e6f6d, _msgSender(), _name, _symbol, _baseURI)\n        );\n\n        // the first parameter, artistId, is deprecated\n        emit CreatedArtist(0, _name, _symbol, address(proxy));\n\n        return address(proxy);\n    }\n\n    /// @notice Gets signer address of signature\n    /// @param signature Signature of the message\n    function getSigner(bytes calldata signature) public view returns (address) {\n        require(admin != address(0), 'whitelist not enabled');\n        // Verify EIP-712 signature by recreating the data structure\n        // that we signed on the client side, and then using that to recover\n        // the address that signed the signature for this data.\n        bytes32 digest = keccak256(\n            abi.encodePacked('\\x19\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, _msgSender())))\n        );\n        // Use the recover method to see what address was used to create\n        // the signature on this data.\n        // Note that if the digest doesn't exactly match what was signed we'll\n        // get a random recovered address.\n        address recoveredAddress = digest.recover(signature);\n        return recoveredAddress;\n    }\n\n    /// @notice Sets the admin for authorizing artist deployment\n    /// @param _newAdmin address of new admin\n    function setAdmin(address _newAdmin) external {\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\n        admin = _newAdmin;\n    }\n\n    /// @notice Authorizes upgrades\n    /// @dev DO NOT REMOVE!\n    function _authorizeUpgrade(address) internal override onlyOwner {}\n}\n"
      },
      "contracts/test-contracts/TEST_ArtistV6.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.14;\n\n/*\n               ^###############################################&5               \n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \n\n*/\n\nimport '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\nimport '@openzeppelin/contracts/utils/Strings.sol';\nimport '../auxillary/AccessManager.sol';\n\n/// @title Artist\n/// @author SoundXYZ - @gigamesh & @vigneshka\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\ncontract TEST_ArtistV6 is ERC721Upgradeable, IERC2981Upgradeable, AccessManager {\n    // ================================\n    // STORAGE\n    // ================================\n\n    // The permissioned typehash (used for checking signature validity)\n    bytes32 public constant PERMISSIONED_SALE_TYPEHASH =\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\n    // Domain separator - used to prevent replay attacks using signatures from different networks\n    bytes32 public immutable DOMAIN_SEPARATOR;\n    // The default baseURI for the contract\n    string internal baseURI;\n\n    CountersUpgradeable.Counter public atTokenId; // DEPRECATED IN V3\n    CountersUpgradeable.Counter public atEditionId;\n\n    // Mapping of edition id to descriptive data.\n    mapping(uint256 => Edition) public editions;\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\n    mapping(uint256 => uint256) public _tokenToEdition;\n    // The amount of funds that have been deposited for a given edition.\n    mapping(uint256 => uint256) public depositedForEdition;\n    // The amount of funds that have already been withdrawn for a given edition.\n    mapping(uint256 => uint256) public withdrawnForEdition;\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\n\n    uint256 public someNumber;\n\n    // ================================\n    // TYPES\n    // ================================\n\n    struct Edition {\n        // The account that will receive sales revenue.\n        address payable fundingRecipient;\n        // The price at which each token will be sold, in ETH.\n        uint256 price;\n        // The number of tokens sold so far.\n        uint32 numSold;\n        // The maximum number of tokens that can be sold.\n        uint32 quantity;\n        // Royalty amount in bps\n        uint32 royaltyBPS;\n        // start timestamp of auction (in seconds since unix epoch)\n        uint32 startTime;\n        // end timestamp of auction (in seconds since unix epoch)\n        uint32 endTime;\n        // quantity of permissioned tokens\n        uint32 permissionedQuantity;\n        // whitelist signer address\n        address signerAddress;\n        // base uri for the edition\n        string baseURI;\n    }\n\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSA for bytes32;\n\n    enum TimeType {\n        START,\n        END\n    }\n\n    // ================================\n    // EVENTS\n    // ================================\n\n    event EditionCreated(\n        uint256 indexed editionId,\n        address fundingRecipient,\n        uint256 price,\n        uint32 quantity,\n        uint32 royaltyBPS,\n        uint32 startTime,\n        uint32 endTime,\n        uint32 permissionedQuantity,\n        address signerAddress\n    );\n\n    event EditionPurchased(\n        uint256 indexed editionId,\n        uint256 indexed tokenId,\n        // `numSold` at time of purchase represents the \"serial number\" of the NFT.\n        uint32 numSold,\n        // The account that paid for and received the NFT.\n        address indexed buyer,\n        uint256 ticketNumber\n    );\n\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\n\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\n\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\n\n    event BaseURISet(uint256 editionId, string baseURI);\n\n    // ================================\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\n    // ================================\n\n    /// @notice Contract constructor\n    constructor() {\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\n    }\n\n    /// @notice Initializes the contract\n    /// @param _owner Owner of edition\n    /// @param _name Name of artist\n    /// @param _symbol Symbol for the artist\n    /// @param _baseURI Default base URI for all editions\n    function initialize(\n        address _owner,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public initializer {\n        __ERC721_init(_name, _symbol);\n        __AccessManager_init();\n\n        // Set ownership to original sender of contract call\n        transferOwnership(_owner);\n\n        // baseURI override only for testnets\n        if (block.chainid != 1) {\n            baseURI = _baseURI;\n        }\n\n        // Set edition id start to be 1 not 0\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new edition.\n    /// @param _fundingRecipient The account that will receive sales revenue.\n    /// @param _price The price at which each token will be sold, in ETH.\n    /// @param _quantity The maximum number of tokens that can be sold.\n    /// @param _royaltyBPS The royalty amount in bps.\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n    /// @param _signerAddress signer address.\n    /// @param _editionId The expected edition ID\n    /// @param _baseURI The base URI for the edition\n    function createEdition(\n        address payable _fundingRecipient,\n        uint256 _price,\n        uint32 _quantity,\n        uint32 _royaltyBPS,\n        uint32 _startTime,\n        uint32 _endTime,\n        uint32 _permissionedQuantity,\n        address _signerAddress,\n        uint256 _editionId,\n        string memory _baseURI\n    ) external checkPermission(ADMIN_ROLE) {\n        require(_quantity > 0, 'Must set quantity');\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\n        require(_endTime > _startTime, 'End time must be greater than start time');\n        require(_editionId == atEditionId.current(), 'Wrong edition ID');\n\n        if (_permissionedQuantity > 0) {\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\n        }\n\n        editions[atEditionId.current()] = Edition({\n            fundingRecipient: _fundingRecipient,\n            price: _price,\n            numSold: 0,\n            quantity: _quantity,\n            royaltyBPS: _royaltyBPS,\n            startTime: _startTime,\n            endTime: _endTime,\n            permissionedQuantity: _permissionedQuantity,\n            signerAddress: _signerAddress,\n            baseURI: _baseURI\n        });\n\n        emit EditionCreated(\n            atEditionId.current(),\n            _fundingRecipient,\n            _price,\n            _quantity,\n            _royaltyBPS,\n            _startTime,\n            _endTime,\n            _permissionedQuantity,\n            _signerAddress\n        );\n\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\n    /// @param _editionId The id of the edition to purchase\n    /// @param _signature A signed message for authorizing permissioned purchases\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\n    function buyEdition(\n        uint256 _editionId,\n        bytes calldata _signature,\n        uint256 _ticketNumber\n    ) external payable {\n        // Caching variables locally to reduce reads\n        uint256 price = editions[_editionId].price;\n        uint32 quantity = editions[_editionId].quantity;\n        uint32 numSold = editions[_editionId].numSold;\n        uint32 newNumSold = numSold + 1;\n        uint32 startTime = editions[_editionId].startTime;\n        uint32 endTime = editions[_editionId].endTime;\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\n\n        // Check that the edition exists. Note: this is redundant\n        // with the next check, but it is useful for clearer error messaging.\n        require(quantity > 0, 'Edition does not exist');\n        // Check that the sender is paying the correct amount.\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\n        // Don't allow purchases after the end time\n        require(endTime > block.timestamp, 'Auction has ended');\n\n        // If the public auction hasn't started...\n        if (startTime > block.timestamp) {\n            // Check that permissioned tokens are still available\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\n\n            // Check that the signature is valid.\n            require(\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\n                'Invalid signer'\n            );\n        } else {\n            // Check that there are still tokens available to purchase.\n            // Only need to check this for the public sale (after the start time)\n            // so we can accomodate open editions\n            require(numSold < quantity, 'This edition is already sold out.');\n        }\n\n        // Create the token id by packing editionId in the top bits\n        uint256 tokenId;\n        unchecked {\n            tokenId = (_editionId << 128) | newNumSold;\n            // Increment the number of tokens sold for this edition.\n            editions[_editionId].numSold = newNumSold;\n        }\n\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\n        if (editions[_editionId].fundingRecipient == owner()) {\n            // Update the deposited total for the edition\n            depositedForEdition[_editionId] += msg.value;\n        } else {\n            // Send funds to the funding recipient.\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\n        }\n\n        // Mint a new token for the sender, using the `tokenId`.\n        _mint(msg.sender, tokenId);\n\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\n    }\n\n    /// @notice Withdraws from the Artist to the fundingRecipient for an edition\n    /// @param _editionId The id of the edition to withdraw from\n    function withdrawFunds(uint256 _editionId) external {\n        // Compute the amount available for withdrawing from this edition.\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\n\n        // Set the amount withdrawn to the amount deposited.\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\n\n        // Send the amount that was remaining for the edition, to the funding recipient.\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\n    }\n\n    /// @notice Sets the start time for an edition\n    /// @param _editionId The id of the edition to set the start time for\n    /// @param _startTime The start time to set (in seconds since unix epoch)\n    function setStartTime(uint256 _editionId, uint32 _startTime) external checkPermission(ADMIN_ROLE) {\n        editions[_editionId].startTime = _startTime;\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\n    }\n\n    /// @notice Sets the end time for an edition\n    /// @param _editionId The id of the edition to set the end time for\n    /// @param _endTime The end time to set (in seconds since unix epoch)\n    function setEndTime(uint256 _editionId, uint32 _endTime) external checkPermission(ADMIN_ROLE) {\n        editions[_editionId].endTime = _endTime;\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\n    }\n\n    /// @notice Sets the signature address of an edition\n    /// @param _editionId The edition id to set the signature address for\n    /// @param _newSignerAddress The address that will be used to sign purchases\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external checkPermission(ADMIN_ROLE) {\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\n\n        editions[_editionId].signerAddress = _newSignerAddress;\n        emit SignerAddressSet(_editionId, _newSignerAddress);\n    }\n\n    /// @notice Sets the permissioned quantity for an edition\n    /// @param _editionId The edition id to set the permissioned quantity for\n    /// @param _permissionedQuantity The new permissiond quantity\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity)\n        external\n        checkPermission(ADMIN_ROLE)\n    {\n        // Prevent setting to permissioned quantity when there is no signer address\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\n\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\n    }\n\n    /// @notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\n    /// @param _newOwner The new owner of the contract\n    function setOwnerOverride(address _newOwner) external {\n        require(_msgSender() == soundRecoveryAddress() || _msgSender() == owner(), 'unauthorized');\n\n        super._transferOwnership(_newOwner);\n    }\n\n    /// @notice Sets the base URI for an edition\n    /// @param _editionId The target edition's id\n    /// @param _baseURI The new base URI\n    function setEditionBaseURI(uint256 _editionId, string calldata _baseURI) external checkPermission(ADMIN_ROLE) {\n        require(\n            editions[_editionId].quantity > 0 || editions[_editionId].permissionedQuantity > 0,\n            'Nonexistent edition'\n        );\n\n        editions[_editionId].baseURI = _baseURI;\n\n        emit BaseURISet(_editionId, _baseURI);\n    }\n\n    // ================================\n    // VIEW FUNCTIONS\n    // ================================\n\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\n    /// @dev Concatenate the baseURI and tokenId, to create URI.\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\n\n        uint256 editionId = tokenToEdition(_tokenId);\n\n        string memory editionBaseURI = editions[editionId].baseURI;\n\n        // If the edition has a baseURI, it means this edition is on permastorage\n        // Using 3 as the length in case it gets accidentally set to empty space\n        if (bytes(editionBaseURI).length > 3) {\n            return string.concat(editionBaseURI, Strings.toString(_tokenId), '/metadata.json');\n        }\n\n        return string.concat(_contractBaseURI(), Strings.toString(_tokenId));\n    }\n\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\n    function contractURI() public view returns (string memory) {\n        return string.concat(_contractBaseURI(), 'storefront');\n    }\n\n    /// @notice Get royalty information for token\n    /// @param _tokenId token id\n    /// @param _salePrice Sale price for the token\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\n        external\n        view\n        override\n        returns (address fundingRecipient, uint256 royaltyAmount)\n    {\n        uint256 editionId = tokenToEdition(_tokenId);\n        Edition memory edition = editions[editionId];\n\n        if (edition.fundingRecipient == address(0x0)) {\n            return (edition.fundingRecipient, 0);\n        }\n\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\n\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\n    }\n\n    /// @notice The total number of tokens created by this contract\n    function totalSupply() external view returns (uint256) {\n        uint256 total = 0;\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\n            total += editions[id].numSold;\n        }\n        return total;\n    }\n\n    /// @notice Informs other contracts which interfaces this contract supports\n    /// @param _interfaceId The interface id to check\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\n    function supportsInterface(bytes4 _interfaceId)\n        public\n        view\n        override(ERC721Upgradeable, IERC165Upgradeable)\n        returns (bool)\n    {\n        return\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\n    }\n\n    /// @notice returns the number of editions for this artist\n    function editionCount() external view returns (uint256) {\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\n    }\n\n    /// @notice Returns the edition id for a given token id\n    /// @param _tokenId token id\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\n        // Check the top bits to see if the edition id is there\n        uint256 editionId = _tokenId >> 128;\n\n        // If edition ID is 0, then this edition was created before the V3 upgrade\n        if (editionId == 0) {\n            // get edition ID from storage\n            return _tokenToEdition[_tokenId];\n        }\n\n        return editionId;\n    }\n\n    /// @notice Returns a list of owner addresses for a given list of token ids\n    /// @param _tokenIds List of token ids\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\n        address[] memory owners = new address[](_tokenIds.length);\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\n            owners[i] = ownerOf(_tokenIds[i]);\n        }\n        return owners;\n    }\n\n    /// @notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\n    /// @param _editionId Edition id\n    /// @param _ticketNumbers List of ticket numbers (indexes)\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\n        external\n        view\n        returns (bool[] memory)\n    {\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\n\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\n            claimed[i] = storedBit == 1;\n        }\n\n        return claimed;\n    }\n\n    /// @notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract\n    function soundRecoveryAddress() public view virtual returns (address) {\n        if (block.chainid == 1) {\n            return 0x858a92511485715Cfb754f397a7894b7724c7Abd;\n        } else if (block.chainid == 4) {\n            return 0xee35E946Dd73EF78d352454c3F915e2cA0a09d87;\n        } else {\n            revert('unsupported chain');\n        }\n    }\n\n    // ================================\n    // PRIVATE FUNCTIONS\n    // ================================\n\n    /// @notice Sends funds to an address\n    /// @param _recipient The address to send funds to\n    /// @param _amount The amount of funds to send\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\n\n        (bool success, ) = _recipient.call{value: _amount}('');\n        require(success, 'Unable to send value: recipient may have reverted');\n    }\n\n    /// @notice Gets signer address to validate permissioned purchase\n    /// @param _signature signed message\n    /// @param _editionId edition id\n    /// @param _ticketNumber ticket number to check\n    /// @return address of signer\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\n    function getSigner(\n        bytes calldata _signature,\n        uint256 _editionId,\n        uint256 _ticketNumber\n    ) private returns (address) {\n        // Check that the ticket number is within the reserved range for the edition\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\n\n        // gets the stored bit\n        (\n            uint256 storedBit,\n            uint256 localGroup,\n            uint256 localGroupOffset,\n            uint256 ticketNumbersIdx\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\n\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\n\n        // Flip the bit to 1 to indicate that the ticket has been claimed\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\n\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR,\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\n            )\n        );\n        return digest.recover(_signature);\n    }\n\n    /// @notice Gets the bit variables associated with a ticket number\n    /// @param _editionId edition id\n    /// @param _ticketNumber ticket number\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\n        private\n        view\n        returns (\n            uint256,\n            uint256,\n            uint256,\n            uint256\n        )\n    {\n        uint256 localGroup; // the bit array for this ticket number\n        uint256 ticketNumbersIdx; // the index of the the local group\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\n        unchecked {\n            ticketNumbersIdx = _ticketNumber / 256;\n            localGroupOffset = _ticketNumber % 256;\n        }\n\n        // cache the local group for efficiency\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\n\n        // gets the stored bit\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\n\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\n    }\n\n    function _contractBaseURI() private view returns (string memory) {\n        string memory contractAddress = Strings.toHexString(uint256(uint160(address(this))), 20);\n        if (block.chainid == 1) {\n            return string.concat('https://metadata.sound.xyz/v1/', contractAddress, '/');\n        } else {\n            return string.concat(baseURI, contractAddress, '/');\n        }\n    }\n\n    function setSomeNumber(uint256 _someNumber) external {\n        someNumber = _someNumber;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Strings.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n    enum RecoverError {\n        NoError,\n        InvalidSignature,\n        InvalidSignatureLength,\n        InvalidSignatureS,\n        InvalidSignatureV\n    }\n\n    function _throwError(RecoverError error) private pure {\n        if (error == RecoverError.NoError) {\n            return; // no error: do nothing\n        } else if (error == RecoverError.InvalidSignature) {\n            revert(\"ECDSA: invalid signature\");\n        } else if (error == RecoverError.InvalidSignatureLength) {\n            revert(\"ECDSA: invalid signature length\");\n        } else if (error == RecoverError.InvalidSignatureS) {\n            revert(\"ECDSA: invalid signature 's' value\");\n        } else if (error == RecoverError.InvalidSignatureV) {\n            revert(\"ECDSA: invalid signature 'v' value\");\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature` or error string. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {toEthSignedMessageHash} on it.\n     *\n     * Documentation for signature generation:\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n        // Check the signature length\n        // - case 65: r,s,v signature (standard)\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\n        if (signature.length == 65) {\n            bytes32 r;\n            bytes32 s;\n            uint8 v;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            /// @solidity memory-safe-assembly\n            assembly {\n                r := mload(add(signature, 0x20))\n                s := mload(add(signature, 0x40))\n                v := byte(0, mload(add(signature, 0x60)))\n            }\n            return tryRecover(hash, v, r, s);\n        } else if (signature.length == 64) {\n            bytes32 r;\n            bytes32 vs;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            /// @solidity memory-safe-assembly\n            assembly {\n                r := mload(add(signature, 0x20))\n                vs := mload(add(signature, 0x40))\n            }\n            return tryRecover(hash, r, vs);\n        } else {\n            return (address(0), RecoverError.InvalidSignatureLength);\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n     *\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address, RecoverError) {\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\n        return tryRecover(hash, v, r, s);\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n     *\n     * _Available since v4.2._\n     */\n    function recover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address, RecoverError) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n            return (address(0), RecoverError.InvalidSignatureS);\n        }\n        if (v != 27 && v != 28) {\n            return (address(0), RecoverError.InvalidSignatureV);\n        }\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        if (signer == address(0)) {\n            return (address(0), RecoverError.InvalidSignature);\n        }\n\n        return (signer, RecoverError.NoError);\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n     * produces hash corresponding to the one signed with the\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n     * JSON-RPC method as part of EIP-191.\n     *\n     * See {recover}.\n     */\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n        // 32 is the length in bytes of hash,\n        // enforced by the type signature above\n        return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\n     * produces hash corresponding to the one signed with the\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n     * JSON-RPC method as part of EIP-191.\n     *\n     * See {recover}.\n     */\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", Strings.toString(s.length), s));\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Typed Data, created from a\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\n     * to the one signed with the\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n     * JSON-RPC method as part of EIP-712.\n     *\n     * See {recover}.\n     */\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n    }\n}\n"
      },
      "contracts/auxillary/AccessManager.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.14;\n\nimport '@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\n\n/// @title AccessManager\n/// @author OpenZeppelin & Sound.xyz (@gigma)\n/// @notice Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.\n/// @dev Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)\ncontract AccessManager is Initializable, ContextUpgradeable {\n    // The admin role identifier\n    bytes32 public constant ADMIN_ROLE = keccak256('ADMIN');\n\n    address private _owner;\n\n    // Track registered admins\n    mapping(bytes32 => mapping(address => bool)) private _roles;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    // =====================\n    // Ownership functions\n    // =====================\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    function __AccessManager_init() internal onlyInitializing {\n        __Context_init_unchained();\n        __AccessManager_init_unchained();\n    }\n\n    function __AccessManager_init_unchained() internal onlyInitializing {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(owner() == _msgSender(), 'Ownable: caller is not the owner');\n        _;\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public onlyOwner {\n        require(newOwner != address(0), 'Ownable: new owner is the zero address');\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n\n    // =====================\n    // Role functions\n    // =====================\n\n    /// @notice Register an account as an admin\n    /// @param role The role to grant to the given account\n    /// @param account The account to register\n    function grantRole(bytes32 role, address account) external onlyOwner {\n        if (!hasRole(role, account)) {\n            _roles[role][account] = true;\n            emit RoleGranted(role, account, _msgSender());\n        }\n    }\n\n    /// @notice Revoke a role from an account\n    /// @param role The role to revoke\n    /// @param account The account to revoke the role from\n    function revokeRole(bytes32 role, address account) external onlyOwner {\n        if (hasRole(role, account)) {\n            _roles[role][account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n        }\n    }\n\n    /// @notice Check if an account has a role\n    /// @param role The role to check\n    /// @param account The account to check\n    function hasRole(bytes32 role, address account) public view returns (bool) {\n        return _roles[role][account];\n    }\n\n    /// @notice Check if the given address is the owner or has the given role.\n    /// @param role The role to check for.\n    modifier checkPermission(bytes32 role) {\n        require(_msgSender() == owner() || hasRole(role, _msgSender()), 'unauthorized');\n        _;\n    }\n\n    uint256[48] private __gap;\n}\n"
      },
      "contracts/ArtistV6.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.14;\n\n/*\n               ^###############################################&5               \n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \n\n*/\n\nimport '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\nimport '@openzeppelin/contracts/utils/Strings.sol';\nimport './auxillary/AccessManager.sol';\n\n/// @title Artist\n/// @author SoundXYZ - @gigamesh & @vigneshka\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\ncontract ArtistV6 is ERC721Upgradeable, IERC2981Upgradeable, AccessManager {\n    // ================================\n    // TYPES\n    // ================================\n\n    struct Edition {\n        // The account that will receive sales revenue.\n        address payable fundingRecipient;\n        // The price at which each token will be sold, in ETH.\n        uint256 price;\n        // The number of tokens sold so far.\n        uint32 numSold;\n        // The maximum number of tokens that can be sold.\n        uint32 quantity;\n        // Royalty amount in bps\n        uint32 royaltyBPS;\n        // start timestamp of auction (in seconds since unix epoch)\n        uint32 startTime;\n        // end timestamp of auction (in seconds since unix epoch)\n        uint32 endTime;\n        // quantity of permissioned tokens\n        uint32 permissionedQuantity;\n        // whitelist signer address\n        address signerAddress;\n        // base uri for the edition\n        string baseURI;\n    }\n\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSA for bytes32;\n\n    enum TimeType {\n        START,\n        END\n    }\n\n    // ================================\n    // STORAGE\n    // ================================\n\n    // The permissioned typehash (used for checking signature validity)\n    bytes32 public constant PERMISSIONED_SALE_TYPEHASH =\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\n    // Domain separator - used to prevent replay attacks using signatures from different networks\n    bytes32 public immutable DOMAIN_SEPARATOR;\n    // The default baseURI for the contract\n    string internal baseURI;\n\n    CountersUpgradeable.Counter public atTokenId; // DEPRECATED IN V3\n    CountersUpgradeable.Counter public atEditionId;\n\n    // Mapping of edition id to descriptive data.\n    mapping(uint256 => Edition) public editions;\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\n    mapping(uint256 => uint256) public _tokenToEdition;\n    // The amount of funds that have been deposited for a given edition.\n    mapping(uint256 => uint256) public depositedForEdition;\n    // The amount of funds that have already been withdrawn for a given edition.\n    mapping(uint256 => uint256) public withdrawnForEdition;\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\n\n    // ================================\n    // EVENTS\n    // ================================\n\n    event EditionCreated(\n        uint256 indexed editionId,\n        address fundingRecipient,\n        uint256 price,\n        uint32 quantity,\n        uint32 royaltyBPS,\n        uint32 startTime,\n        uint32 endTime,\n        uint32 permissionedQuantity,\n        address signerAddress\n    );\n\n    event EditionPurchased(\n        uint256 indexed editionId,\n        uint256 indexed tokenId,\n        // `numSold` at time of purchase represents the \"serial number\" of the NFT.\n        uint32 numSold,\n        // The account that paid for and received the NFT.\n        address indexed buyer,\n        uint256 ticketNumber\n    );\n\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\n\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\n\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\n\n    event BaseURISet(uint256 editionId, string baseURI);\n\n    // ================================\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\n    // ================================\n\n    /// @notice Contract constructor\n    constructor() {\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\n    }\n\n    /// @notice Initializes the contract\n    /// @param _owner Owner of edition\n    /// @param _name Name of artist\n    /// @param _symbol Symbol for the artist\n    /// @param _baseURI Default base URI for all editions\n    function initialize(\n        address _owner,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public initializer {\n        __ERC721_init(_name, _symbol);\n        __AccessManager_init();\n\n        // Set ownership to original sender of contract call\n        transferOwnership(_owner);\n\n        // baseURI override only for testnets\n        if (block.chainid != 1) {\n            baseURI = _baseURI;\n        }\n\n        // Set edition id start to be 1 not 0\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new edition.\n    /// @param _fundingRecipient The account that will receive sales revenue.\n    /// @param _price The price at which each token will be sold, in ETH.\n    /// @param _quantity The maximum number of tokens that can be sold.\n    /// @param _royaltyBPS The royalty amount in bps.\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n    /// @param _signerAddress signer address.\n    /// @param _editionId The expected edition ID\n    /// @param _baseURI The base URI for the edition\n    function createEdition(\n        address payable _fundingRecipient,\n        uint256 _price,\n        uint32 _quantity,\n        uint32 _royaltyBPS,\n        uint32 _startTime,\n        uint32 _endTime,\n        uint32 _permissionedQuantity,\n        address _signerAddress,\n        uint256 _editionId,\n        string memory _baseURI\n    ) external checkPermission(ADMIN_ROLE) {\n        require(_quantity > 0, 'Must set quantity');\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\n        require(_endTime > _startTime, 'End time must be greater than start time');\n        require(_editionId == atEditionId.current(), 'Wrong edition ID');\n\n        if (_permissionedQuantity > 0) {\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\n        }\n\n        editions[atEditionId.current()] = Edition({\n            fundingRecipient: _fundingRecipient,\n            price: _price,\n            numSold: 0,\n            quantity: _quantity,\n            royaltyBPS: _royaltyBPS,\n            startTime: _startTime,\n            endTime: _endTime,\n            permissionedQuantity: _permissionedQuantity,\n            signerAddress: _signerAddress,\n            baseURI: _baseURI\n        });\n\n        emit EditionCreated(\n            atEditionId.current(),\n            _fundingRecipient,\n            _price,\n            _quantity,\n            _royaltyBPS,\n            _startTime,\n            _endTime,\n            _permissionedQuantity,\n            _signerAddress\n        );\n\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\n    /// @param _editionId The id of the edition to purchase\n    /// @param _signature A signed message for authorizing permissioned purchases\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\n    function buyEdition(\n        uint256 _editionId,\n        bytes calldata _signature,\n        uint256 _ticketNumber\n    ) external payable {\n        // Caching variables locally to reduce reads\n        uint256 price = editions[_editionId].price;\n        uint32 quantity = editions[_editionId].quantity;\n        uint32 numSold = editions[_editionId].numSold;\n        uint32 newNumSold = numSold + 1;\n        uint32 startTime = editions[_editionId].startTime;\n        uint32 endTime = editions[_editionId].endTime;\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\n\n        // Check that the edition exists. Note: this is redundant\n        // with the next check, but it is useful for clearer error messaging.\n        require(quantity > 0, 'Edition does not exist');\n        // Check that the sender is paying the correct amount.\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\n        // Don't allow purchases after the end time\n        require(endTime > block.timestamp, 'Auction has ended');\n\n        // If the public auction hasn't started...\n        if (startTime > block.timestamp) {\n            // Check that permissioned tokens are still available\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\n\n            // Check that the signature is valid.\n            require(\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\n                'Invalid signer'\n            );\n        } else {\n            // Check that there are still tokens available to purchase.\n            // Only need to check this for the public sale (after the start time)\n            // so we can accomodate open editions\n            require(numSold < quantity, 'This edition is already sold out.');\n        }\n\n        // Create the token id by packing editionId in the top bits\n        uint256 tokenId;\n        unchecked {\n            tokenId = (_editionId << 128) | newNumSold;\n            // Increment the number of tokens sold for this edition.\n            editions[_editionId].numSold = newNumSold;\n        }\n\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\n        if (editions[_editionId].fundingRecipient == owner()) {\n            // Update the deposited total for the edition\n            depositedForEdition[_editionId] += msg.value;\n        } else {\n            // Send funds to the funding recipient.\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\n        }\n\n        // Mint a new token for the sender, using the `tokenId`.\n        _mint(msg.sender, tokenId);\n\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\n    }\n\n    /// @notice Withdraws from the Artist to the fundingRecipient for an edition\n    /// @param _editionId The id of the edition to withdraw from\n    function withdrawFunds(uint256 _editionId) external {\n        // Compute the amount available for withdrawing from this edition.\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\n\n        // Set the amount withdrawn to the amount deposited.\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\n\n        // Send the amount that was remaining for the edition, to the funding recipient.\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\n    }\n\n    /// @notice Sets the start time for an edition\n    /// @param _editionId The id of the edition to set the start time for\n    /// @param _startTime The start time to set (in seconds since unix epoch)\n    function setStartTime(uint256 _editionId, uint32 _startTime) external checkPermission(ADMIN_ROLE) {\n        editions[_editionId].startTime = _startTime;\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\n    }\n\n    /// @notice Sets the end time for an edition\n    /// @param _editionId The id of the edition to set the end time for\n    /// @param _endTime The end time to set (in seconds since unix epoch)\n    function setEndTime(uint256 _editionId, uint32 _endTime) external checkPermission(ADMIN_ROLE) {\n        editions[_editionId].endTime = _endTime;\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\n    }\n\n    /// @notice Sets the signature address of an edition\n    /// @param _editionId The edition id to set the signature address for\n    /// @param _newSignerAddress The address that will be used to sign purchases\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external checkPermission(ADMIN_ROLE) {\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\n\n        editions[_editionId].signerAddress = _newSignerAddress;\n        emit SignerAddressSet(_editionId, _newSignerAddress);\n    }\n\n    /// @notice Sets the permissioned quantity for an edition\n    /// @param _editionId The edition id to set the permissioned quantity for\n    /// @param _permissionedQuantity The new permissiond quantity\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity)\n        external\n        checkPermission(ADMIN_ROLE)\n    {\n        // Prevent setting to permissioned quantity when there is no signer address\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\n\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\n    }\n\n    /// @notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\n    /// @param _newOwner The new owner of the contract\n    function setOwnerOverride(address _newOwner) external {\n        require(_msgSender() == soundRecoveryAddress() || _msgSender() == owner(), 'unauthorized');\n\n        super._transferOwnership(_newOwner);\n    }\n\n    /// @notice Sets the base URI for an edition\n    /// @param _editionId The target edition's id\n    /// @param _baseURI The new base URI\n    function setEditionBaseURI(uint256 _editionId, string calldata _baseURI) external checkPermission(ADMIN_ROLE) {\n        require(\n            editions[_editionId].quantity > 0 || editions[_editionId].permissionedQuantity > 0,\n            'Nonexistent edition'\n        );\n\n        editions[_editionId].baseURI = _baseURI;\n\n        emit BaseURISet(_editionId, _baseURI);\n    }\n\n    // ================================\n    // VIEW FUNCTIONS\n    // ================================\n\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\n    /// @dev Concatenate the baseURI and tokenId, to create URI.\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\n\n        uint256 editionId = tokenToEdition(_tokenId);\n\n        string memory editionBaseURI = editions[editionId].baseURI;\n\n        // If the edition has a baseURI, it means this edition is on permastorage\n        // Using 3 as the length in case it gets accidentally set to empty space\n        if (bytes(editionBaseURI).length > 3) {\n            return string.concat(editionBaseURI, Strings.toString(_tokenId), '/metadata.json');\n        }\n\n        return string.concat(_contractBaseURI(), Strings.toString(_tokenId));\n    }\n\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\n    function contractURI() public view returns (string memory) {\n        return string.concat(_contractBaseURI(), 'storefront');\n    }\n\n    /// @notice Get royalty information for token\n    /// @param _tokenId token id\n    /// @param _salePrice Sale price for the token\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\n        external\n        view\n        override\n        returns (address fundingRecipient, uint256 royaltyAmount)\n    {\n        uint256 editionId = tokenToEdition(_tokenId);\n        Edition memory edition = editions[editionId];\n\n        if (edition.fundingRecipient == address(0x0)) {\n            return (edition.fundingRecipient, 0);\n        }\n\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\n\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\n    }\n\n    /// @notice The total number of tokens created by this contract\n    function totalSupply() external view returns (uint256) {\n        uint256 total = 0;\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\n            total += editions[id].numSold;\n        }\n        return total;\n    }\n\n    /// @notice Informs other contracts which interfaces this contract supports\n    /// @param _interfaceId The interface id to check\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\n    function supportsInterface(bytes4 _interfaceId)\n        public\n        view\n        override(ERC721Upgradeable, IERC165Upgradeable)\n        returns (bool)\n    {\n        return\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\n    }\n\n    /// @notice returns the number of editions for this artist\n    function editionCount() external view returns (uint256) {\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\n    }\n\n    /// @notice Returns the edition id for a given token id\n    /// @param _tokenId token id\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\n        // Check the top bits to see if the edition id is there\n        uint256 editionId = _tokenId >> 128;\n\n        // If edition ID is 0, then this edition was created before the V3 upgrade\n        if (editionId == 0) {\n            // get edition ID from storage\n            return _tokenToEdition[_tokenId];\n        }\n\n        return editionId;\n    }\n\n    /// @notice Returns a list of owner addresses for a given list of token ids\n    /// @param _tokenIds List of token ids\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\n        address[] memory owners = new address[](_tokenIds.length);\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\n            owners[i] = ownerOf(_tokenIds[i]);\n        }\n        return owners;\n    }\n\n    /// @notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\n    /// @param _editionId Edition id\n    /// @param _ticketNumbers List of ticket numbers (indexes)\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\n        external\n        view\n        returns (bool[] memory)\n    {\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\n\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\n            claimed[i] = storedBit == 1;\n        }\n\n        return claimed;\n    }\n\n    /// @notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract\n    function soundRecoveryAddress() public view virtual returns (address) {\n        if (block.chainid == 1) {\n            return 0x858a92511485715Cfb754f397a7894b7724c7Abd;\n        } else if (block.chainid == 4) {\n            return 0xee35E946Dd73EF78d352454c3F915e2cA0a09d87;\n        } else {\n            revert('unsupported chain');\n        }\n    }\n\n    // ================================\n    // PRIVATE FUNCTIONS\n    // ================================\n\n    /// @notice Sends funds to an address\n    /// @param _recipient The address to send funds to\n    /// @param _amount The amount of funds to send\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\n\n        (bool success, ) = _recipient.call{value: _amount}('');\n        require(success, 'Unable to send value: recipient may have reverted');\n    }\n\n    /// @notice Gets signer address to validate permissioned purchase\n    /// @param _signature signed message\n    /// @param _editionId edition id\n    /// @param _ticketNumber ticket number to check\n    /// @return address of signer\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\n    function getSigner(\n        bytes calldata _signature,\n        uint256 _editionId,\n        uint256 _ticketNumber\n    ) private returns (address) {\n        // Check that the ticket number is within the reserved range for the edition\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\n\n        // gets the stored bit\n        (\n            uint256 storedBit,\n            uint256 localGroup,\n            uint256 localGroupOffset,\n            uint256 ticketNumbersIdx\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\n\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\n\n        // Flip the bit to 1 to indicate that the ticket has been claimed\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\n\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR,\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\n            )\n        );\n        return digest.recover(_signature);\n    }\n\n    /// @notice Gets the bit variables associated with a ticket number\n    /// @param _editionId edition id\n    /// @param _ticketNumber ticket number\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\n        private\n        view\n        returns (\n            uint256,\n            uint256,\n            uint256,\n            uint256\n        )\n    {\n        uint256 localGroup; // the bit array for this ticket number\n        uint256 ticketNumbersIdx; // the index of the the local group\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\n        unchecked {\n            ticketNumbersIdx = _ticketNumber / 256;\n            localGroupOffset = _ticketNumber % 256;\n        }\n\n        // cache the local group for efficiency\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\n\n        // gets the stored bit\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\n\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\n    }\n\n    function _contractBaseURI() private view returns (string memory) {\n        string memory contractAddress = Strings.toHexString(uint256(uint160(address(this))), 20);\n        if (block.chainid == 1) {\n            return string.concat('https://metadata.sound.xyz/v1/', contractAddress, '/');\n        } else {\n            return string.concat(baseURI, contractAddress, '/');\n        }\n    }\n}\n"
      },
      "contracts/ArtistV5.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.14;\n\n/*\n               ^###############################################&5               \n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \n\n*/\n\nimport '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\nimport '@openzeppelin/contracts/utils/Strings.sol';\nimport './auxillary/AccessManager.sol';\n\n/// @title Artist\n/// @author SoundXYZ - @gigamesh & @vigneshka\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\ncontract ArtistV5 is ERC721Upgradeable, IERC2981Upgradeable, AccessManager {\n    // ================================\n    // STORAGE\n    // ================================\n\n    // The permissioned typehash (used for checking signature validity)\n    bytes32 public constant PERMISSIONED_SALE_TYPEHASH =\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\n    // Domain separator - used to prevent replay attacks using signatures from different networks\n    bytes32 public immutable DOMAIN_SEPARATOR;\n    // The default baseURI for the contract\n    string internal baseURI;\n\n    CountersUpgradeable.Counter public atTokenId; // DEPRECATED IN V3\n    CountersUpgradeable.Counter public atEditionId;\n\n    // Mapping of edition id to descriptive data.\n    mapping(uint256 => Edition) public editions;\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\n    mapping(uint256 => uint256) public _tokenToEdition;\n    // The amount of funds that have been deposited for a given edition.\n    mapping(uint256 => uint256) public depositedForEdition;\n    // The amount of funds that have already been withdrawn for a given edition.\n    mapping(uint256 => uint256) public withdrawnForEdition;\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\n\n    // ================================\n    // TYPES\n    // ================================\n\n    struct Edition {\n        // The account that will receive sales revenue.\n        address payable fundingRecipient;\n        // The price at which each token will be sold, in ETH.\n        uint256 price;\n        // The number of tokens sold so far.\n        uint32 numSold;\n        // The maximum number of tokens that can be sold.\n        uint32 quantity;\n        // Royalty amount in bps\n        uint32 royaltyBPS;\n        // start timestamp of auction (in seconds since unix epoch)\n        uint32 startTime;\n        // end timestamp of auction (in seconds since unix epoch)\n        uint32 endTime;\n        // quantity of permissioned tokens\n        uint32 permissionedQuantity;\n        // whitelist signer address\n        address signerAddress;\n        // base uri for the edition\n        string baseURI;\n    }\n\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSA for bytes32;\n\n    enum TimeType {\n        START,\n        END\n    }\n\n    // ================================\n    // EVENTS\n    // ================================\n\n    event EditionCreated(\n        uint256 indexed editionId,\n        address fundingRecipient,\n        uint256 price,\n        uint32 quantity,\n        uint32 royaltyBPS,\n        uint32 startTime,\n        uint32 endTime,\n        uint32 permissionedQuantity,\n        address signerAddress\n    );\n\n    event EditionPurchased(\n        uint256 indexed editionId,\n        uint256 indexed tokenId,\n        // `numSold` at time of purchase represents the \"serial number\" of the NFT.\n        uint32 numSold,\n        // The account that paid for and received the NFT.\n        address indexed buyer,\n        uint256 ticketNumber\n    );\n\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\n\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\n\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\n\n    event BaseURISet(uint256 editionId, string baseURI);\n\n    // ================================\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\n    // ================================\n\n    /// @notice Contract constructor\n    constructor() {\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\n    }\n\n    /// @notice Initializes the contract\n    /// @param _owner Owner of edition\n    /// @param _name Name of artist\n    /// @param _symbol Symbol for the artist\n    /// @param _baseURI Default base URI for all editions\n    function initialize(\n        address _owner,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public initializer {\n        __ERC721_init(_name, _symbol);\n        __AccessManager_init();\n\n        // Set ownership to original sender of contract call\n        transferOwnership(_owner);\n\n        // baseURI override only for testnets\n        if (block.chainid != 1) {\n            baseURI = _baseURI;\n        }\n\n        // Set edition id start to be 1 not 0\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new edition.\n    /// @param _fundingRecipient The account that will receive sales revenue.\n    /// @param _price The price at which each token will be sold, in ETH.\n    /// @param _quantity The maximum number of tokens that can be sold.\n    /// @param _royaltyBPS The royalty amount in bps.\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n    /// @param _signerAddress signer address.\n    /// @param _editionId The expected edition ID\n    /// @param _baseURI The base URI for the edition\n    function createEdition(\n        address payable _fundingRecipient,\n        uint256 _price,\n        uint32 _quantity,\n        uint32 _royaltyBPS,\n        uint32 _startTime,\n        uint32 _endTime,\n        uint32 _permissionedQuantity,\n        address _signerAddress,\n        uint256 _editionId,\n        string memory _baseURI\n    ) external checkPermission(ADMIN_ROLE) {\n        require(_quantity > 0, 'Must set quantity');\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\n        require(_endTime > _startTime, 'End time must be greater than start time');\n        require(_editionId == atEditionId.current(), 'Wrong edition ID');\n\n        if (_permissionedQuantity > 0) {\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\n        }\n\n        editions[atEditionId.current()] = Edition({\n            fundingRecipient: _fundingRecipient,\n            price: _price,\n            numSold: 0,\n            quantity: _quantity,\n            royaltyBPS: _royaltyBPS,\n            startTime: _startTime,\n            endTime: _endTime,\n            permissionedQuantity: _permissionedQuantity,\n            signerAddress: _signerAddress,\n            baseURI: _baseURI\n        });\n\n        emit EditionCreated(\n            atEditionId.current(),\n            _fundingRecipient,\n            _price,\n            _quantity,\n            _royaltyBPS,\n            _startTime,\n            _endTime,\n            _permissionedQuantity,\n            _signerAddress\n        );\n\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\n    /// @param _editionId The id of the edition to purchase\n    /// @param _signature A signed message for authorizing permissioned purchases\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\n    function buyEdition(\n        uint256 _editionId,\n        bytes calldata _signature,\n        uint256 _ticketNumber\n    ) external payable {\n        // Caching variables locally to reduce reads\n        uint256 price = editions[_editionId].price;\n        uint32 quantity = editions[_editionId].quantity;\n        uint32 numSold = editions[_editionId].numSold;\n        uint32 newNumSold = numSold + 1;\n        uint32 startTime = editions[_editionId].startTime;\n        uint32 endTime = editions[_editionId].endTime;\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\n\n        // Check that the edition exists. Note: this is redundant\n        // with the next check, but it is useful for clearer error messaging.\n        require(quantity > 0, 'Edition does not exist');\n        // Check that the sender is paying the correct amount.\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\n        // Don't allow purchases after the end time\n        require(endTime > block.timestamp, 'Auction has ended');\n\n        // If the public auction hasn't started...\n        if (startTime > block.timestamp) {\n            // Check that permissioned tokens are still available\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\n\n            // Check that the signature is valid.\n            require(\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\n                'Invalid signer'\n            );\n        } else {\n            // Check that there are still tokens available to purchase.\n            // Only need to check this for the public sale (after the start time)\n            // so we can accomodate open editions\n            require(numSold < quantity, 'This edition is already sold out.');\n        }\n\n        // Create the token id by packing editionId in the top bits\n        uint256 tokenId;\n        unchecked {\n            tokenId = (_editionId << 128) | newNumSold;\n            // Increment the number of tokens sold for this edition.\n            editions[_editionId].numSold = newNumSold;\n        }\n\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\n        if (editions[_editionId].fundingRecipient == owner()) {\n            // Update the deposited total for the edition\n            depositedForEdition[_editionId] += msg.value;\n        } else {\n            // Send funds to the funding recipient.\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\n        }\n\n        // Mint a new token for the sender, using the `tokenId`.\n        _mint(msg.sender, tokenId);\n\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\n    }\n\n    /// @notice Withdraws from the Artist to the fundingRecipient for an edition\n    /// @param _editionId The id of the edition to withdraw from\n    function withdrawFunds(uint256 _editionId) external {\n        // Compute the amount available for withdrawing from this edition.\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\n\n        // Set the amount withdrawn to the amount deposited.\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\n\n        // Send the amount that was remaining for the edition, to the funding recipient.\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\n    }\n\n    /// @notice Sets the start time for an edition\n    /// @param _editionId The id of the edition to set the start time for\n    /// @param _startTime The start time to set (in seconds since unix epoch)\n    function setStartTime(uint256 _editionId, uint32 _startTime) external checkPermission(ADMIN_ROLE) {\n        editions[_editionId].startTime = _startTime;\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\n    }\n\n    /// @notice Sets the end time for an edition\n    /// @param _editionId The id of the edition to set the end time for\n    /// @param _endTime The end time to set (in seconds since unix epoch)\n    function setEndTime(uint256 _editionId, uint32 _endTime) external checkPermission(ADMIN_ROLE) {\n        editions[_editionId].endTime = _endTime;\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\n    }\n\n    /// @notice Sets the signature address of an edition\n    /// @param _editionId The edition id to set the signature address for\n    /// @param _newSignerAddress The address that will be used to sign purchases\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external checkPermission(ADMIN_ROLE) {\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\n\n        editions[_editionId].signerAddress = _newSignerAddress;\n        emit SignerAddressSet(_editionId, _newSignerAddress);\n    }\n\n    /// @notice Sets the permissioned quantity for an edition\n    /// @param _editionId The edition id to set the permissioned quantity for\n    /// @param _permissionedQuantity The new permissiond quantity\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity)\n        external\n        checkPermission(ADMIN_ROLE)\n    {\n        // Prevent setting to permissioned quantity when there is no signer address\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\n\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\n    }\n\n    /// @notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\n    /// @param _newOwner The new owner of the contract\n    function setOwnerOverride(address _newOwner) external {\n        require(_msgSender() == soundRecoveryAddress() || _msgSender() == owner(), 'unauthorized');\n\n        super._transferOwnership(_newOwner);\n    }\n\n    /// @notice Sets the base URI for an edition\n    /// @param _editionId The target edition's id\n    /// @param _baseURI The new base URI\n    function setEditionBaseURI(uint256 _editionId, string calldata _baseURI) external checkPermission(ADMIN_ROLE) {\n        require(\n            editions[_editionId].quantity > 0 || editions[_editionId].permissionedQuantity > 0,\n            'Nonexistent edition'\n        );\n\n        editions[_editionId].baseURI = _baseURI;\n\n        emit BaseURISet(_editionId, _baseURI);\n    }\n\n    // ================================\n    // VIEW FUNCTIONS\n    // ================================\n\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\n    /// @dev Concatenate the baseURI and tokenId, to create URI.\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\n\n        uint256 editionId = tokenToEdition(_tokenId);\n\n        string memory editionBaseURI = editions[editionId].baseURI;\n\n        // If the edition has a baseURI, it means this edition is on permastorage\n        // Using 3 as the length in case it gets accidentally set to empty space\n        if (bytes(editionBaseURI).length > 3) {\n            return string.concat(editionBaseURI, Strings.toString(_tokenId), '/metadata.json');\n        }\n\n        return string.concat(_contractBaseURI(), Strings.toString(_tokenId));\n    }\n\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\n    function contractURI() public view returns (string memory) {\n        return string.concat(_contractBaseURI(), 'storefront');\n    }\n\n    /// @notice Get royalty information for token\n    /// @param _tokenId token id\n    /// @param _salePrice Sale price for the token\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\n        external\n        view\n        override\n        returns (address fundingRecipient, uint256 royaltyAmount)\n    {\n        uint256 editionId = tokenToEdition(_tokenId);\n        Edition memory edition = editions[editionId];\n\n        if (edition.fundingRecipient == address(0x0)) {\n            return (edition.fundingRecipient, 0);\n        }\n\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\n\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\n    }\n\n    /// @notice The total number of tokens created by this contract\n    function totalSupply() external view returns (uint256) {\n        uint256 total = 0;\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\n            total += editions[id].numSold;\n        }\n        return total;\n    }\n\n    /// @notice Informs other contracts which interfaces this contract supports\n    /// @param _interfaceId The interface id to check\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\n    function supportsInterface(bytes4 _interfaceId)\n        public\n        view\n        override(ERC721Upgradeable, IERC165Upgradeable)\n        returns (bool)\n    {\n        return\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\n    }\n\n    /// @notice returns the number of editions for this artist\n    function editionCount() external view returns (uint256) {\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\n    }\n\n    /// @notice Returns the edition id for a given token id\n    /// @param _tokenId token id\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\n        // Check the top bits to see if the edition id is there\n        uint256 editionId = _tokenId >> 128;\n\n        // If edition ID is 0, then this edition was created before the V3 upgrade\n        if (editionId == 0) {\n            // get edition ID from storage\n            return _tokenToEdition[_tokenId];\n        }\n\n        return editionId;\n    }\n\n    /// @notice Returns a list of owner addresses for a given list of token ids\n    /// @param _tokenIds List of token ids\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\n        address[] memory owners = new address[](_tokenIds.length);\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\n            owners[i] = ownerOf(_tokenIds[i]);\n        }\n        return owners;\n    }\n\n    /// @notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\n    /// @param _editionId Edition id\n    /// @param _ticketNumbers List of ticket numbers (indexes)\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\n        external\n        view\n        returns (bool[] memory)\n    {\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\n\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\n            claimed[i] = storedBit == 1;\n        }\n\n        return claimed;\n    }\n\n    /// @notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract\n    function soundRecoveryAddress() public view virtual returns (address) {\n        if (block.chainid == 1) {\n            return 0x858a92511485715Cfb754f397a7894b7724c7Abd;\n        } else if (block.chainid == 4) {\n            return 0xee35E946Dd73EF78d352454c3F915e2cA0a09d87;\n        } else {\n            revert('unsupported chain');\n        }\n    }\n\n    // ================================\n    // PRIVATE FUNCTIONS\n    // ================================\n\n    /// @notice Sends funds to an address\n    /// @param _recipient The address to send funds to\n    /// @param _amount The amount of funds to send\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\n\n        (bool success, ) = _recipient.call{value: _amount}('');\n        require(success, 'Unable to send value: recipient may have reverted');\n    }\n\n    /// @notice Gets signer address to validate permissioned purchase\n    /// @param _signature signed message\n    /// @param _editionId edition id\n    /// @param _ticketNumber ticket number to check\n    /// @return address of signer\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\n    function getSigner(\n        bytes calldata _signature,\n        uint256 _editionId,\n        uint256 _ticketNumber\n    ) private returns (address) {\n        // Check that the ticket number is within the reserved range for the edition\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\n\n        // gets the stored bit\n        (\n            uint256 storedBit,\n            uint256 localGroup,\n            uint256 localGroupOffset,\n            uint256 ticketNumbersIdx\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\n\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\n\n        // Flip the bit to 1 to indicate that the ticket has been claimed\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\n\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR,\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\n            )\n        );\n        return digest.recover(_signature);\n    }\n\n    /// @notice Gets the bit variables associated with a ticket number\n    /// @param _editionId edition id\n    /// @param _ticketNumber ticket number\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\n        private\n        view\n        returns (\n            uint256,\n            uint256,\n            uint256,\n            uint256\n        )\n    {\n        uint256 localGroup; // the bit array for this ticket number\n        uint256 ticketNumbersIdx; // the index of the the local group\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\n        unchecked {\n            ticketNumbersIdx = _ticketNumber / 256;\n            localGroupOffset = _ticketNumber % 256;\n        }\n\n        // cache the local group for efficiency\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\n\n        // gets the stored bit\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\n\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\n    }\n\n    function _contractBaseURI() private view returns (string memory) {\n        string memory contractAddress = Strings.toHexString(uint256(uint160(address(this))), 20);\n        if (block.chainid == 1) {\n            return string.concat('https://metadata.sound.xyz/v1/', contractAddress, '/');\n        } else {\n            return string.concat(baseURI, contractAddress, '/');\n        }\n    }\n}\n"
      },
      "contracts/ArtistV4.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.7;\n\n/*\n               ^###############################################&5               \n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \n\n*/\n\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport {LibUintToString} from './utils/LibUintToString.sol';\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport {ECDSA} from '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\n\n/// @title Artist\n/// @author SoundXYZ - @gigamesh & @vigneshka\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\ncontract ArtistV4 is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\n    // ================================\n    // TYPES\n    // ================================\n\n    using LibUintToString for uint256;\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSA for bytes32;\n\n    enum TimeType {\n        START,\n        END\n    }\n\n    // ============ Structs ============\n\n    struct Edition {\n        // The account that will receive sales revenue.\n        address payable fundingRecipient;\n        // The price at which each token will be sold, in ETH.\n        uint256 price;\n        // The number of tokens sold so far.\n        uint32 numSold;\n        // The maximum number of tokens that can be sold.\n        uint32 quantity;\n        // Royalty amount in bps\n        uint32 royaltyBPS;\n        // start timestamp of auction (in seconds since unix epoch)\n        uint32 startTime;\n        // end timestamp of auction (in seconds since unix epoch)\n        uint32 endTime;\n        // quantity of permissioned tokens\n        uint32 permissionedQuantity;\n        // whitelist signer address\n        address signerAddress;\n    }\n\n    // ================================\n    // STORAGE\n    // ================================\n\n    string internal baseURI;\n\n    CountersUpgradeable.Counter private atTokenId; // DEPRECATED IN V3\n    CountersUpgradeable.Counter private atEditionId;\n\n    // Mapping of edition id to descriptive data.\n    mapping(uint256 => Edition) public editions;\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\n    mapping(uint256 => uint256) private _tokenToEdition;\n    // The amount of funds that have been deposited for a given edition.\n    mapping(uint256 => uint256) public depositedForEdition;\n    // The amount of funds that have already been withdrawn for a given edition.\n    mapping(uint256 => uint256) public withdrawnForEdition;\n    // The permissioned typehash (used for checking signature validity)\n    bytes32 private constant PERMISSIONED_SALE_TYPEHASH =\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\n    // Domain separator - used to prevent replay attacks using signatures from different networks\n    bytes32 private immutable DOMAIN_SEPARATOR;\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\n\n    // ================================\n    // EVENTS\n    // ================================\n\n    event EditionCreated(\n        uint256 indexed editionId,\n        address fundingRecipient,\n        uint256 price,\n        uint32 quantity,\n        uint32 royaltyBPS,\n        uint32 startTime,\n        uint32 endTime,\n        uint32 permissionedQuantity,\n        address signerAddress\n    );\n\n    event EditionPurchased(\n        uint256 indexed editionId,\n        uint256 indexed tokenId,\n        // `numSold` at time of purchase represents the \"serial number\" of the NFT.\n        uint32 numSold,\n        // The account that paid for and received the NFT.\n        address indexed buyer,\n        uint256 ticketNumber\n    );\n\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\n\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\n\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\n\n    // ================================\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\n    // ================================\n\n    /// @notice Contract constructor\n    constructor() {\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\n    }\n\n    /// @notice Initializes the contract\n    /// @param _owner Owner of edition\n    /// @param _name Name of artist\n    function initialize(\n        address _owner,\n        uint256 _artistId,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public initializer {\n        __ERC721_init(_name, _symbol);\n        __Ownable_init();\n\n        // Set ownership to original sender of contract call\n        transferOwnership(_owner);\n\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\n\n        // Set edition id start to be 1 not 0\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new edition.\n    /// @param _fundingRecipient The account that will receive sales revenue.\n    /// @param _price The price at which each token will be sold, in ETH.\n    /// @param _quantity The maximum number of tokens that can be sold.\n    /// @param _royaltyBPS The royalty amount in bps.\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n    /// @param _signerAddress signer address.\n    function createEdition(\n        address payable _fundingRecipient,\n        uint256 _price,\n        uint32 _quantity,\n        uint32 _royaltyBPS,\n        uint32 _startTime,\n        uint32 _endTime,\n        uint32 _permissionedQuantity,\n        address _signerAddress\n    ) external onlyOwner {\n        require(_quantity > 0, 'Must set quantity');\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\n        require(_endTime > _startTime, 'End time must be greater than start time');\n\n        if (_permissionedQuantity > 0) {\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\n        }\n\n        editions[atEditionId.current()] = Edition({\n            fundingRecipient: _fundingRecipient,\n            price: _price,\n            numSold: 0,\n            quantity: _quantity,\n            royaltyBPS: _royaltyBPS,\n            startTime: _startTime,\n            endTime: _endTime,\n            permissionedQuantity: _permissionedQuantity,\n            signerAddress: _signerAddress\n        });\n\n        emit EditionCreated(\n            atEditionId.current(),\n            _fundingRecipient,\n            _price,\n            _quantity,\n            _royaltyBPS,\n            _startTime,\n            _endTime,\n            _permissionedQuantity,\n            _signerAddress\n        );\n\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\n    /// @param _editionId The id of the edition to purchase\n    /// @param _signature A signed message for authorizing permissioned purchases\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\n    function buyEdition(\n        uint256 _editionId,\n        bytes calldata _signature,\n        uint256 _ticketNumber\n    ) external payable {\n        // Caching variables locally to reduce reads\n        uint256 price = editions[_editionId].price;\n        uint32 quantity = editions[_editionId].quantity;\n        uint32 numSold = editions[_editionId].numSold;\n        uint32 newNumSold = numSold + 1;\n        uint32 startTime = editions[_editionId].startTime;\n        uint32 endTime = editions[_editionId].endTime;\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\n\n        // Check that the edition exists. Note: this is redundant\n        // with the next check, but it is useful for clearer error messaging.\n        require(quantity > 0, 'Edition does not exist');\n        // Check that the sender is paying the correct amount.\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\n\n        // If the public auction hasn't started...\n        if (startTime > block.timestamp) {\n            // Check that permissioned tokens are still available\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\n\n            // Check that the signature is valid.\n            require(\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\n                'Invalid signer'\n            );\n        } else {\n            // Check that there are still tokens available to purchase.\n            // Only need to check this for the public sale (after the start time)\n            // so we can accomodate open editions\n            require(numSold < quantity, 'This edition is already sold out.');\n        }\n\n        // Don't allow purchases after the end time\n        require(endTime > block.timestamp, 'Auction has ended');\n\n        // Create the token id by packing editionId in the top bits\n        uint256 tokenId;\n        unchecked {\n            tokenId = (_editionId << 128) | newNumSold;\n            // Increment the number of tokens sold for this edition.\n            editions[_editionId].numSold = newNumSold;\n        }\n\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\n        if (editions[_editionId].fundingRecipient == owner()) {\n            // Update the deposited total for the edition\n            depositedForEdition[_editionId] += msg.value;\n        } else {\n            // Send funds to the funding recipient.\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\n        }\n\n        // Mint a new token for the sender, using the `tokenId`.\n        _mint(msg.sender, tokenId);\n\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\n    }\n\n    function withdrawFunds(uint256 _editionId) external {\n        // Compute the amount available for withdrawing from this edition.\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\n\n        // Set the amount withdrawn to the amount deposited.\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\n\n        // Send the amount that was remaining for the edition, to the funding recipient.\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\n    }\n\n    /// @notice Sets the start time for an edition\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\n        editions[_editionId].startTime = _startTime;\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\n    }\n\n    /// @notice Sets the end time for an edition\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\n        editions[_editionId].endTime = _endTime;\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\n    }\n\n    /// @notice Sets the signature address of an edition\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external onlyOwner {\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\n\n        editions[_editionId].signerAddress = _newSignerAddress;\n        emit SignerAddressSet(_editionId, _newSignerAddress);\n    }\n\n    /// @notice Sets the permissioned quantity for an edition\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity) external onlyOwner {\n        // Prevent setting to permissioned quantity when there is no signer address\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\n\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\n    }\n\n    // ================================\n    // VIEW FUNCTIONS\n    // ================================\n\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\n    /// @dev Concatenate the baseURI, editionId and tokenId, to create URI.\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\n\n        uint256 editionId = tokenToEdition(_tokenId);\n\n        return string(abi.encodePacked(baseURI, editionId.toString(), '/', _tokenId.toString()));\n    }\n\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\n    function contractURI() public view returns (string memory) {\n        return string(abi.encodePacked(baseURI, 'storefront'));\n    }\n\n    /// @notice Get royalty information for token\n    /// @param _tokenId token id\n    /// @param _salePrice Sale price for the token\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\n        external\n        view\n        override\n        returns (address fundingRecipient, uint256 royaltyAmount)\n    {\n        uint256 editionId = tokenToEdition(_tokenId);\n        Edition memory edition = editions[editionId];\n\n        if (edition.fundingRecipient == address(0x0)) {\n            return (edition.fundingRecipient, 0);\n        }\n\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\n\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\n    }\n\n    /// @notice The total number of tokens created by this contract\n    function totalSupply() external view returns (uint256) {\n        uint256 total = 0;\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\n            total += editions[id].numSold;\n        }\n        return total;\n    }\n\n    /// @notice Informs other contracts which interfaces this contract supports\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\n    function supportsInterface(bytes4 _interfaceId)\n        public\n        view\n        override(ERC721Upgradeable, IERC165Upgradeable)\n        returns (bool)\n    {\n        return\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\n    }\n\n    /// @notice returns the number of editions for this artist\n    function editionCount() external view returns (uint256) {\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\n    }\n\n    /// @notice Returns the edition id for a given token id\n    /// @param _tokenId token id\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\n        // Check the top bits to see if the edition id is there\n        uint256 editionId = _tokenId >> 128;\n\n        // If edition ID is 0, then this edition was created before the V3 upgrade\n        if (editionId == 0) {\n            // get edition ID from storage\n            return _tokenToEdition[_tokenId];\n        }\n\n        return editionId;\n    }\n\n    /// @notice Returns a list of owner addresses for a given list of token ids\n    /// @param _tokenIds List of token ids\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\n        address[] memory owners = new address[](_tokenIds.length);\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\n            owners[i] = ownerOf(_tokenIds[i]);\n        }\n        return owners;\n    }\n\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\n        external\n        view\n        returns (bool[] memory)\n    {\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\n\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\n            claimed[i] = storedBit == 1;\n        }\n\n        return claimed;\n    }\n\n    // ================================\n    // PRIVATE FUNCTIONS\n    // ================================\n\n    /// @notice Sends funds to an address\n    /// @param _recipient The address to send funds to\n    /// @param _amount The amount of funds to send\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\n\n        (bool success, ) = _recipient.call{value: _amount}('');\n        require(success, 'Unable to send value: recipient may have reverted');\n    }\n\n    /// @notice Gets signer address to validate permissioned purchase\n    /// @param _signature signed message\n    /// @param _editionId edition id\n    /// @return address of signer\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\n    function getSigner(\n        bytes calldata _signature,\n        uint256 _editionId,\n        uint256 _ticketNumber\n    ) private returns (address) {\n        // Check that the ticket number is within the reserved range for the edition\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\n\n        // gets the stored bit\n        (\n            uint256 storedBit,\n            uint256 localGroup,\n            uint256 localGroupOffset,\n            uint256 ticketNumbersIdx\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\n\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\n\n        // Flip the bit to 1 to indicate that the ticket has been claimed\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\n\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR,\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\n            )\n        );\n        return digest.recover(_signature);\n    }\n\n    /// @notice Gets the bit variables associated with a ticket number\n    /// @param _editionId edition id\n    /// @param _ticketNumber ticket number\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\n        private\n        view\n        returns (\n            uint256,\n            uint256,\n            uint256,\n            uint256\n        )\n    {\n        uint256 localGroup; // the bit array for this ticket number\n        uint256 ticketNumbersIdx; // the index of the the local group\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\n        unchecked {\n            ticketNumbersIdx = _ticketNumber / 256;\n            localGroupOffset = _ticketNumber % 256;\n        }\n\n        // cache the local group for efficiency\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\n\n        // gets the stored bit\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\n\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\n    }\n}\n"
      },
      "contracts/utils/LibUintToString.sol": {
        "content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.0;\n\nlibrary LibUintToString {\n    uint256 private constant MAX_UINT256_STRING_LENGTH = 78;\n    uint8 private constant ASCII_DIGIT_OFFSET = 48;\n\n    /// @dev Converts a `uint256` value to a string.\n    /// @param n The integer to convert.\n    /// @return nstr `n` as a decimal string.\n    function toString(uint256 n) internal pure returns (string memory nstr) {\n        if (n == 0) {\n            return '0';\n        }\n        // Overallocate memory\n        nstr = new string(MAX_UINT256_STRING_LENGTH);\n        uint256 k = MAX_UINT256_STRING_LENGTH;\n        // Populate string from right to left (lsb to msb).\n        while (n != 0) {\n            assembly {\n                let char := add(ASCII_DIGIT_OFFSET, mod(n, 10))\n                mstore(add(nstr, k), char)\n                k := sub(k, 1)\n                n := div(n, 10)\n            }\n        }\n        assembly {\n            // Shift pointer over to actual start of string.\n            nstr := add(nstr, k)\n            // Store actual string length.\n            mstore(nstr, sub(MAX_UINT256_STRING_LENGTH, k))\n        }\n        return nstr;\n    }\n}\n"
      },
      "contracts/ArtistV3.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.7;\n\n/*\n ██████  ██████  ██    ██ ███    ██ ██████  \n██      ██    ██ ██    ██ ████   ██ ██   ██ \n███████ ██    ██ ██    ██ ██ ██  ██ ██   ██ \n     ██ ██    ██ ██    ██ ██  ██ ██ ██   ██ \n███████  ██████   ██████  ██   ████ ██████ \n*/\n\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport {LibUintToString} from './utils/LibUintToString.sol';\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport {ArtistCreator} from './ArtistCreator.sol';\nimport {ECDSA} from '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\n\n/// @title Artist\n/// @author SoundXYZ - @gigamesh & @vigneshka\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\ncontract ArtistV3 is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\n    // ================================\n    // TYPES\n    // ================================\n\n    using LibUintToString for uint256;\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSA for bytes32;\n\n    enum TimeType {\n        START,\n        END\n    }\n\n    // ============ Structs ============\n\n    struct Edition {\n        // The account that will receive sales revenue.\n        address payable fundingRecipient;\n        // The price at which each token will be sold, in ETH.\n        uint256 price;\n        // The number of tokens sold so far.\n        uint32 numSold;\n        // The maximum number of tokens that can be sold.\n        uint32 quantity;\n        // Royalty amount in bps\n        uint32 royaltyBPS;\n        // start timestamp of auction (in seconds since unix epoch)\n        uint32 startTime;\n        // end timestamp of auction (in seconds since unix epoch)\n        uint32 endTime;\n        // quantity of permissioned tokens\n        uint32 permissionedQuantity;\n        // whitelist signer address\n        address signerAddress;\n    }\n\n    // ================================\n    // STORAGE\n    // ================================\n\n    string internal baseURI;\n\n    CountersUpgradeable.Counter private atTokenId; // DEPRECATED IN V3\n    CountersUpgradeable.Counter private atEditionId;\n\n    // Mapping of edition id to descriptive data.\n    mapping(uint256 => Edition) public editions;\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\n    mapping(uint256 => uint256) private _tokenToEdition;\n    // The amount of funds that have been deposited for a given edition.\n    mapping(uint256 => uint256) public depositedForEdition;\n    // The amount of funds that have already been withdrawn for a given edition.\n    mapping(uint256 => uint256) public withdrawnForEdition;\n    // The permissioned typehash (used for checking signature validity)\n    bytes32 private constant PERMISSIONED_SALE_TYPEHASH =\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)');\n    bytes32 private immutable DOMAIN_SEPARATOR;\n\n    // ================================\n    // EVENTS\n    // ================================\n\n    event EditionCreated(\n        uint256 indexed editionId,\n        address fundingRecipient,\n        uint256 price,\n        uint32 quantity,\n        uint32 royaltyBPS,\n        uint32 startTime,\n        uint32 endTime,\n        uint32 permissionedQuantity,\n        address signerAddress\n    );\n\n    event EditionPurchased(\n        uint256 indexed editionId,\n        uint256 indexed tokenId,\n        // `numSold` at time of purchase represents the \"serial number\" of the NFT.\n        uint32 numSold,\n        // The account that paid for and received the NFT.\n        address indexed buyer\n    );\n\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\n\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\n\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\n\n    // ================================\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\n    // ================================\n\n    /// @notice Contract constructor\n    constructor() {\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\n    }\n\n    /// @notice Initializes the contract\n    /// @param _owner Owner of edition\n    /// @param _name Name of artist\n    function initialize(\n        address _owner,\n        uint256 _artistId,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public initializer {\n        __ERC721_init(_name, _symbol);\n        __Ownable_init();\n\n        // Set ownership to original sender of contract call\n        transferOwnership(_owner);\n\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\n\n        // Set edition id start to be 1 not 0\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new edition.\n    /// @param _fundingRecipient The account that will receive sales revenue.\n    /// @param _price The price at which each token will be sold, in ETH.\n    /// @param _quantity The maximum number of tokens that can be sold.\n    /// @param _royaltyBPS The royalty amount in bps.\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n    /// @param _signerAddress signer address.\n    function createEdition(\n        address payable _fundingRecipient,\n        uint256 _price,\n        uint32 _quantity,\n        uint32 _royaltyBPS,\n        uint32 _startTime,\n        uint32 _endTime,\n        uint32 _permissionedQuantity,\n        address _signerAddress\n    ) external onlyOwner {\n        require(_permissionedQuantity < _quantity + 1, 'Permissioned quantity too big');\n        require(_quantity > 0, 'Must set quantity');\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\n        require(_endTime > _startTime, 'End time must be greater than start time');\n\n        if (_permissionedQuantity > 0) {\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\n        }\n\n        editions[atEditionId.current()] = Edition({\n            fundingRecipient: _fundingRecipient,\n            price: _price,\n            numSold: 0,\n            quantity: _quantity,\n            royaltyBPS: _royaltyBPS,\n            startTime: _startTime,\n            endTime: _endTime,\n            permissionedQuantity: _permissionedQuantity,\n            signerAddress: _signerAddress\n        });\n\n        emit EditionCreated(\n            atEditionId.current(),\n            _fundingRecipient,\n            _price,\n            _quantity,\n            _royaltyBPS,\n            _startTime,\n            _endTime,\n            _permissionedQuantity,\n            _signerAddress\n        );\n\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\n    /// @param _editionId The id of the edition to purchase\n    /// @param _signature A signed message for authorizing permissioned purchases\n    function buyEdition(uint256 _editionId, bytes calldata _signature) external payable {\n        // Caching variables locally to reduce reads\n        uint256 price = editions[_editionId].price;\n        uint32 quantity = editions[_editionId].quantity;\n        uint32 numSold = editions[_editionId].numSold;\n        uint32 startTime = editions[_editionId].startTime;\n        uint32 endTime = editions[_editionId].endTime;\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\n\n        // Check that the edition exists. Note: this is redundant\n        // with the next check, but it is useful for clearer error messaging.\n        require(quantity > 0, 'Edition does not exist');\n        // Check that there are still tokens available to purchase.\n        require(numSold < quantity, 'This edition is already sold out.');\n        // Check that the sender is paying the correct amount.\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\n\n        // If the open auction hasn't started...\n        if (startTime > block.timestamp) {\n            // Check that permissioned tokens are still available\n            require(\n                permissionedQuantity > 0 && numSold < permissionedQuantity,\n                'No permissioned tokens available & open auction not started'\n            );\n\n            // Check that the signature is valid.\n            require(getSigner(_signature, _editionId) == editions[_editionId].signerAddress, 'Invalid signer');\n        }\n\n        // Don't allow purchases after the end time\n        require(endTime > block.timestamp, 'Auction has ended');\n\n        // Create the token id by packing editionId in the top bits\n        uint256 tokenId;\n        unchecked {\n            tokenId = (_editionId << 128) | (numSold + 1);\n            // Increment the number of tokens sold for this edition.\n            editions[_editionId].numSold = numSold + 1;\n        }\n\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\n        if (editions[_editionId].fundingRecipient == owner()) {\n            // Update the deposited total for the edition\n            depositedForEdition[_editionId] += msg.value;\n        } else {\n            // Send funds to the funding recipient.\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\n        }\n\n        // Mint a new token for the sender, using the `tokenId`.\n        _mint(msg.sender, tokenId);\n\n        emit EditionPurchased(_editionId, tokenId, editions[_editionId].numSold, msg.sender);\n    }\n\n    function withdrawFunds(uint256 _editionId) external {\n        // Compute the amount available for withdrawing from this edition.\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\n\n        // Set the amount withdrawn to the amount deposited.\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\n\n        // Send the amount that was remaining for the edition, to the funding recipient.\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\n    }\n\n    /// @notice Sets the start time for an edition\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\n        editions[_editionId].startTime = _startTime;\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\n    }\n\n    /// @notice Sets the end time for an edition\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\n        editions[_editionId].endTime = _endTime;\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\n    }\n\n    /// @notice Sets the signature address of an edition\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external onlyOwner {\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\n\n        editions[_editionId].signerAddress = _newSignerAddress;\n        emit SignerAddressSet(_editionId, _newSignerAddress);\n    }\n\n    /// @notice Sets the permissioned quantity for an edition\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity) external onlyOwner {\n        // Check that the permissioned quantity is less than the total quantity\n        require(_permissionedQuantity < editions[_editionId].quantity + 1, 'Must not exceed quantity');\n        // Prevent setting to permissioned quantity when there is no signer address\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\n\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\n    }\n\n    // ================================\n    // VIEW FUNCTIONS\n    // ================================\n\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\n    /// @dev Concatenate the baseURI, editionId and tokenId, to create URI.\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\n\n        uint256 editionId = tokenToEdition(_tokenId);\n\n        return string(abi.encodePacked(baseURI, editionId.toString(), '/', _tokenId.toString()));\n    }\n\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\n    function contractURI() public view returns (string memory) {\n        return string(abi.encodePacked(baseURI, 'storefront'));\n    }\n\n    /// @notice Get royalty information for token\n    /// @param _tokenId token id\n    /// @param _salePrice Sale price for the token\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\n        external\n        view\n        override\n        returns (address fundingRecipient, uint256 royaltyAmount)\n    {\n        uint256 editionId = tokenToEdition(_tokenId);\n        Edition memory edition = editions[editionId];\n\n        if (edition.fundingRecipient == address(0x0)) {\n            return (edition.fundingRecipient, 0);\n        }\n\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\n\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\n    }\n\n    /// @notice The total number of tokens created by this contract\n    function totalSupply() external view returns (uint256) {\n        uint256 total = 0;\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\n            total += editions[id].numSold;\n        }\n        return total;\n    }\n\n    /// @notice Informs other contracts which interfaces this contract supports\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\n    function supportsInterface(bytes4 _interfaceId)\n        public\n        view\n        override(ERC721Upgradeable, IERC165Upgradeable)\n        returns (bool)\n    {\n        return\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\n    }\n\n    /// @notice returns the number of editions for this artist\n    function editionCount() external view returns (uint256) {\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\n    }\n\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\n        // Check the top bits to see if the edition id is there\n        uint256 editionId = _tokenId >> 128;\n\n        // If edition ID is 0, then this edition was created before the V3 upgrade\n        if (editionId == 0) {\n            // get edition ID from storage\n            return _tokenToEdition[_tokenId];\n        }\n\n        return editionId;\n    }\n\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\n        address[] memory owners = new address[](_tokenIds.length);\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\n            owners[i] = ownerOf(_tokenIds[i]);\n        }\n        return owners;\n    }\n\n    // ================================\n    // FUNCTIONS - PRIVATE\n    // ================================\n\n    /// @notice Sends funds to an address\n    /// @param _recipient The address to send funds to\n    /// @param _amount The amount of funds to send\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\n\n        (bool success, ) = _recipient.call{value: _amount}('');\n        require(success, 'Unable to send value: recipient may have reverted');\n    }\n\n    /// @notice Gets signer address to validate permissioned purchase\n    /// @param _signature signed message\n    /// @param _editionId edition id\n    /// @return address of signer\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\n    function getSigner(bytes calldata _signature, uint256 _editionId) private view returns (address) {\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR,\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId))\n            )\n        );\n        address recoveredAddress = digest.recover(_signature);\n        return recoveredAddress;\n    }\n}\n"
      },
      "contracts/ArtistCreator.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.7;\n\n/*\n ██████  ██████  ██    ██ ███    ██ ██████  \n██      ██    ██ ██    ██ ████   ██ ██   ██ \n███████ ██    ██ ██    ██ ██ ██  ██ ██   ██ \n     ██ ██    ██ ██    ██ ██  ██ ██ ██   ██ \n███████  ██████   ██████  ██   ████ ██████ \n*/\n\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\nimport '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';\nimport './Artist.sol';\n\ncontract ArtistCreator is Initializable, UUPSUpgradeable, OwnableUpgradeable {\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSAUpgradeable for bytes32;\n\n    // ============ Storage ============\n\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\n    CountersUpgradeable.Counter private atArtistId;\n    // address used for signature verification, changeable by owner\n    address public admin;\n    bytes32 public DOMAIN_SEPARATOR;\n    address public beaconAddress;\n    // registry of created contracts\n    address[] public artistContracts;\n\n    // ============ Events ============\n\n    /// Emitted when an Artist is created\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\n\n    // ============ Functions ============\n\n    /// Initializes factory\n    function initialize() public initializer {\n        __Ownable_init_unchained();\n\n        // set admin for artist deployment authorization\n        admin = msg.sender;\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\n\n        // set up beacon with msg.sender as the owner\n        UpgradeableBeacon _beacon = new UpgradeableBeacon(address(new Artist()));\n        _beacon.transferOwnership(msg.sender);\n        beaconAddress = address(_beacon);\n\n        // Set artist id start to be 1 not 0\n        atArtistId.increment();\n    }\n\n    /// Creates a new artist contract as a factory with a deterministic address\n    /// Important: None of these fields (except the Url fields with the same hash) can be changed after calling\n    /// @param _name Name of the artist\n    function createArtist(\n        bytes calldata signature,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public returns (address) {\n        require((getSigner(signature) == admin), 'invalid authorization signature');\n\n        BeaconProxy proxy = new BeaconProxy(\n            beaconAddress,\n            abi.encodeWithSelector(\n                Artist(address(0)).initialize.selector,\n                msg.sender,\n                atArtistId.current(),\n                _name,\n                _symbol,\n                _baseURI\n            )\n        );\n\n        // add to registry\n        artistContracts.push(address(proxy));\n\n        emit CreatedArtist(atArtistId.current(), _name, _symbol, address(proxy));\n\n        atArtistId.increment();\n\n        return address(proxy);\n    }\n\n    /// Get signer address of signature\n    function getSigner(bytes calldata signature) public view returns (address) {\n        require(admin != address(0), 'whitelist not enabled');\n        // Verify EIP-712 signature by recreating the data structure\n        // that we signed on the client side, and then using that to recover\n        // the address that signed the signature for this data.\n        bytes32 digest = keccak256(\n            abi.encodePacked('\\x19\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, msg.sender)))\n        );\n        // Use the recover method to see what address was used to create\n        // the signature on this data.\n        // Note that if the digest doesn't exactly match what was signed we'll\n        // get a random recovered address.\n        address recoveredAddress = digest.recover(signature);\n        return recoveredAddress;\n    }\n\n    /// Sets the admin for authorizing artist deployment\n    /// @param _newAdmin address of new admin\n    function setAdmin(address _newAdmin) external {\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\n        admin = _newAdmin;\n    }\n\n    function _authorizeUpgrade(address) internal override onlyOwner {}\n}\n"
      },
      "contracts/ArtistV2.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.7;\n\n/*\n ██████  ██████  ██    ██ ███    ██ ██████  \n██      ██    ██ ██    ██ ████   ██ ██   ██ \n███████ ██    ██ ██    ██ ██ ██  ██ ██   ██ \n     ██ ██    ██ ██    ██ ██  ██ ██ ██   ██ \n███████  ██████   ██████  ██   ████ ██████ \n*/\n\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\nimport {ArtistCreator} from './ArtistCreator.sol';\nimport {ECDSA} from '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\n\n/// @title Artist\n/// @author SoundXYZ - @gigamesh & @vigneshka\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\ncontract ArtistV2 is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\n    // ================================\n    // TYPES\n    // ================================\n\n    using Strings for uint256;\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    using ECDSA for bytes32;\n\n    enum TimeType {\n        START,\n        END\n    }\n\n    // ============ Structs ============\n\n    struct Edition {\n        // The account that will receive sales revenue.\n        address payable fundingRecipient;\n        // The price at which each token will be sold, in ETH.\n        uint256 price;\n        // The number of tokens sold so far.\n        uint32 numSold;\n        // The maximum number of tokens that can be sold.\n        uint32 quantity;\n        // Royalty amount in bps\n        uint32 royaltyBPS;\n        // start timestamp of auction (in seconds since unix epoch)\n        uint32 startTime;\n        // end timestamp of auction (in seconds since unix epoch)\n        uint32 endTime;\n        // quantity of presale tokens\n        uint32 presaleQuantity;\n        // whitelist signer address\n        address signerAddress;\n    }\n\n    // ================================\n    // STORAGE\n    // ================================\n\n    string internal baseURI;\n\n    CountersUpgradeable.Counter private atTokenId;\n    CountersUpgradeable.Counter private atEditionId;\n\n    // Mapping of edition id to descriptive data.\n    mapping(uint256 => Edition) public editions;\n    // Mapping of token id to edition id.\n    mapping(uint256 => uint256) public tokenToEdition;\n    // The amount of funds that have been deposited for a given edition.\n    mapping(uint256 => uint256) public depositedForEdition;\n    // The amount of funds that have already been withdrawn for a given edition.\n    mapping(uint256 => uint256) public withdrawnForEdition;\n    // The presale typehash (used for checking signature validity)\n    bytes32 public constant PRESALE_TYPEHASH =\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)');\n\n    // ================================\n    // EVENTS\n    // ================================\n\n    event EditionCreated(\n        uint256 indexed editionId,\n        address fundingRecipient,\n        uint256 price,\n        uint32 quantity,\n        uint32 royaltyBPS,\n        uint32 startTime,\n        uint32 endTime,\n        uint32 presaleQuantity,\n        address signerAddress\n    );\n\n    event EditionPurchased(\n        uint256 indexed editionId,\n        uint256 indexed tokenId,\n        // `numSold` at time of purchase represents the \"serial number\" of the NFT.\n        uint32 numSold,\n        // The account that paid for and received the NFT.\n        address indexed buyer\n    );\n\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\n\n    // ================================\n    // FUNCTIONS - PUBLIC & EXTERNAL\n    // ================================\n\n    /// @notice Initializes the contract\n    /// @param _owner Owner of edition\n    /// @param _name Name of artist\n    function initialize(\n        address _owner,\n        uint256 _artistId,\n        string memory _name,\n        string memory _symbol,\n        string memory _baseURI\n    ) public initializer {\n        __ERC721_init(_name, _symbol);\n        __Ownable_init();\n\n        // Set ownership to original sender of contract call\n        transferOwnership(_owner);\n\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\n\n        // Set token id start to be 1 not 0\n        atTokenId.increment();\n\n        // Set edition id start to be 1 not 0\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new edition.\n    /// @param _fundingRecipient The account that will receive sales revenue.\n    /// @param _price The price at which each token will be sold, in ETH.\n    /// @param _quantity The maximum number of tokens that can be sold.\n    /// @param _royaltyBPS The royalty amount in bps.\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\n    /// @param _presaleQuantity The quantity of presale tokens.\n    /// @param _signerAddress signer address.\n    function createEdition(\n        address payable _fundingRecipient,\n        uint256 _price,\n        uint32 _quantity,\n        uint32 _royaltyBPS,\n        uint32 _startTime,\n        uint32 _endTime,\n        uint32 _presaleQuantity,\n        address _signerAddress\n    ) external onlyOwner {\n        require(_presaleQuantity < _quantity + 1, 'Presale quantity too big');\n\n        if (_presaleQuantity > 0) {\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\n        }\n\n        editions[atEditionId.current()] = Edition({\n            fundingRecipient: _fundingRecipient,\n            price: _price,\n            numSold: 0,\n            quantity: _quantity,\n            royaltyBPS: _royaltyBPS,\n            startTime: _startTime,\n            endTime: _endTime,\n            presaleQuantity: _presaleQuantity,\n            signerAddress: _signerAddress\n        });\n\n        emit EditionCreated(\n            atEditionId.current(),\n            _fundingRecipient,\n            _price,\n            _quantity,\n            _royaltyBPS,\n            _startTime,\n            _endTime,\n            _presaleQuantity,\n            _signerAddress\n        );\n\n        atEditionId.increment();\n    }\n\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\n    /// @param _editionId The id of the edition to purchase\n    /// @param _signature A signed message for authorizing presale purchases\n    function buyEdition(uint256 _editionId, bytes calldata _signature) external payable {\n        // Caching variables locally to reduce reads\n        uint256 price = editions[_editionId].price;\n        uint32 quantity = editions[_editionId].quantity;\n        uint32 numSold = editions[_editionId].numSold;\n        uint32 startTime = editions[_editionId].startTime;\n        uint32 endTime = editions[_editionId].endTime;\n        uint32 presaleQuantity = editions[_editionId].presaleQuantity;\n\n        // Check that the edition exists. Note: this is redundant\n        // with the next check, but it is useful for clearer error messaging.\n        require(quantity > 0, 'Edition does not exist');\n        // Check that there are still tokens available to purchase.\n        require(numSold < quantity, 'This edition is already sold out.');\n        // Check that the sender is paying the correct amount.\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\n\n        // If the open auction hasn't started...\n        if (startTime > block.timestamp) {\n            // Check that presale tokens are still available\n            require(\n                presaleQuantity > 0 && numSold < presaleQuantity,\n                'No presale available & open auction not started'\n            );\n\n            // Check that the signature is valid.\n            require(getSigner(_signature, _editionId) == editions[_editionId].signerAddress, 'Invalid signer');\n        }\n\n        // Don't allow purchases after the end time\n        require(endTime > block.timestamp, 'Auction has ended');\n\n        // Update the deposited total for the edition\n        depositedForEdition[_editionId] += msg.value;\n\n        // Increment the number of tokens sold for this edition.\n        editions[_editionId].numSold++;\n\n        // Mint a new token for the sender, using the `tokenId`.\n        _mint(msg.sender, atTokenId.current());\n\n        // Store the mapping of token id to the edition being purchased.\n        tokenToEdition[atTokenId.current()] = _editionId;\n\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\n\n        atTokenId.increment();\n    }\n\n    function withdrawFunds(uint256 _editionId) external {\n        // Compute the amount available for withdrawing from this edition.\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\n\n        // Set the amount withdrawn to the amount deposited.\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\n\n        // Send the amount that was remaining for the edition, to the funding recipient.\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\n    }\n\n    /// @notice Sets the start time for an edition\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\n        editions[_editionId].startTime = _startTime;\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\n    }\n\n    /// @notice Sets the end time for an edition\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\n        editions[_editionId].endTime = _endTime;\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\n    }\n\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\n\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\n    }\n\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\n    function contractURI() public view returns (string memory) {\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\n        return string(abi.encodePacked(baseURI, 'storefront'));\n    }\n\n    /// @notice Get token ids for a given edition id\n    /// @param _editionId edition id\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\n        uint256 index = 0;\n\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\n            if (tokenToEdition[id] == _editionId) {\n                tokenIdsOfEdition[index] = id;\n                index++;\n            }\n        }\n        return tokenIdsOfEdition;\n    }\n\n    /// @notice Get owners of a given edition id\n    /// @param _editionId edition id\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\n        uint256 index = 0;\n\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\n            if (tokenToEdition[id] == _editionId) {\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\n                index++;\n            }\n        }\n        return ownersOfEdition;\n    }\n\n    /// @notice Get royalty information for token\n    /// @param _tokenId token id\n    /// @param _salePrice Sale price for the token\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\n        external\n        view\n        override\n        returns (address fundingRecipient, uint256 royaltyAmount)\n    {\n        uint256 editionId = tokenToEdition[_tokenId];\n        Edition memory edition = editions[editionId];\n\n        if (edition.fundingRecipient == address(0x0)) {\n            return (edition.fundingRecipient, 0);\n        }\n\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\n\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\n    }\n\n    /// @notice The total number of tokens created by this contract\n    function totalSupply() external view returns (uint256) {\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\n    }\n\n    /// @notice Informs other contracts which interfaces this contract supports\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\n    function supportsInterface(bytes4 _interfaceId)\n        public\n        view\n        override(ERC721Upgradeable, IERC165Upgradeable)\n        returns (bool)\n    {\n        return\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\n    }\n\n    // ================================\n    // FUNCTIONS - PRIVATE\n    // ================================\n\n    /// @notice Sends funds to an address\n    /// @param _recipient The address to send funds to\n    /// @param _amount The amount of funds to send\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\n\n        (bool success, ) = _recipient.call{value: _amount}('');\n        require(success, 'Unable to send value: recipient may have reverted');\n    }\n\n    /// @notice Gets signer address to validate presale purchase\n    /// @param _signature signed message\n    /// @param _editionId edition id\n    /// @return address of signer\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\n    function getSigner(bytes calldata _signature, uint256 _editionId) private view returns (address) {\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid)),\n                keccak256(abi.encode(PRESALE_TYPEHASH, address(this), msg.sender, _editionId))\n            )\n        );\n        address recoveredAddress = digest.recover(_signature);\n        return recoveredAddress;\n    }\n}\n"
      },
      "contracts/ArtistCreatorProxy.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.8.7;\n\nimport '@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol';\n\n// This contract doesn't change the bytecode of ERC1967Proxy. It exists solely to make it compatible with hardhat-deploy plugin.\n// https://github.com/wighawag/hardhat-deploy/issues/146#issuecomment-907755963\n\n// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins.\ncontract ArtistCreatorProxy is ERC1967Proxy {\n    constructor(\n        address _logic,\n        address,\n        bytes memory _data\n    ) payable ERC1967Proxy(_logic, _data) {}\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "storageLayout",
            "devdoc",
            "userdoc",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
        "OwnableUpgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
            "kind": "dev",
            "methods": {
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "stateVariables": {
              "__gap": {
                "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 10,
                "contract": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable",
                "label": "_owner",
                "offset": 0,
                "slot": "51",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "52",
                "type": "t_array(t_uint256)49_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol": {
        "IERC2981Upgradeable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants. _Available since v4.5._",
            "kind": "dev",
            "methods": {
              "royaltyInfo(uint256,uint256)": {
                "details": "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 paid in that same unit of exchange."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants. _Available since v4.5._\",\"kind\":\"dev\",\"methods\":{\"royaltyInfo(uint256,uint256)\":{\"details\":\"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 paid in that same unit of exchange.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":\"IERC2981Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol": {
        "IERC1822ProxiableUpgradeable": {
          "abi": [
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.",
            "kind": "dev",
            "methods": {
              "proxiableUUID()": {
                "details": "Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "proxiableUUID()": "52d1902d"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":\"IERC1822ProxiableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": {
        "ERC1967UpgradeUpgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            }
          ],
          "devdoc": {
            "custom:oz-upgrades-unsafe-allow": "delegatecall",
            "details": "This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._",
            "events": {
              "AdminChanged(address,address)": {
                "details": "Emitted when the admin account has changed."
              },
              "BeaconUpgraded(address)": {
                "details": "Emitted when the beacon is upgraded."
              },
              "Upgraded(address)": {
                "details": "Emitted when the implementation is upgraded."
              }
            },
            "kind": "dev",
            "methods": {},
            "stateVariables": {
              "_ADMIN_SLOT": {
                "details": "Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."
              },
              "_BEACON_SLOT": {
                "details": "The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."
              },
              "_IMPLEMENTATION_SLOT": {
                "details": "Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."
              },
              "__gap": {
                "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"delegatecall\",\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"},\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":\"ERC1967UpgradeUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 528,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              }
            ],
            "types": {
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol": {
        "IBeaconUpgradeable": {
          "abi": [
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "This is the interface that {BeaconProxy} expects of its beacon.",
            "kind": "dev",
            "methods": {
              "implementation()": {
                "details": "Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "implementation()": "5c60da1b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":\"IBeaconUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
        "Initializable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            }
          ],
          "devdoc": {
            "custom:oz-upgrades-unsafe-allow": "constructor constructor() {     _disableInitializers(); } ``` ====",
            "details": "This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ``` contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\"MyToken\", \"MTK\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\"MyToken\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```",
            "events": {
              "Initialized(uint8)": {
                "details": "Triggered when the contract has been initialized or reinitialized."
              }
            },
            "kind": "dev",
            "methods": {},
            "stateVariables": {
              "_initialized": {
                "custom:oz-retyped-from": "bool",
                "details": "Indicates that the contract has been initialized."
              },
              "_initializing": {
                "details": "Indicates that the contract is in the process of being initialized."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ``` contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              }
            ],
            "types": {
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": {
        "UUPSUpgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._",
            "kind": "dev",
            "methods": {
              "proxiableUUID()": {
                "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
              },
              "upgradeTo(address)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              },
              "upgradeToAndCall(address,bytes)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              }
            },
            "stateVariables": {
              "__gap": {
                "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
              },
              "__self": {
                "custom:oz-upgrades-unsafe-allow": "state-variable-immutable state-variable-assignment"
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "proxiableUUID()": "52d1902d",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable state-variable-assignment\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n        require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n        return _IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeTo} and {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 528,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 825,
                "contract": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              }
            ],
            "types": {
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": {
        "ERC721Upgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenURI(uint256)": {
                "details": "See {IERC721Metadata-tokenURI}."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              }
            },
            "stateVariables": {
              "__gap": {
                "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50611137806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c4d565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cc2565b61012461011f366004610cd5565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d0a565b610333565b005b61014f61015f366004610d34565b61044d565b61014f610172366004610d34565b61047e565b610124610185366004610cd5565b610499565b61019d610198366004610d70565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610d8b565b61058e565b61014f6101d4366004610ddd565b61059d565b6101046101e7366004610cd5565b6105d5565b6100e76101fa366004610eb9565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461028990610eec565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610eec565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152606960205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f26565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152606760205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526068602052604090205490565b60606066805461028990610eec565b610599338383610934565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f26565b6105cf84848484610a02565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b8061062184610a35565b604051602001610632929190610f74565b6040516020818303038152906040525b9392505050565b6000818152606760205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b03161461080f5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a7565b6001600160a01b0382166108715760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b61087c6000826106ab565b6001600160a01b03831660009081526068602052604081208054600192906108a5908490610fb9565b90915550506001600160a01b03821660009081526068602052604081208054600192906108d3908490610fd0565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b0316036109955760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0d848484610798565b610a1984848484610b36565b6105cf5760405162461bcd60e51b81526004016103a790610fe8565b606081600003610a5c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a865780610a708161103a565b9150610a7f9050600a83611069565b9150610a60565b60008167ffffffffffffffff811115610aa157610aa1610dc7565b6040519080825280601f01601f191660200182016040528015610acb576020820181803683370190505b5090505b841561079057610ae0600183610fb9565b9150610aed600a8661107d565b610af8906030610fd0565b60f81b818381518110610b0d57610b0d611091565b60200101906001600160f81b031916908160001a905350610b2f600a86611069565b9450610acf565b60006001600160a01b0384163b15610c2c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b7a9033908990889088906004016110a7565b6020604051808303816000875af1925050508015610bb5575060408051601f3d908101601f19168201909252610bb2918101906110e4565b60015b610c12573d808015610be3576040519150601f19603f3d011682016040523d82523d6000602084013e610be8565b606091505b508051600003610c0a5760405162461bcd60e51b81526004016103a790610fe8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c5f57600080fd5b813561064281610c37565b60005b83811015610c85578181015183820152602001610c6d565b838111156105cf5750506000910152565b60008151808452610cae816020860160208601610c6a565b601f01601f19169290920160200192915050565b6020815260006106426020830184610c96565b600060208284031215610ce757600080fd5b5035919050565b80356001600160a01b0381168114610d0557600080fd5b919050565b60008060408385031215610d1d57600080fd5b610d2683610cee565b946020939093013593505050565b600080600060608486031215610d4957600080fd5b610d5284610cee565b9250610d6060208501610cee565b9150604084013590509250925092565b600060208284031215610d8257600080fd5b61064282610cee565b60008060408385031215610d9e57600080fd5b610da783610cee565b915060208301358015158114610dbc57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610df357600080fd5b610dfc85610cee565b9350610e0a60208601610cee565b925060408501359150606085013567ffffffffffffffff80821115610e2e57600080fd5b818701915087601f830112610e4257600080fd5b813581811115610e5457610e54610dc7565b604051601f8201601f19908116603f01168101908382118183101715610e7c57610e7c610dc7565b816040528281528a6020848701011115610e9557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ecc57600080fd5b610ed583610cee565b9150610ee360208401610cee565b90509250929050565b600181811c90821680610f0057607f821691505b602082108103610f2057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f86818460208801610c6a565b835190830190610f9a818360208801610c6a565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fcb57610fcb610fa3565b500390565b60008219821115610fe357610fe3610fa3565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161104c5761104c610fa3565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261107857611078611053565b500490565b60008261108c5761108c611053565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110da90830184610c96565b9695505050505050565b6000602082840312156110f657600080fd5b815161064281610c3756fea264697066735822122070eb95b420f2a01e6786c88e2b68253254e8b555ed87901c85c3c847d4c165c464736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1137 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC4D JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xCC2 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xD0A JUMP JUMPDEST PUSH2 0x333 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x44D JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xD70 JUMP JUMPDEST PUSH2 0x4F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xD8B JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x59D JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x5D5 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xEB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x259 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x274 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xEEC JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B5 SWAP1 PUSH2 0xEEC JUMP JUMPDEST DUP1 ISZERO PUSH2 0x302 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x302 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317 DUP3 PUSH2 0x649 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E DUP3 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3CC JUMPI POP PUSH2 0x3CC DUP2 CALLER PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 PUSH2 0x6AB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x457 CALLER DUP3 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x59D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x599 CALLER DUP4 DUP4 PUSH2 0x934 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5A7 CALLER DUP4 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x5CF DUP5 DUP5 DUP5 DUP5 PUSH2 0xA02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5E0 DUP3 PUSH2 0x649 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F7 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x642 JUMP JUMPDEST DUP1 PUSH2 0x621 DUP5 PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x632 SWAP3 SWAP2 SWAP1 PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E0 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x725 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x76C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x790 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x785 DUP5 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AB DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x80F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x871 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x87C PUSH1 0x0 DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8A5 SWAP1 DUP5 SWAP1 PUSH2 0xFB9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8D3 SWAP1 DUP5 SWAP1 PUSH2 0xFD0 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x995 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA0D DUP5 DUP5 DUP5 PUSH2 0x798 JUMP JUMPDEST PUSH2 0xA19 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB36 JUMP JUMPDEST PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFE8 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0xA5C JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xA86 JUMPI DUP1 PUSH2 0xA70 DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP2 POP PUSH2 0xA7F SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x1069 JUMP JUMPDEST SWAP2 POP PUSH2 0xA60 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAA1 JUMPI PUSH2 0xAA1 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xACB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x790 JUMPI PUSH2 0xAE0 PUSH1 0x1 DUP4 PUSH2 0xFB9 JUMP JUMPDEST SWAP2 POP PUSH2 0xAED PUSH1 0xA DUP7 PUSH2 0x107D JUMP JUMPDEST PUSH2 0xAF8 SWAP1 PUSH1 0x30 PUSH2 0xFD0 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB0D JUMPI PUSH2 0xB0D PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xB2F PUSH1 0xA DUP7 PUSH2 0x1069 JUMP JUMPDEST SWAP5 POP PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xC2C JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xB7A SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xBB5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xBB2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10E4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC12 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFE8 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x790 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x642 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC85 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC6D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x5CF JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xCAE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xC6A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x642 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD26 DUP4 PUSH2 0xCEE JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD52 DUP5 PUSH2 0xCEE JUMP JUMPDEST SWAP3 POP PUSH2 0xD60 PUSH1 0x20 DUP6 ADD PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x642 DUP3 PUSH2 0xCEE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA7 DUP4 PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xDF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFC DUP6 PUSH2 0xCEE JUMP JUMPDEST SWAP4 POP PUSH2 0xE0A PUSH1 0x20 DUP7 ADD PUSH2 0xCEE JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE54 JUMPI PUSH2 0xE54 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xE7C JUMPI PUSH2 0xE7C PUSH2 0xDC7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xECC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED5 DUP4 PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP PUSH2 0xEE3 PUSH1 0x20 DUP5 ADD PUSH2 0xCEE JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF00 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF20 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xF86 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xC6A JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xF9A DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xC6A JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xFCB JUMPI PUSH2 0xFCB PUSH2 0xFA3 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xFE3 JUMPI PUSH2 0xFE3 PUSH2 0xFA3 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x104C JUMPI PUSH2 0x104C PUSH2 0xFA3 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1078 JUMPI PUSH2 0x1078 PUSH2 0x1053 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x108C JUMPI PUSH2 0x108C PUSH2 0x1053 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x10DA SWAP1 DUP4 ADD DUP5 PUSH2 0xC96 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x642 DUP2 PUSH2 0xC37 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0xEB95B420F2A01E6786C88E2B68253254E8 0xB5 SSTORE 0xED DUP8 SWAP1 SHR DUP6 0xC3 0xC8 SELFBALANCE 0xD4 0xC1 PUSH6 0xC464736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "751:14424:7:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 1707,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_baseURI_1060": {
                  "entryPoint": null,
                  "id": 1060,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 2870,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 1817,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 1609,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 2562,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 2356,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 1944,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 819,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 1273,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getApproved_1121": {
                  "entryPoint": 780,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 634,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 1177,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 1150,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 1437,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 1422,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 552,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 1407,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_2386": {
                  "entryPoint": 2613,
                  "id": 2386,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_1051": {
                  "entryPoint": 1493,
                  "id": 1051,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 1101,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 3310,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 3440,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3769,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 3380,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 3549,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 3467,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 3338,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 3149,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 4324,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 3285,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 3222,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 3956,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4263,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3266,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4072,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3878,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 4048,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 4201,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 4025,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 3178,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 3820,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 4154,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 4221,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 4003,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 4179,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 4241,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3527,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 3127,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:11012:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "645:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "655:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "664:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "659:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "724:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "749:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "754:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "745:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "745:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "768:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "773:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "764:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "764:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "758:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "758:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "738:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "738:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "685:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "688:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "682:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "682:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "696:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "698:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "707:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "710:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "703:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "703:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "678:3:46",
                                "statements": []
                              },
                              "src": "674:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "813:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "826:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "831:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "822:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "822:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "840:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "815:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "815:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "815:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "802:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "805:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "799:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "796:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "623:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "628:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "633:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "905:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "915:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "935:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "929:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "919:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "957:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "962:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "950:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "950:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1011:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1000:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1000:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1022:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1027:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1018:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1018:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1034:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "978:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "978:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "978:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1050:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1065:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1078:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1086:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1074:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1074:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1095:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1091:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1091:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1070:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1070:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1061:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1061:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1102:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1057:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1057:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1050:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "882:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "889:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "897:3:46",
                            "type": ""
                          }
                        ],
                        "src": "855:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1239:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1256:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1267:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1249:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1249:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1249:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1279:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1305:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1317:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1328:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1313:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1313:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1287:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1287:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1279:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1208:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1219:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1230:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1118:220:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1413:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1459:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1468:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1471:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1461:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1461:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1461:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1434:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1430:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1430:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1455:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1426:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1426:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1423:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1484:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1507:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1494:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1484:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1379:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1390:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1402:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1343:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1629:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1639:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1651:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1662:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1647:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1647:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1639:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1681:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1696:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1712:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1717:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1708:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1708:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1721:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1704:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1704:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1692:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1692:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1674:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1674:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1674:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1598:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1609:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1620:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1528:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1785:124:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1795:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1817:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1804:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1804:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1887:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1896:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1899:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1889:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1889:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1889:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1846:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1857:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1872:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1877:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1868:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1868:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1881:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1864:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1864:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1853:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1853:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1843:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1843:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1836:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1836:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1833:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1764:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1775:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1736:173:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2001:167:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2047:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2056:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2059:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2049:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2049:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2049:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2022:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2031:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2018:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2018:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2043:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2014:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2014:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2011:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2072:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2101:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2082:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2082:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2072:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2120:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2147:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2158:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2143:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2143:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2130:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2130:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2120:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1959:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1970:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1982:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1990:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1914:254:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2277:224:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2323:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2332:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2335:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2325:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2325:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2325:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2298:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2307:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2294:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2319:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2290:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2290:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2287:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2348:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2377:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2358:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2358:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2348:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2396:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2429:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2440:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2425:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2425:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2406:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2406:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2396:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2453:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2480:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2491:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2476:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2476:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2463:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2463:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2453:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2227:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2238:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2250:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2258:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2266:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2173:328:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2576:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2622:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2631:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2634:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2624:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2624:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2624:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2597:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2606:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2593:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2593:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2618:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2589:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2589:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2586:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2647:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2676:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2657:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2657:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2647:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2542:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2553:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2565:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2506:186:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2798:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2808:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2820:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2831:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2816:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2816:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2808:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2850:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2861:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2843:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2843:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2843:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2767:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2778:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2789:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2697:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2963:263:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3009:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3018:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3021:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3011:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3011:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3011:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2984:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2993:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2980:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2980:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3005:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2976:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2976:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2973:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3034:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3063:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3044:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3044:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3034:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3082:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3112:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3123:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3108:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3095:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3095:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3086:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3180:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3189:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3192:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3182:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3182:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3182:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3149:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3170:5:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "3163:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3163:13:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3156:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3156:21:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3146:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3146:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3139:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3139:40:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3136:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3205:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3215:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3205:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2921:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2932:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2944:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2952:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2879:347:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3263:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3280:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3287:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3292:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3283:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3283:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3273:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3273:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3273:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3320:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3323:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3313:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3313:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3313:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3344:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3347:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3337:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3337:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3337:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3231:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3493:1008:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3540:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3549:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3552:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3542:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3542:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3542:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3514:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3523:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3510:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3510:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3535:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3506:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3506:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3503:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3565:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3594:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3575:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3575:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3565:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3613:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3646:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3657:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3642:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3642:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3623:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3623:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3613:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3670:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3697:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3708:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3693:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3693:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3680:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3680:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3670:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3721:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3752:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3763:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3748:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3748:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3735:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3735:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3725:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3776:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3786:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3780:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3831:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3840:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3843:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3833:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3833:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3833:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3819:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3827:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3816:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3816:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3813:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3856:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3870:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3881:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3866:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3866:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3860:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3936:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3945:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3948:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3938:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3938:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3938:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3915:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3919:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3911:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3911:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3926:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3907:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3907:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3900:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3900:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3897:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3961:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3984:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3971:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3971:16:46"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "3965:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4010:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4012:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4012:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4012:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4002:2:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4006:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3999:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3999:10:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3996:36:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4041:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4055:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "4051:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4051:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "4045:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4067:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4087:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4081:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4081:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4071:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4099:71:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4121:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4145:2:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4149:4:46",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4141:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4141:13:46"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "4156:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "4137:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4137:22:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4161:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4133:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4133:31:46"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4166:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4129:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4129:40:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4117:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4117:53:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4103:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4229:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4231:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4231:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4231:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4188:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4200:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4185:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4185:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4208:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4220:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4205:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4205:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "4182:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4182:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4179:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4267:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4271:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4260:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4260:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4260:22:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4298:6:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4306:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4291:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4291:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4291:18:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4355:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4364:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4367:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4357:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4357:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4357:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4332:2:46"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4336:2:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4328:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4328:11:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4341:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4324:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4324:20:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4346:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4321:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4321:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4318:53:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4397:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4405:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4393:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4393:15:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4414:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4418:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4410:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4410:11:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4423:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4380:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4380:46:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4380:46:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4450:6:46"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4458:2:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4446:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4446:15:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4463:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4442:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4442:24:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4468:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4435:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4435:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4435:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4479:16:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "4489:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4479:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3435:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3446:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3458:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3466:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3474:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3482:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3363:1138:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4593:173:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4639:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4648:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4651:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4641:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4641:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4641:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4614:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4623:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4610:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4610:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4635:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4606:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4606:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4603:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4664:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4693:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4674:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4674:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4664:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4712:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4745:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4756:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4741:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4741:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4722:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4722:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4712:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4551:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4562:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4574:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4582:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4506:260:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4826:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4836:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4850:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "4853:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "4846:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4846:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "4836:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4867:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "4897:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4903:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "4893:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4893:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "4871:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4944:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4946:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "4960:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4968:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "4956:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4956:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "4946:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "4924:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4917:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4917:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4914:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5034:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5055:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5062:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5067:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "5058:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5058:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5048:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5048:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5048:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5099:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5102:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5092:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5092:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5092:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5127:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5130:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5120:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5120:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5120:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "4990:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5013:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5021:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5010:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5010:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "4987:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4987:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4984:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "4806:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4815:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4771:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5330:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5347:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5358:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5340:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5381:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5392:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5377:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5377:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5397:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5370:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5370:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5370:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5420:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5431:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5416:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5416:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5436:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5409:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5409:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5409:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5491:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5502:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5487:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5487:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5507:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5480:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5480:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5480:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5520:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5532:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5543:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5528:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5528:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5520:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5307:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5321:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5156:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5732:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5749:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5760:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5742:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5742:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5742:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5783:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5794:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5779:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5779:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5799:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5772:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5772:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5772:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5822:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5833:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5818:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5818:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5838:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5811:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5811:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5811:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5893:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5904:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5889:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5909:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5882:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5882:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5882:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5951:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5963:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5974:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5959:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5959:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5951:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5709:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5723:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5558:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6163:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6180:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6191:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6173:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6173:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6173:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6214:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6225:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6210:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6210:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6230:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6203:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6203:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6203:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6253:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6264:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6249:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6249:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6269:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6242:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6242:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6242:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6324:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6335:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6320:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6320:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6340:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6313:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6313:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6313:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6366:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6378:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6389:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6374:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6374:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6366:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6140:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6154:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5989:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6578:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6606:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6588:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6588:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6588:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6629:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6640:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6625:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6625:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6645:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6618:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6618:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6618:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6668:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6679:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6664:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6664:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6684:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6657:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6657:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6657:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6720:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6732:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6743:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6728:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6728:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6720:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6555:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6569:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6404:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6931:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6948:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6959:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6941:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6941:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6941:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6982:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6993:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6978:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6978:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6998:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6971:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6971:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6971:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7021:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7032:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7017:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7017:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7037:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7010:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7010:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7010:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7092:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7103:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7088:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7088:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7108:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7081:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7081:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7081:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7129:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7141:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7152:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7137:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7137:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7129:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6908:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6922:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6757:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7354:283:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7364:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7384:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7378:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7378:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7368:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7426:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7434:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7422:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7422:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7441:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7446:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "7400:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7400:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7400:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7462:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7479:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7484:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7475:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7475:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7466:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7500:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7522:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7516:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7516:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7504:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7564:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7572:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7560:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7560:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7579:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7586:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "7538:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7538:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7538:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7604:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7615:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7622:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7611:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7611:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7604:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7322:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7327:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7335:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7346:3:46",
                            "type": ""
                          }
                        ],
                        "src": "7167:470:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7816:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7833:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7844:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7826:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7826:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7826:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7867:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7878:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7863:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7863:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7883:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7856:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7856:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7856:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7906:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7917:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7902:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7902:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7922:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7895:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7895:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7895:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7977:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7988:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7973:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7973:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7993:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7966:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7966:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7966:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8010:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8022:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8033:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8018:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8018:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8010:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7793:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7807:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7642:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8222:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8239:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8250:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8232:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8232:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8232:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8273:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8284:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8269:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8269:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8289:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8262:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8262:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8262:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8312:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8323:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8308:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8308:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8328:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8301:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8301:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8301:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8383:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8394:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8379:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8379:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8399:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8372:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8372:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8372:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8415:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8427:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8438:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8423:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8423:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8415:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8199:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8213:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8048:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8485:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8502:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8509:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8514:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8505:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8505:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8495:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8495:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8495:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8542:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8545:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8535:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8535:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8535:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8566:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8569:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8559:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8559:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8559:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8453:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8634:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8656:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8658:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8658:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8658:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8650:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8653:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8647:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8647:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8644:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8687:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8699:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8702:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "8695:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8695:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "8687:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "8616:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "8619:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "8625:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8585:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8763:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8790:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8792:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8792:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8792:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8779:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "8786:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "8782:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8782:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8776:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8776:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8773:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8821:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8832:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8835:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8828:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8828:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "8821:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "8746:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "8749:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "8755:3:46",
                            "type": ""
                          }
                        ],
                        "src": "8715:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9022:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9039:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9050:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9032:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9032:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9032:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9073:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9084:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9069:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9069:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9089:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9062:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9062:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9062:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9112:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9123:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9108:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9128:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9101:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9101:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9101:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9165:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9177:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9188:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9173:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9173:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9165:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8999:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9013:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8848:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9376:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9393:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9404:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9386:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9386:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9386:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9427:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9438:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9423:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9423:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9443:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9416:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9416:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9416:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9466:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9477:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9462:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9462:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9482:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9455:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9455:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9455:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9537:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9548:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9533:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9533:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9553:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9526:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9526:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9526:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9583:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9595:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9606:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9591:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9591:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9583:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9353:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9367:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9202:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9668:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9699:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "9701:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9701:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9701:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9684:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9695:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "9691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9691:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "9681:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9681:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9678:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9730:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9741:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9748:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9737:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9737:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "9730:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "9650:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "9660:3:46",
                            "type": ""
                          }
                        ],
                        "src": "9621:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9793:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9810:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9817:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9822:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "9813:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9813:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9803:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9803:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9803:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9850:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9853:4:46",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9843:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9843:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9843:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9874:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9877:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "9867:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9867:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9867:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "9761:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9939:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9962:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "9964:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9964:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9964:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "9959:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9952:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9952:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9949:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9993:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10002:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "10005:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "9998:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9998:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "9993:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "9924:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "9927:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "9933:1:46",
                            "type": ""
                          }
                        ],
                        "src": "9893:120:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10056:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10079:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "10081:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10081:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10081:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "10076:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10069:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10069:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10066:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10110:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "10119:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "10122:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "10115:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10115:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "10110:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "10041:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "10044:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "10050:1:46",
                            "type": ""
                          }
                        ],
                        "src": "10018:112:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10167:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10184:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10191:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10196:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "10187:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10187:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10177:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10177:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10177:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10224:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10227:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10217:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10217:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10217:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10248:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10251:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "10241:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10241:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10241:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "10135:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10470:286:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10480:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10498:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10503:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "10494:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10494:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10507:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "10490:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10490:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10484:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10525:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10540:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10548:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10536:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10536:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10518:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10518:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10518:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10572:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10583:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10568:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10568:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10592:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10600:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10588:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10588:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10561:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10561:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10561:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10624:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10635:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10620:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10620:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10640:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10613:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10613:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10613:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10667:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10678:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10663:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10663:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10683:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10656:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10656:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10656:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10696:54:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "10722:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10734:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10745:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10730:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10730:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10704:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10704:46:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10696:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10415:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10426:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10434:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10442:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10450:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10461:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10267:489:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10841:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10887:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10896:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10899:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10889:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10889:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10889:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10862:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10871:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10858:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10858:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10883:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10854:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10854:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10851:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10912:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10931:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10925:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10925:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10916:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10974:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "10950:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10950:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10950:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10989:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10999:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10989:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10807:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10818:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10830:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10761:249:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c4d565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cc2565b61012461011f366004610cd5565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d0a565b610333565b005b61014f61015f366004610d34565b61044d565b61014f610172366004610d34565b61047e565b610124610185366004610cd5565b610499565b61019d610198366004610d70565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610d8b565b61058e565b61014f6101d4366004610ddd565b61059d565b6101046101e7366004610cd5565b6105d5565b6100e76101fa366004610eb9565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461028990610eec565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610eec565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152606960205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f26565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152606760205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526068602052604090205490565b60606066805461028990610eec565b610599338383610934565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f26565b6105cf84848484610a02565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b8061062184610a35565b604051602001610632929190610f74565b6040516020818303038152906040525b9392505050565b6000818152606760205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b03161461080f5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a7565b6001600160a01b0382166108715760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b61087c6000826106ab565b6001600160a01b03831660009081526068602052604081208054600192906108a5908490610fb9565b90915550506001600160a01b03821660009081526068602052604081208054600192906108d3908490610fd0565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b0316036109955760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0d848484610798565b610a1984848484610b36565b6105cf5760405162461bcd60e51b81526004016103a790610fe8565b606081600003610a5c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a865780610a708161103a565b9150610a7f9050600a83611069565b9150610a60565b60008167ffffffffffffffff811115610aa157610aa1610dc7565b6040519080825280601f01601f191660200182016040528015610acb576020820181803683370190505b5090505b841561079057610ae0600183610fb9565b9150610aed600a8661107d565b610af8906030610fd0565b60f81b818381518110610b0d57610b0d611091565b60200101906001600160f81b031916908160001a905350610b2f600a86611069565b9450610acf565b60006001600160a01b0384163b15610c2c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b7a9033908990889088906004016110a7565b6020604051808303816000875af1925050508015610bb5575060408051601f3d908101601f19168201909252610bb2918101906110e4565b60015b610c12573d808015610be3576040519150601f19603f3d011682016040523d82523d6000602084013e610be8565b606091505b508051600003610c0a5760405162461bcd60e51b81526004016103a790610fe8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c5f57600080fd5b813561064281610c37565b60005b83811015610c85578181015183820152602001610c6d565b838111156105cf5750506000910152565b60008151808452610cae816020860160208601610c6a565b601f01601f19169290920160200192915050565b6020815260006106426020830184610c96565b600060208284031215610ce757600080fd5b5035919050565b80356001600160a01b0381168114610d0557600080fd5b919050565b60008060408385031215610d1d57600080fd5b610d2683610cee565b946020939093013593505050565b600080600060608486031215610d4957600080fd5b610d5284610cee565b9250610d6060208501610cee565b9150604084013590509250925092565b600060208284031215610d8257600080fd5b61064282610cee565b60008060408385031215610d9e57600080fd5b610da783610cee565b915060208301358015158114610dbc57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610df357600080fd5b610dfc85610cee565b9350610e0a60208601610cee565b925060408501359150606085013567ffffffffffffffff80821115610e2e57600080fd5b818701915087601f830112610e4257600080fd5b813581811115610e5457610e54610dc7565b604051601f8201601f19908116603f01168101908382118183101715610e7c57610e7c610dc7565b816040528281528a6020848701011115610e9557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ecc57600080fd5b610ed583610cee565b9150610ee360208401610cee565b90509250929050565b600181811c90821680610f0057607f821691505b602082108103610f2057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f86818460208801610c6a565b835190830190610f9a818360208801610c6a565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fcb57610fcb610fa3565b500390565b60008219821115610fe357610fe3610fa3565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161104c5761104c610fa3565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261107857611078611053565b500490565b60008261108c5761108c611053565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110da90830184610c96565b9695505050505050565b6000602082840312156110f657600080fd5b815161064281610c3756fea264697066735822122070eb95b420f2a01e6786c88e2b68253254e8b555ed87901c85c3c847d4c165c464736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC4D JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xCC2 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xD0A JUMP JUMPDEST PUSH2 0x333 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x44D JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xD70 JUMP JUMPDEST PUSH2 0x4F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xD8B JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x59D JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x5D5 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xEB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x259 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x274 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xEEC JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B5 SWAP1 PUSH2 0xEEC JUMP JUMPDEST DUP1 ISZERO PUSH2 0x302 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x302 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317 DUP3 PUSH2 0x649 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E DUP3 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3CC JUMPI POP PUSH2 0x3CC DUP2 CALLER PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 PUSH2 0x6AB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x457 CALLER DUP3 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x59D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x599 CALLER DUP4 DUP4 PUSH2 0x934 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5A7 CALLER DUP4 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x5CF DUP5 DUP5 DUP5 DUP5 PUSH2 0xA02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5E0 DUP3 PUSH2 0x649 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F7 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x642 JUMP JUMPDEST DUP1 PUSH2 0x621 DUP5 PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x632 SWAP3 SWAP2 SWAP1 PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E0 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x725 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x76C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x790 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x785 DUP5 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AB DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x80F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x871 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x87C PUSH1 0x0 DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8A5 SWAP1 DUP5 SWAP1 PUSH2 0xFB9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8D3 SWAP1 DUP5 SWAP1 PUSH2 0xFD0 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x995 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA0D DUP5 DUP5 DUP5 PUSH2 0x798 JUMP JUMPDEST PUSH2 0xA19 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB36 JUMP JUMPDEST PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFE8 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0xA5C JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xA86 JUMPI DUP1 PUSH2 0xA70 DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP2 POP PUSH2 0xA7F SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x1069 JUMP JUMPDEST SWAP2 POP PUSH2 0xA60 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAA1 JUMPI PUSH2 0xAA1 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xACB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x790 JUMPI PUSH2 0xAE0 PUSH1 0x1 DUP4 PUSH2 0xFB9 JUMP JUMPDEST SWAP2 POP PUSH2 0xAED PUSH1 0xA DUP7 PUSH2 0x107D JUMP JUMPDEST PUSH2 0xAF8 SWAP1 PUSH1 0x30 PUSH2 0xFD0 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB0D JUMPI PUSH2 0xB0D PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xB2F PUSH1 0xA DUP7 PUSH2 0x1069 JUMP JUMPDEST SWAP5 POP PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xC2C JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xB7A SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xBB5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xBB2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10E4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC12 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFE8 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x790 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x642 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC85 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC6D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x5CF JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xCAE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xC6A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x642 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD26 DUP4 PUSH2 0xCEE JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD52 DUP5 PUSH2 0xCEE JUMP JUMPDEST SWAP3 POP PUSH2 0xD60 PUSH1 0x20 DUP6 ADD PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x642 DUP3 PUSH2 0xCEE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA7 DUP4 PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xDF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFC DUP6 PUSH2 0xCEE JUMP JUMPDEST SWAP4 POP PUSH2 0xE0A PUSH1 0x20 DUP7 ADD PUSH2 0xCEE JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE54 JUMPI PUSH2 0xE54 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xE7C JUMPI PUSH2 0xE7C PUSH2 0xDC7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xECC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED5 DUP4 PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP PUSH2 0xEE3 PUSH1 0x20 DUP5 ADD PUSH2 0xCEE JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF00 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF20 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xF86 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xC6A JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xF9A DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xC6A JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xFCB JUMPI PUSH2 0xFCB PUSH2 0xFA3 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xFE3 JUMPI PUSH2 0xFE3 PUSH2 0xFA3 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x104C JUMPI PUSH2 0x104C PUSH2 0xFA3 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1078 JUMPI PUSH2 0x1078 PUSH2 0x1053 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x108C JUMPI PUSH2 0x108C PUSH2 0x1053 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x10DA SWAP1 DUP4 ADD DUP5 PUSH2 0xC96 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x642 DUP2 PUSH2 0xC37 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0xEB95B420F2A01E6786C88E2B68253254E8 0xB5 SSTORE 0xED DUP8 SWAP1 SHR DUP6 0xC3 0xC8 SELFBALANCE 0xD4 0xC1 PUSH6 0xC464736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "751:14424:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1987:344;;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;1987:344:7;;;;;;;;2931:98;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:46;;;1674:51;;1662:2;1647:18;4407:167:7;1528:203:46;3928:418:7;;;;;;:::i;:::-;;:::i;:::-;;5084:327;;;;;;:::i;:::-;;:::i;5477:179::-;;;;;;:::i;:::-;;:::i;2651:218::-;;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2843:25:46;;;2831:2;2816:18;2390:204:7;2697:177:46;3093:102:7;;;:::i;4641:153::-;;;;;;:::i;:::-;;:::i;5722:315::-;;;;;;:::i;:::-;;:::i;3261:276::-;;;;;;:::i;:::-;;:::i;4860:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;1987:344;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;2127:197;1987:344;-1:-1:-1;;1987:344:7:o;2931:98::-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;5358:2:46;4068:57:7;;;5340:21:46;5397:2;5377:18;;;5370:30;5436:34;5416:18;;;5409:62;-1:-1:-1;;;5487:18:46;;;5480:31;5528:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;5760:2:46;4136:171:7;;;5742:21:46;5799:2;5779:18;;;5772:30;5838:34;5818:18;;;5811:62;5909:32;5889:18;;;5882:60;5959:19;;4136:171:7;5558:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;5084:327::-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;5477:179::-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;2651:218::-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;6606:2:46;2784:56:7;;;6588:21:46;6645:2;6625:18;;;6618:30;-1:-1:-1;;;6664:18:46;;;6657:54;6728:18;;2784:56:7;6404:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;6959:2:46;2481:73:7;;;6941:21:46;6998:2;6978:18;;;6971:30;7037:34;7017:18;;;7010:62;-1:-1:-1;;;7088:18:46;;;7081:39;7137:19;;2481:73:7;6757:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;3093:102::-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;:::-;4641:153;;:::o;5722:315::-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;3261:276::-;3334:13;3359:23;3374:7;3359:14;:23::i;:::-;3393:21;3417:10;3855:9;;;;;;;;;-1:-1:-1;3855:9:7;;;3779:92;3417:10;3393:34;;3468:1;3450:7;3444:21;:25;:86;;;;;;;;;;;;;;;;;3496:7;3505:18;:7;:16;:18::i;:::-;3479:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3444:86;3437:93;3261:276;-1:-1:-1;;;3261:276:7:o;12173:133::-;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;6606:2:46;12246:53:7;;;6588:21:46;6645:2;6625:18;;;6618:30;-1:-1:-1;;;6664:18:46;;;6657:54;6728:18;;12246:53:7;6404:348:46;12246:53:7;12173:133;:::o;11464:182::-;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;7789:272::-;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;7844:2:46;10855:92:7;;;7826:21:46;7883:2;7863:18;;;7856:30;7922:34;7902:18;;;7895:62;-1:-1:-1;;;7973:18:46;;;7966:35;8018:19;;10855:92:7;7642:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;8250:2:46;10957:65:7;;;8232:21:46;8289:2;8269:18;;;8262:30;8328:34;8308:18;;;8301:62;-1:-1:-1;;;8379:18:46;;;8372:34;8423:19;;10957:65:7;8048:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;11782:307::-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;9050:2:46;11915:55:7;;;9032:21:46;9089:2;9069:18;;;9062:30;9128:27;9108:18;;;9101:55;9173:18;;11915:55:7;8848:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;403:703:15:-;459:13;676:5;685:1;676:10;672:51;;-1:-1:-1;;702:10:15;;;;;;;;;;;;-1:-1:-1;;;702:10:15;;;;;403:703::o;672:51::-;747:5;732:12;786:75;793:9;;786:75;;818:8;;;;:::i;:::-;;-1:-1:-1;840:10:15;;-1:-1:-1;848:2:15;840:10;;:::i;:::-;;;786:75;;;870:19;902:6;892:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:17:15;;870:39;;919:150;926:10;;919:150;;952:11;962:1;952:11;;:::i;:::-;;-1:-1:-1;1020:10:15;1028:2;1020:5;:10;:::i;:::-;1007:24;;:2;:24;:::i;:::-;994:39;;977:6;984;977:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;977:56:15;;;;;;;;-1:-1:-1;1047:11:15;1056:2;1047:11;;:::i;:::-;;;919:150;;12858:853:7;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;12858:853;;;;;;:::o;14:131:46:-;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:46;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:46;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:46:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:46;;1343:180;-1:-1:-1;1343:180:46:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:46;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:46:o;2173:328::-;2250:6;2258;2266;2319:2;2307:9;2298:7;2294:23;2290:32;2287:52;;;2335:1;2332;2325:12;2287:52;2358:29;2377:9;2358:29;:::i;:::-;2348:39;;2406:38;2440:2;2429:9;2425:18;2406:38;:::i;:::-;2396:48;;2491:2;2480:9;2476:18;2463:32;2453:42;;2173:328;;;;;:::o;2506:186::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;2657:29;2676:9;2657:29;:::i;2879:347::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3044:29;3063:9;3044:29;:::i;:::-;3034:39;;3123:2;3112:9;3108:18;3095:32;3170:5;3163:13;3156:21;3149:5;3146:32;3136:60;;3192:1;3189;3182:12;3136:60;3215:5;3205:15;;;2879:347;;;;;:::o;3231:127::-;3292:10;3287:3;3283:20;3280:1;3273:31;3323:4;3320:1;3313:15;3347:4;3344:1;3337:15;3363:1138;3458:6;3466;3474;3482;3535:3;3523:9;3514:7;3510:23;3506:33;3503:53;;;3552:1;3549;3542:12;3503:53;3575:29;3594:9;3575:29;:::i;:::-;3565:39;;3623:38;3657:2;3646:9;3642:18;3623:38;:::i;:::-;3613:48;;3708:2;3697:9;3693:18;3680:32;3670:42;;3763:2;3752:9;3748:18;3735:32;3786:18;3827:2;3819:6;3816:14;3813:34;;;3843:1;3840;3833:12;3813:34;3881:6;3870:9;3866:22;3856:32;;3926:7;3919:4;3915:2;3911:13;3907:27;3897:55;;3948:1;3945;3938:12;3897:55;3984:2;3971:16;4006:2;4002;3999:10;3996:36;;;4012:18;;:::i;:::-;4087:2;4081:9;4055:2;4141:13;;-1:-1:-1;;4137:22:46;;;4161:2;4133:31;4129:40;4117:53;;;4185:18;;;4205:22;;;4182:46;4179:72;;;4231:18;;:::i;:::-;4271:10;4267:2;4260:22;4306:2;4298:6;4291:18;4346:7;4341:2;4336;4332;4328:11;4324:20;4321:33;4318:53;;;4367:1;4364;4357:12;4318:53;4423:2;4418;4414;4410:11;4405:2;4397:6;4393:15;4380:46;4468:1;4463:2;4458;4450:6;4446:15;4442:24;4435:35;4489:6;4479:16;;;;;;;3363:1138;;;;;;;:::o;4506:260::-;4574:6;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4674:29;4693:9;4674:29;:::i;:::-;4664:39;;4722:38;4756:2;4745:9;4741:18;4722:38;:::i;:::-;4712:48;;4506:260;;;;;:::o;4771:380::-;4850:1;4846:12;;;;4893;;;4914:61;;4968:4;4960:6;4956:17;4946:27;;4914:61;5021:2;5013:6;5010:14;4990:18;4987:38;4984:161;;5067:10;5062:3;5058:20;5055:1;5048:31;5102:4;5099:1;5092:15;5130:4;5127:1;5120:15;4984:161;;4771:380;;;:::o;5989:410::-;6191:2;6173:21;;;6230:2;6210:18;;;6203:30;6269:34;6264:2;6249:18;;6242:62;-1:-1:-1;;;6335:2:46;6320:18;;6313:44;6389:3;6374:19;;5989:410::o;7167:470::-;7346:3;7384:6;7378:13;7400:53;7446:6;7441:3;7434:4;7426:6;7422:17;7400:53;:::i;:::-;7516:13;;7475:16;;;;7538:57;7516:13;7475:16;7572:4;7560:17;;7538:57;:::i;:::-;7611:20;;7167:470;-1:-1:-1;;;;7167:470:46:o;8453:127::-;8514:10;8509:3;8505:20;8502:1;8495:31;8545:4;8542:1;8535:15;8569:4;8566:1;8559:15;8585:125;8625:4;8653:1;8650;8647:8;8644:34;;;8658:18;;:::i;:::-;-1:-1:-1;8695:9:46;;8585:125::o;8715:128::-;8755:3;8786:1;8782:6;8779:1;8776:13;8773:39;;;8792:18;;:::i;:::-;-1:-1:-1;8828:9:46;;8715:128::o;9202:414::-;9404:2;9386:21;;;9443:2;9423:18;;;9416:30;9482:34;9477:2;9462:18;;9455:62;-1:-1:-1;;;9548:2:46;9533:18;;9526:48;9606:3;9591:19;;9202:414::o;9621:135::-;9660:3;9681:17;;;9678:43;;9701:18;;:::i;:::-;-1:-1:-1;9748:1:46;9737:13;;9621:135::o;9761:127::-;9822:10;9817:3;9813:20;9810:1;9803:31;9853:4;9850:1;9843:15;9877:4;9874:1;9867:15;9893:120;9933:1;9959;9949:35;;9964:18;;:::i;:::-;-1:-1:-1;9998:9:46;;9893:120::o;10018:112::-;10050:1;10076;10066:35;;10081:18;;:::i;:::-;-1:-1:-1;10115:9:46;;10018:112::o;10135:127::-;10196:10;10191:3;10187:20;10184:1;10177:31;10227:4;10224:1;10217:15;10251:4;10248:1;10241:15;10267:489;-1:-1:-1;;;;;10536:15:46;;;10518:34;;10588:15;;10583:2;10568:18;;10561:43;10635:2;10620:18;;10613:34;;;10683:3;10678:2;10663:18;;10656:31;;;10461:4;;10704:46;;10730:19;;10722:6;10704:46;:::i;:::-;10696:54;10267:489;-1:-1:-1;;;;;;10267:489:46:o;10761:249::-;10830:6;10883:2;10871:9;10862:7;10858:23;10854:32;10851:52;;;10899:1;10896;10889:12;10851:52;10931:9;10925:16;10950:30;10974:5;10950:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "881400",
                "executionCost": "916",
                "totalCost": "882316"
              },
              "external": {
                "approve(address,uint256)": "infinite",
                "balanceOf(address)": "2634",
                "getApproved(uint256)": "4769",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "ownerOf(uint256)": "2561",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26705",
                "supportsInterface(bytes4)": "511",
                "symbol()": "infinite",
                "tokenURI(uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite"
              },
              "internal": {
                "__ERC721_init(string memory,string memory)": "infinite",
                "__ERC721_init_unchained(string memory,string memory)": "infinite",
                "_afterTokenTransfer(address,address,uint256)": "infinite",
                "_approve(address,uint256)": "infinite",
                "_baseURI()": "infinite",
                "_beforeTokenTransfer(address,address,uint256)": "infinite",
                "_burn(uint256)": "infinite",
                "_checkOnERC721Received(address,address,uint256,bytes memory)": "infinite",
                "_exists(uint256)": "infinite",
                "_isApprovedOrOwner(address,uint256)": "infinite",
                "_mint(address,uint256)": "infinite",
                "_requireMinted(uint256)": "infinite",
                "_safeMint(address,uint256)": "infinite",
                "_safeMint(address,uint256,bytes memory)": "infinite",
                "_safeTransfer(address,address,uint256,bytes memory)": "infinite",
                "_setApprovalForAll(address,address,bool)": "infinite",
                "_transfer(address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":\"ERC721Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol": {
        "IERC721ReceiverUpgradeable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC721Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.",
            "kind": "dev",
            "methods": {
              "onERC721Received(address,address,uint256,bytes)": {
                "details": "Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."
              }
            },
            "title": "ERC721 token receiver interface",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "onERC721Received(address,address,uint256,bytes)": "150b7a02"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":\"IERC721ReceiverUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol": {
        "IERC721Upgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Required interface of an ERC721 compliant contract.",
            "events": {
              "Approval(address,address,uint256)": {
                "details": "Emitted when `owner` enables `approved` to manage the `tokenId` token."
              },
              "ApprovalForAll(address,address,bool)": {
                "details": "Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."
              },
              "Transfer(address,address,uint256)": {
                "details": "Emitted when `tokenId` token is transferred from `from` to `to`."
              }
            },
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the number of tokens in ``owner``'s account."
              },
              "getApproved(uint256)": {
                "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"
              },
              "ownerOf(uint256)": {
                "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":\"IERC721Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol": {
        "IERC721MetadataUpgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "See https://eips.ethereum.org/EIPS/eip-721",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the number of tokens in ``owner``'s account."
              },
              "getApproved(uint256)": {
                "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "isApprovedForAll(address,address)": {
                "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"
              },
              "name()": {
                "details": "Returns the token collection name."
              },
              "ownerOf(uint256)": {
                "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."
              },
              "setApprovalForAll(address,bool)": {
                "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."
              },
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              },
              "symbol()": {
                "details": "Returns the token collection symbol."
              },
              "tokenURI(uint256)": {
                "details": "Returns the Uniform Resource Identifier (URI) for `tokenId` token."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."
              }
            },
            "title": "ERC-721 Non-Fungible Token Standard, optional metadata extension",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":\"IERC721MetadataUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {
        "AddressUpgradeable": {
          "abi": [],
          "devdoc": {
            "details": "Collection of functions related to the address type",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200295badef3a95260b3150334911b253393bb8818ebca2e4bd5011d382f7991e764736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL SWAP6 0xBA 0xDE RETURN 0xA9 MSTORE PUSH1 0xB3 ISZERO SUB CALLVALUE SWAP2 SHL 0x25 CALLER SWAP4 0xBB DUP9 XOR 0xEB 0xCA 0x2E 0x4B 0xD5 ADD SAR CODESIZE 0x2F PUSH26 0x91E764736F6C634300080E003300000000000000000000000000 ",
              "sourceMap": "194:7172:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:7172:11;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200295badef3a95260b3150334911b253393bb8818ebca2e4bd5011d382f7991e764736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL SWAP6 0xBA 0xDE RETURN 0xA9 MSTORE PUSH1 0xB3 ISZERO SUB CALLVALUE SWAP2 SHL 0x25 CALLER SWAP4 0xBB DUP9 XOR 0xEB 0xCA 0x2E 0x4B 0xD5 ADD SAR CODESIZE 0x2F PUSH26 0x91E764736F6C634300080E003300000000000000000000000000 ",
              "sourceMap": "194:7172:11:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "functionCall(address,bytes memory)": "infinite",
                "functionCall(address,bytes memory,string memory)": "infinite",
                "functionCallWithValue(address,bytes memory,uint256)": "infinite",
                "functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
                "functionStaticCall(address,bytes memory)": "infinite",
                "functionStaticCall(address,bytes memory,string memory)": "infinite",
                "isContract(address)": "infinite",
                "sendValue(address payable,uint256)": "infinite",
                "verifyCallResult(bool,bytes memory,string memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
        "ContextUpgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            }
          ],
          "devdoc": {
            "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
            "kind": "dev",
            "methods": {},
            "stateVariables": {
              "__gap": {
                "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              }
            ],
            "types": {
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol": {
        "CountersUpgradeable": {
          "abi": [],
          "devdoc": {
            "author": "Matt Condon (@shrugs)",
            "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`",
            "kind": "dev",
            "methods": {},
            "title": "Counters",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220870afd9f30aa519721d8de30945008211e1314ecaeec33bb9c575c7e0e185aa064736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 EXP REVERT SWAP16 ADDRESS 0xAA MLOAD SWAP8 0x21 0xD8 0xDE ADDRESS SWAP5 POP ADDMOD 0x21 0x1E SGT EQ 0xEC 0xAE 0xEC CALLER 0xBB SWAP13 JUMPI 0x5C PUSH31 0xE185AA064736F6C634300080E003300000000000000000000000000000000 ",
              "sourceMap": "424:982:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:982:13;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220870afd9f30aa519721d8de30945008211e1314ecaeec33bb9c575c7e0e185aa064736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 EXP REVERT SWAP16 ADDRESS 0xAA MLOAD SWAP8 0x21 0xD8 0xDE ADDRESS SWAP5 POP ADDMOD 0x21 0x1E SGT EQ 0xEC 0xAE 0xEC CALLER 0xBB SWAP13 JUMPI 0x5C PUSH31 0xE185AA064736F6C634300080E003300000000000000000000000000000000 ",
              "sourceMap": "424:982:13:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "current(struct CountersUpgradeable.Counter storage pointer)": "infinite",
                "decrement(struct CountersUpgradeable.Counter storage pointer)": "infinite",
                "increment(struct CountersUpgradeable.Counter storage pointer)": "infinite",
                "reset(struct CountersUpgradeable.Counter storage pointer)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":\"CountersUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol": {
        "StorageSlotUpgradeable": {
          "abi": [],
          "devdoc": {
            "details": "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`._",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d5f0cd50452dd971bb7c909d912fe2397d5bf54a15f7426029969cd141e0f1fe64736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 CREATE 0xCD POP GASLIMIT 0x2D 0xD9 PUSH18 0xBB7C909D912FE2397D5BF54A15F742602996 SWAP13 0xD1 COINBASE 0xE0 CALL INVALID PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "1279:1402:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1279:1402:14;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d5f0cd50452dd971bb7c909d912fe2397d5bf54a15f7426029969cd141e0f1fe64736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 CREATE 0xCD POP GASLIMIT 0x2D 0xD9 PUSH18 0xBB7C909D912FE2397D5BF54A15F742602996 SWAP13 0xD1 COINBASE 0xE0 CALL INVALID PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "1279:1402:14:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "getAddressSlot(bytes32)": "infinite",
                "getBooleanSlot(bytes32)": "infinite",
                "getBytes32Slot(bytes32)": "infinite",
                "getUint256Slot(bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":\"StorageSlotUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": {
        "StringsUpgradeable": {
          "abi": [],
          "devdoc": {
            "details": "String operations.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f33880d5571c96fc449cb0d159bb2ed11a9899c024d0d398e05be688c894cb0064736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN CODESIZE DUP1 0xD5 JUMPI SHR SWAP7 0xFC DIFFICULTY SWAP13 0xB0 0xD1 MSIZE 0xBB 0x2E 0xD1 BYTE SWAP9 SWAP10 0xC0 0x24 0xD0 0xD3 SWAP9 0xE0 JUMPDEST 0xE6 DUP9 0xC8 SWAP5 0xCB STOP PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "161:2246:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2246:15;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f33880d5571c96fc449cb0d159bb2ed11a9899c024d0d398e05be688c894cb0064736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN CODESIZE DUP1 0xD5 JUMPI SHR SWAP7 0xFC DIFFICULTY SWAP13 0xB0 0xD1 MSIZE 0xBB 0x2E 0xD1 BYTE SWAP9 SWAP10 0xC0 0x24 0xD0 0xD3 SWAP9 0xE0 JUMPDEST 0xE6 DUP9 0xC8 SWAP5 0xCB STOP PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "161:2246:15:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "toHexString(address)": "infinite",
                "toHexString(uint256)": "infinite",
                "toHexString(uint256,uint256)": "infinite",
                "toString(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":\"StringsUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol": {
        "ECDSAUpgradeable": {
          "abi": [],
          "devdoc": {
            "details": "Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122019dbf116aedb32e6aa32cbb29d024c7427c951213008333ef8e7264b95e9d47e64736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT 0xDB CALL AND 0xAE 0xDB ORIGIN 0xE6 0xAA ORIGIN 0xCB 0xB2 SWAP14 MUL 0x4C PUSH21 0x27C951213008333EF8E7264B95E9D47E64736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "380:9040:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;380:9040:16;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122019dbf116aedb32e6aa32cbb29d024c7427c951213008333ef8e7264b95e9d47e64736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT 0xDB CALL AND 0xAE 0xDB ORIGIN 0xE6 0xAA ORIGIN 0xCB 0xB2 SWAP14 MUL 0x4C PUSH21 0x27C951213008333EF8E7264B95E9D47E64736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "380:9040:16:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "_throwError(enum ECDSAUpgradeable.RecoverError)": "infinite",
                "recover(bytes32,bytes memory)": "infinite",
                "recover(bytes32,bytes32,bytes32)": "infinite",
                "recover(bytes32,uint8,bytes32,bytes32)": "infinite",
                "toEthSignedMessageHash(bytes memory)": "infinite",
                "toEthSignedMessageHash(bytes32)": "infinite",
                "toTypedDataHash(bytes32,bytes32)": "infinite",
                "tryRecover(bytes32,bytes memory)": "infinite",
                "tryRecover(bytes32,bytes32,bytes32)": "infinite",
                "tryRecover(bytes32,uint8,bytes32,bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":\"ECDSAUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": {
        "ERC165Upgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.",
            "kind": "dev",
            "methods": {
              "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
              }
            },
            "stateVariables": {
              "__gap": {
                "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2974,
                "contract": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              }
            ],
            "types": {
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": {
        "IERC165Upgradeable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.",
            "kind": "dev",
            "methods": {
              "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":\"IERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/access/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Initializes the contract setting the deployer as the initial owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 2995,
                "contract": "@openzeppelin/contracts/access/Ownable.sol:Ownable",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
        "IERC1822Proxiable": {
          "abi": [
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.",
            "kind": "dev",
            "methods": {
              "proxiableUUID()": {
                "details": "Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "proxiableUUID()": "52d1902d"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
        "ERC1967Proxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "devdoc": {
            "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.",
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_3134": {
                  "entryPoint": null,
                  "id": 3134,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setImplementation_3203": {
                  "entryPoint": 215,
                  "id": 3203,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeToAndCall_3248": {
                  "entryPoint": 53,
                  "id": 3248,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeTo_3218": {
                  "entryPoint": 107,
                  "id": 3218,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@functionDelegateCall_3896": {
                  "entryPoint": 171,
                  "id": 3896,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3931": {
                  "entryPoint": 425,
                  "id": 3931,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_4011": {
                  "entryPoint": 662,
                  "id": 4011,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3686": {
                  "entryPoint": 647,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3962": {
                  "entryPoint": 665,
                  "id": 3962,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 788,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 994,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1022,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 744,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 722,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2949:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "63:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "70:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "75:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "66:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "66:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "56:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "56:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "56:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "106:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "96:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "127:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "130:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "120:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "199:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "209:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "218:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "213:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "278:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "303:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "308:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "299:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "299:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "322:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "327:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "318:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "318:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "312:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "312:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "292:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "292:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "292:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "242:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "236:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "236:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "250:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "252:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "261:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "264:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "257:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "257:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "252:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "232:3:46",
                                "statements": []
                              },
                              "src": "228:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "367:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "380:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "385:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "376:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "376:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "394:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "369:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "369:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "369:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "356:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "353:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "353:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "350:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "177:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "182:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "187:6:46",
                            "type": ""
                          }
                        ],
                        "src": "146:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "516:943:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "562:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "571:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "574:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "564:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "564:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "564:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "537:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "546:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "533:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "533:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "558:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "529:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "529:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "526:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "587:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "606:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "600:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "600:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "591:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "679:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "688:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "691:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "681:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "681:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "681:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "638:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "649:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "664:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "669:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "660:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "660:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "673:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "656:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "656:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "645:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "645:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "635:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "635:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "628:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "628:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "625:70:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "704:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "714:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "704:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "728:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "752:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "763:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "748:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "748:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "742:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "742:25:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "732:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "776:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "794:2:46",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "798:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "790:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "790:10:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "802:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "786:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "786:18:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "780:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "831:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "840:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "843:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "833:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "833:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "833:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "819:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "827:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "816:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "816:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "813:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "856:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "870:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "881:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "866:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "866:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "860:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "936:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "945:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "948:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "938:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "938:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "938:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "915:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "919:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "911:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "911:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "926:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "907:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "907:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "900:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "900:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "897:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "961:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "977:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "971:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "971:9:46"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "965:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1003:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1005:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1005:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1005:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "995:2:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "999:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "992:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "992:10:46"
                              },
                              "nodeType": "YulIf",
                              "src": "989:36:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1034:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1048:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1044:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1044:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1038:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1060:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1080:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1074:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1074:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1064:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1092:71:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1114:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1138:2:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1142:4:46",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1134:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1134:13:46"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1149:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1130:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1130:22:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1154:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1126:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1126:31:46"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1159:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1122:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1122:40:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1110:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1110:53:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1096:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1222:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1224:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1224:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1224:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1181:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1193:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1178:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1178:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1201:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1213:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1198:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1198:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1175:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1175:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1172:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1260:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1264:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1253:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1253:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1253:22:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1291:6:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1299:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1284:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1284:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1284:18:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1348:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1357:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1360:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1350:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1350:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1350:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1325:2:46"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1329:2:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1321:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1321:11:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1334:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1317:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1317:20:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1339:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1314:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1314:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1311:53:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1399:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1403:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1395:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1395:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1412:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1420:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1408:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1408:15:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1425:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1373:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1373:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1373:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1437:16:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1447:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1437:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "474:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "485:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "497:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "505:6:46",
                            "type": ""
                          }
                        ],
                        "src": "409:1050:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1638:235:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1655:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1666:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1648:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1648:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1689:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1700:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1685:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1685:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1705:2:46",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1678:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1678:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1678:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1728:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1739:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1724:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1724:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1744:34:46",
                                    "type": "",
                                    "value": "ERC1967: new implementation is n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1717:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1717:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1799:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1810:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1795:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1795:18:46"
                                  },
                                  {
                                    "hexValue": "6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1815:15:46",
                                    "type": "",
                                    "value": "ot a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1788:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1788:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1788:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1840:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1852:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1863:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1848:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1848:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1840:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1615:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1629:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1464:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2052:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2069:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2080:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2062:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2062:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2062:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2103:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2114:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2099:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2099:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2119:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2092:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2092:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2092:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2142:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2153:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2138:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2138:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2158:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2131:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2131:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2131:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2213:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2224:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2209:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2209:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2229:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2202:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2202:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2202:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2247:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2259:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2270:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2255:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2255:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2247:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2029:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2043:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1878:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2422:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2432:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2452:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2446:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2446:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2436:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2494:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2502:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2490:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2490:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2509:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2514:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2468:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2468:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2468:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2530:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2541:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2546:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2537:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2537:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2530:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2398:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2403:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2414:3:46",
                            "type": ""
                          }
                        ],
                        "src": "2285:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2685:262:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2702:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2713:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2695:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2695:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2695:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2725:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2745:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2739:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2739:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2729:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2772:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2783:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2768:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2768:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2788:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2761:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2761:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2761:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2830:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2838:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2826:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2826:15:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2847:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2858:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2843:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2843:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2863:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2804:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2804:66:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2804:66:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2879:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2895:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2914:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2922:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2910:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2910:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2931:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2927:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2927:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2906:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2906:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2891:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2891:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2938:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2887:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2887:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2879:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2654:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2665:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2676:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2564:383:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n        mstore(add(headStart, 96), \"ot a contract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220409017758fa83e4c13e1f392f1e68d1ef56e899c0e50c253bf3f4ce1c5cbfab064736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x721 CODESIZE SUB DUP1 PUSH2 0x721 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x314 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x431 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6FA PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x287 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x296 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x211 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x148 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x3E2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x267 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x27D DUP3 DUP3 DUP7 PUSH2 0x299 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A8 JUMPI POP DUP2 PUSH2 0xD0 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x2B8 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x3FE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x303 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2EB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x64 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x33E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x381 JUMPI PUSH2 0x381 PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3A9 JUMPI PUSH2 0x3A9 PUSH2 0x2D2 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D3 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2E8 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2E8 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x41D DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2E8 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2BA DUP1 PUSH2 0x440 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x130 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x14B SWAP2 SWAP1 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x19B DUP3 DUP3 DUP7 PUSH2 0x1A5 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1B4 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1C4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x22A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E1 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x220 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x249 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220409017 PUSH22 0x8FA83E4C13E1F392F1E68D1EF56E899C0E50C253BF3F 0x4C 0xE1 0xC5 0xCB STATICCALL 0xB0 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65640000 ",
              "sourceMap": "567:723:21:-:0;;;958:112;;;;;;;;;;;;;;;;;;:::i;:::-;1024:39;1042:6;1050:5;1057;1024:17;:39::i;:::-;958:112;;567:723;;2183:295:22;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;;;;;:53;;:::i;:::-;;2360:112;2183:295;;;:::o;1897:152::-;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:22;;;;;;;;1897:152;:::o;6570:198:27:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:27:o;1532:259:22:-;1613:37;1632:17;1613:18;;;;;:37;;:::i;:::-;1605:95;;;;-1:-1:-1;;;1605:95:22;;1666:2:46;1605:95:22;;;1648:21:46;1705:2;1685:18;;;1678:30;1744:34;1724:18;;;1717:62;-1:-1:-1;;;1795:18:46;;;1788:43;1848:19;;1605:95:22;;;;;;;;;1767:17;1710:48;1030:66;1737:20;;1710:26;;;;;:48;;:::i;:::-;:74;;-1:-1:-1;;;;;;1710:74:22;-1:-1:-1;;;;;1710:74:22;;;;;;;;;;-1:-1:-1;1532:259:22:o;6954:387:27:-;7095:12;-1:-1:-1;;;;;1465:19:27;;;7119:69;;;;-1:-1:-1;;;7119:69:27;;2080:2:46;7119:69:27;;;2062:21:46;2119:2;2099:18;;;2092:30;2158:34;2138:18;;;2131:62;-1:-1:-1;;;2209:18:46;;;2202:36;2255:19;;7119:69:27;1878:402:46;7119:69:27;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:27;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:27;;-1:-1:-1;7199:67:27;-1:-1:-1;7283:51:27;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:27:o;1175:320::-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;1614:190:29:-;1784:4;1614:190::o;7561:742:27:-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:27;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:27;;;;;;;;:::i;14:127:46:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:258;218:1;228:113;242:6;239:1;236:13;228:113;;;318:11;;;312:18;299:11;;;292:39;264:2;257:10;228:113;;;359:6;356:1;353:13;350:48;;;-1:-1:-1;;394:1:46;376:16;;369:27;146:258::o;409:1050::-;497:6;505;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;600:16;;-1:-1:-1;;;;;645:31:46;;635:42;;625:70;;691:1;688;681:12;625:70;763:2;748:18;;742:25;714:5;;-1:-1:-1;;;;;;816:14:46;;;813:34;;;843:1;840;833:12;813:34;881:6;870:9;866:22;856:32;;926:7;919:4;915:2;911:13;907:27;897:55;;948:1;945;938:12;897:55;977:2;971:9;999:2;995;992:10;989:36;;;1005:18;;:::i;:::-;1080:2;1074:9;1048:2;1134:13;;-1:-1:-1;;1130:22:46;;;1154:2;1126:31;1122:40;1110:53;;;1178:18;;;1198:22;;;1175:46;1172:72;;;1224:18;;:::i;:::-;1264:10;1260:2;1253:22;1299:2;1291:6;1284:18;1339:7;1334:2;1329;1325;1321:11;1317:20;1314:33;1311:53;;;1360:1;1357;1350:12;1311:53;1373:55;1425:2;1420;1412:6;1408:15;1403:2;1399;1395:11;1373:55;:::i;:::-;1447:6;1437:16;;;;;;;409:1050;;;;;:::o;2285:274::-;2414:3;2452:6;2446:13;2468:53;2514:6;2509:3;2502:4;2494:6;2490:17;2468:53;:::i;:::-;2537:16;;;;;2285:274;-1:-1:-1;;2285:274:46:o;2564:383::-;2713:2;2702:9;2695:21;2676:4;2745:6;2739:13;2788:6;2783:2;2772:9;2768:18;2761:34;2804:66;2863:6;2858:2;2847:9;2843:18;2838:2;2830:6;2826:15;2804:66;:::i;:::-;2931:2;2910:15;-1:-1:-1;;2906:29:46;2891:45;;;;2938:2;2887:54;;2564:383;-1:-1:-1;;2564:383:46:o;:::-;567:723:21;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_3503": {
                  "entryPoint": null,
                  "id": 3503,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_3511": {
                  "entryPoint": null,
                  "id": 3511,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_beforeFallback_3516": {
                  "entryPoint": null,
                  "id": 3516,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_delegate_3476": {
                  "entryPoint": 159,
                  "id": 3476,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_fallback_3495": {
                  "entryPoint": 23,
                  "id": 3495,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getImplementation_3179": {
                  "entryPoint": null,
                  "id": 3179,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_implementation_3146": {
                  "entryPoint": 103,
                  "id": 3146,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3896": {
                  "entryPoint": 41,
                  "id": 3896,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3931": {
                  "entryPoint": 195,
                  "id": 3931,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_4011": {
                  "entryPoint": 100,
                  "id": 4011,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3686": {
                  "entryPoint": 85,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3962": {
                  "entryPoint": 421,
                  "id": 3962,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 526,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 554,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 478,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1348:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "188:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "216:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "198:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "198:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "198:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "239:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "250:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "235:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "235:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "255:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "228:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "228:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "228:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "278:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "289:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "274:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "274:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "294:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "267:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "267:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "267:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "349:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "360:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "345:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "345:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "365:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "338:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "338:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "338:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "383:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "395:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "406:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "391:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "391:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "383:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "165:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "179:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "474:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "484:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "493:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "488:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "553:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "578:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "583:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "574:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "574:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "597:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "602:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "593:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "593:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "587:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "587:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "567:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "567:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "567:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "514:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "511:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "511:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "525:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "527:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "536:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "539:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "532:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "532:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "527:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "507:3:46",
                                "statements": []
                              },
                              "src": "503:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "642:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "655:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "660:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "651:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "651:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "669:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "644:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "644:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "628:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "628:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "625:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "452:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "457:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "462:6:46",
                            "type": ""
                          }
                        ],
                        "src": "421:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "821:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "831:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "851:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "845:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "845:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "835:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "893:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "901:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "889:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "908:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "913:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "867:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "867:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "867:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "929:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "940:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "945:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "936:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "936:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "797:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "802:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "813:3:46",
                            "type": ""
                          }
                        ],
                        "src": "684:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1084:262:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1101:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1112:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1094:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1094:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1094:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1124:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1144:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1138:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1138:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1128:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1171:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1182:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1167:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1167:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1187:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1160:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1160:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1160:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1229:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1225:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1225:15:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1246:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1257:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1242:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1242:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1262:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1203:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1203:66:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1203:66:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1278:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1294:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1313:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1321:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1309:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1309:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1330:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1326:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1326:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1305:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1305:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1290:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1290:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1337:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1286:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1286:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1278:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1053:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1064:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1075:4:46",
                            "type": ""
                          }
                        ],
                        "src": "963:383:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220409017758fa83e4c13e1f392f1e68d1ef56e899c0e50c253bf3f4ce1c5cbfab064736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x130 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x14B SWAP2 SWAP1 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x19B DUP3 DUP3 DUP7 PUSH2 0x1A5 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1B4 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1C4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x22A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E1 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x220 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x249 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220409017 PUSH22 0x8FA83E4C13E1F392F1E68D1EF56E899C0E50C253BF3F 0x4C 0xE1 0xC5 0xCB STATICCALL 0xB0 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "567:723:21:-:0;;;;;;2898:11:23;:9;:11::i;:::-;567:723:21;;2675:11:23;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:27:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:27:o;1175:320::-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;1614:190:29:-;1784:4;1614:190::o;1148:140:21:-;1215:12;1246:35;1030:66:22;1380:54;-1:-1:-1;;;;;1380:54:22;;1301:140;1246:35:21;1239:42;;1148:140;:::o;948:895:23:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:27;7095:12;-1:-1:-1;;;;;1465:19:27;;;7119:69;;;;-1:-1:-1;;;7119:69:27;;216:2:46;7119:69:27;;;198:21:46;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:46;;;338:36;391:19;;7119:69:27;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:27;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:27:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:27;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:27;;;;;;;;:::i;421:258:46:-;493:1;503:113;517:6;514:1;511:13;503:113;;;593:11;;;587:18;574:11;;;567:39;539:2;532:10;503:113;;;634:6;631:1;628:13;625:48;;;669:1;660:6;655:3;651:16;644:27;625:48;;421:258;;;:::o;684:274::-;813:3;851:6;845:13;867:53;913:6;908:3;901:4;893:6;889:17;867:53;:::i;:::-;936:16;;;;;684:274;-1:-1:-1;;684:274:46:o;963:383::-;1112:2;1101:9;1094:21;1075:4;1144:6;1138:13;1187:6;1182:2;1171:9;1167:18;1160:34;1203:66;1262:6;1257:2;1246:9;1242:18;1237:2;1229:6;1225:15;1203:66;:::i;:::-;1330:2;1309:15;-1:-1:-1;;1305:29:46;1290:45;;;;1337:2;1286:54;;963:383;-1:-1:-1;;963:383:46:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "139600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "": "infinite"
              },
              "internal": {
                "_implementation()": "2156"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n     * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n     */\\n    constructor(address _logic, bytes memory _data) payable {\\n        _upgradeToAndCall(_logic, _data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _implementation() internal view virtual override returns (address impl) {\\n        return ERC1967Upgrade._getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": {
        "ERC1967Upgrade": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            }
          ],
          "devdoc": {
            "custom:oz-upgrades-unsafe-allow": "delegatecall",
            "details": "This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._",
            "events": {
              "AdminChanged(address,address)": {
                "details": "Emitted when the admin account has changed."
              },
              "BeaconUpgraded(address)": {
                "details": "Emitted when the beacon is upgraded."
              },
              "Upgraded(address)": {
                "details": "Emitted when the implementation is upgraded."
              }
            },
            "kind": "dev",
            "methods": {},
            "stateVariables": {
              "_ADMIN_SLOT": {
                "details": "Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."
              },
              "_BEACON_SLOT": {
                "details": "The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."
              },
              "_IMPLEMENTATION_SLOT": {
                "details": "Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"delegatecall\",\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/proxy/Proxy.sol": {
        "Proxy": {
          "abi": [
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "devdoc": {
            "details": "This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol": {
        "BeaconProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "devdoc": {
            "details": "This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}. The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't conflict with the storage layout of the implementation behind the proxy. _Available since v3.4._",
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Initializes the proxy with `beacon`. If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - `beacon` must be a contract with the interface {IBeacon}."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_3542": {
                  "entryPoint": null,
                  "id": 3542,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setBeacon_3426": {
                  "entryPoint": 256,
                  "id": 3426,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeBeaconToAndCall_3464": {
                  "entryPoint": 53,
                  "id": 3464,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@functionDelegateCall_3896": {
                  "entryPoint": 675,
                  "id": 3896,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3931": {
                  "entryPoint": 737,
                  "id": 3931,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_4011": {
                  "entryPoint": 734,
                  "id": 4011,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3686": {
                  "entryPoint": 719,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3962": {
                  "entryPoint": 959,
                  "id": 3962,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1016,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1302,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 1110,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1329,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1357,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 1066,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 1044,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3671:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "228:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "245:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "252:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "257:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "248:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "248:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "238:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "238:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "238:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "285:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "288:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "278:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "309:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "312:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "302:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "302:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "196:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "381:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "391:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "400:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "395:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "460:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "490:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "481:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "481:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "504:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "509:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "500:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "500:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "494:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "494:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "474:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "474:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "474:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "421:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "424:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "418:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "418:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "432:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "434:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "446:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "439:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "439:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "434:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "414:3:46",
                                "statements": []
                              },
                              "src": "410:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "549:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "562:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "567:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "558:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "558:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "576:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "551:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "551:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "551:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "541:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "535:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "535:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "532:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "359:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "364:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "369:6:46",
                            "type": ""
                          }
                        ],
                        "src": "328:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "698:861:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "744:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "753:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "756:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "746:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "746:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "746:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "728:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "715:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "715:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "740:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "711:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "711:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "708:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "769:50:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "779:29:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "779:40:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "769:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "828:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "852:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "863:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "848:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "848:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "842:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "842:25:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "832:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "876:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "894:2:46",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "898:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "890:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "890:10:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "902:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "886:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "886:18:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "880:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "931:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "940:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "943:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "933:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "933:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "933:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "919:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "927:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "916:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "916:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "913:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "956:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "970:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "981:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "966:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "966:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "960:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1036:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1045:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1048:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1038:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1038:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1038:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1015:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1019:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1011:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1011:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1026:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1007:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1000:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1000:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "997:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1061:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1071:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1071:9:46"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1065:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1103:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1105:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1105:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1105:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1095:2:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1092:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1092:10:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1089:36:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1134:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1148:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1144:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1144:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1138:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1160:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1180:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1164:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1192:71:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1214:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1238:2:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1242:4:46",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1234:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1234:13:46"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1249:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1230:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1230:22:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1254:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1226:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1226:31:46"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1259:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1222:40:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1210:53:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1196:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1322:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1324:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1324:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1324:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1293:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1278:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1278:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1301:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1313:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1298:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1298:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1275:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1275:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1272:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1360:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1364:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1353:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1353:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1353:22:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1391:6:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1399:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1384:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1384:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1384:18:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1448:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1457:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1460:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1450:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1450:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1450:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1425:2:46"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1429:2:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1421:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1421:11:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1434:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1417:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1417:20:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1414:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1414:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1411:53:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1499:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1503:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1495:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1495:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1512:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1520:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1508:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1508:15:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1525:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1473:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1473:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1537:16:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1547:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1537:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "656:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "667:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "679:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "687:6:46",
                            "type": ""
                          }
                        ],
                        "src": "591:968:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1645:127:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1691:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1700:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1703:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1693:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1693:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1693:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1666:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1675:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1662:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1662:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1687:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1655:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1716:50:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1756:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1726:29:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1726:40:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1716:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1611:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1622:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1634:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1564:208:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1951:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1968:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1979:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1961:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1961:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1961:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2002:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2013:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1998:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1998:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2018:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1991:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1991:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1991:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2041:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2052:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2037:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2037:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2057:34:46",
                                    "type": "",
                                    "value": "ERC1967: new beacon is not a con"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2030:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2030:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2030:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2112:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2123:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2108:18:46"
                                  },
                                  {
                                    "hexValue": "7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2128:7:46",
                                    "type": "",
                                    "value": "tract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2101:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2101:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2101:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2145:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2157:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2168:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2153:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2153:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2145:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1928:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1942:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1777:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2357:238:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2374:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2385:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2367:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2367:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2367:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2408:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2419:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2404:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2404:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2424:2:46",
                                    "type": "",
                                    "value": "48"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2397:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2397:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2397:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2447:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2458:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2443:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2443:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e2069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2463:34:46",
                                    "type": "",
                                    "value": "ERC1967: beacon implementation i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2436:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2436:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2436:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2518:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2529:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2514:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2514:18:46"
                                  },
                                  {
                                    "hexValue": "73206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2534:18:46",
                                    "type": "",
                                    "value": "s not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2507:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2507:46:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2507:46:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2562:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2574:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2585:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2570:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2570:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2562:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2334:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2348:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2183:412:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2774:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2791:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2802:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2784:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2784:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2784:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2825:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2836:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2821:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2821:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2841:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2814:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2814:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2814:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2864:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2875:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2860:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2860:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2880:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2853:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2853:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2853:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2935:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2946:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2931:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2931:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2951:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2924:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2924:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2924:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2969:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2981:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2992:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2977:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2977:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2969:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2751:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2765:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2600:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3144:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3154:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3174:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3168:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3168:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3158:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3216:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3224:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3212:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3212:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3231:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3236:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3190:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3190:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3190:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3252:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3263:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3268:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3259:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3259:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3252:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3120:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3125:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3136:3:46",
                            "type": ""
                          }
                        ],
                        "src": "3007:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3407:262:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3424:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3435:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3417:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3447:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3467:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3461:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3461:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3451:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3494:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3505:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3490:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3490:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3510:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3483:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3483:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3483:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3552:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3560:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3548:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3548:15:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3569:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3580:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3565:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3565:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3585:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3526:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3526:66:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3526:66:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3601:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3617:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3636:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3644:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3632:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3632:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3653:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3649:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3649:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3628:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3628:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3613:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3613:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3660:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3609:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3609:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3376:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3387:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3398:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3286:383:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let offset := mload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC1967: new beacon is not a con\")\n        mstore(add(headStart, 96), \"tract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ERC1967: beacon implementation i\")\n        mstore(add(headStart, 96), \"s not a contract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65640000 ",
              "sourceMap": "580:1515:24:-:0;;;1060:116;;;;;;;;;;;;;;;;;;:::i;:::-;1125:44;1149:6;1157:4;1163:5;1125:23;:44::i;:::-;1060:116;;580:1515;;6168:343:22;6304:21;6315:9;6304:10;:21::i;:::-;6340:25;;-1:-1:-1;;;;;6340:25:22;;;;;;;;6393:1;6379:4;:11;:15;:28;;;;6398:9;6379:28;6375:130;;;6423:71;6460:9;-1:-1:-1;;;;;6452:33:22;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6489:4;6423:28;;;;;:71;;:::i;:::-;;6375:130;6168:343;;;:::o;5494:371::-;5559:29;5578:9;5559:18;;;;;:29;;:::i;:::-;5551:79;;;;-1:-1:-1;;;5551:79:22;;1979:2:46;5551:79:22;;;1961:21:46;2018:2;1998:18;;;1991:30;2057:34;2037:18;;;2030:62;-1:-1:-1;;;2108:18:46;;;2101:35;2153:19;;5551:79:22;;;;;;;;;5661:55;5688:9;-1:-1:-1;;;;;5680:33:22;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5661:18;;;;;:55;;:::i;:::-;5640:150;;;;-1:-1:-1;;;5640:150:22;;2385:2:46;5640:150:22;;;2367:21:46;2424:2;2404:18;;;2397:30;2463:34;2443:18;;;2436:62;-1:-1:-1;;;2514:18:46;;;2507:46;2570:19;;5640:150:22;2183:412:46;5640:150:22;5849:9;5800:40;5043:66;5827:12;;5800:26;;;;;:40;;:::i;:::-;:58;;-1:-1:-1;;;;;;5800:58:22;-1:-1:-1;;;;;5800:58:22;;;;;;;;;;-1:-1:-1;5494:371:22:o;6570:198:27:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:27:o;1175:320::-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;1614:190:29:-;1784:4;1614:190::o;6954:387:27:-;7095:12;-1:-1:-1;;;;;1465:19:27;;;7119:69;;;;-1:-1:-1;;;7119:69:27;;2802:2:46;7119:69:27;;;2784:21:46;2841:2;2821:18;;;2814:30;2880:34;2860:18;;;2853:62;-1:-1:-1;;;2931:18:46;;;2924:36;2977:19;;7119:69:27;2600:402:46;7119:69:27;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:27;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:27;;-1:-1:-1;7199:67:27;-1:-1:-1;7283:51:27;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:27:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:27;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:27;;;;;;;;:::i;14:177:46:-;93:13;;-1:-1:-1;;;;;135:31:46;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:258;400:1;410:113;424:6;421:1;418:13;410:113;;;500:11;;;494:18;481:11;;;474:39;446:2;439:10;410:113;;;541:6;538:1;535:13;532:48;;;-1:-1:-1;;576:1:46;558:16;;551:27;328:258::o;591:968::-;679:6;687;740:2;728:9;719:7;715:23;711:32;708:52;;;756:1;753;746:12;708:52;779:40;809:9;779:40;:::i;:::-;863:2;848:18;;842:25;769:50;;-1:-1:-1;;;;;;916:14:46;;;913:34;;;943:1;940;933:12;913:34;981:6;970:9;966:22;956:32;;1026:7;1019:4;1015:2;1011:13;1007:27;997:55;;1048:1;1045;1038:12;997:55;1077:2;1071:9;1099:2;1095;1092:10;1089:36;;;1105:18;;:::i;:::-;1180:2;1174:9;1148:2;1234:13;;-1:-1:-1;;1230:22:46;;;1254:2;1226:31;1222:40;1210:53;;;1278:18;;;1298:22;;;1275:46;1272:72;;;1324:18;;:::i;:::-;1364:10;1360:2;1353:22;1399:2;1391:6;1384:18;1439:7;1434:2;1429;1425;1421:11;1417:20;1414:33;1411:53;;;1460:1;1457;1450:12;1411:53;1473:55;1525:2;1520;1512:6;1508:15;1503:2;1499;1495:11;1473:55;:::i;:::-;1547:6;1537:16;;;;;;;591:968;;;;;:::o;1564:208::-;1634:6;1687:2;1675:9;1666:7;1662:23;1658:32;1655:52;;;1703:1;1700;1693:12;1655:52;1726:40;1756:9;1726:40;:::i;3007:274::-;3136:3;3174:6;3168:13;3190:53;3236:6;3231:3;3224:4;3216:6;3212:17;3190:53;:::i;:::-;3259:16;;;;;3007:274;-1:-1:-1;;3007:274:46:o;3286:383::-;3435:2;3424:9;3417:21;3398:4;3467:6;3461:13;3510:6;3505:2;3494:9;3490:18;3483:34;3526:66;3585:6;3580:2;3569:9;3565:18;3560:2;3552:6;3548:15;3526:66;:::i;:::-;3653:2;3632:15;-1:-1:-1;;3628:29:46;3613:45;;;;3660:2;3609:54;;3286:383;-1:-1:-1;;3286:383:46:o;:::-;580:1515:24;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_3503": {
                  "entryPoint": null,
                  "id": 3503,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_3511": {
                  "entryPoint": null,
                  "id": 3511,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_beforeFallback_3516": {
                  "entryPoint": null,
                  "id": 3516,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_delegate_3476": {
                  "entryPoint": 256,
                  "id": 3476,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_fallback_3495": {
                  "entryPoint": 23,
                  "id": 3495,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getBeacon_3390": {
                  "entryPoint": null,
                  "id": 3390,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_implementation_3567": {
                  "entryPoint": 103,
                  "id": 3567,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3896": {
                  "entryPoint": 41,
                  "id": 3896,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3931": {
                  "entryPoint": 292,
                  "id": 3931,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_4011": {
                  "entryPoint": 100,
                  "id": 4011,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3686": {
                  "entryPoint": 85,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3962": {
                  "entryPoint": 518,
                  "id": 3962,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 575,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 664,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 692,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 616,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1643:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14:290:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "483:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "500:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "511:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "493:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "534:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "545:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "530:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "530:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "550:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "523:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "573:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "584:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "589:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "655:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "640:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "640:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "660:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "633:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "633:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "633:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "678:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "690:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "701:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "686:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "686:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "678:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "460:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "474:4:46",
                            "type": ""
                          }
                        ],
                        "src": "309:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "769:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "779:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "788:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "783:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "848:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "873:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "878:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "869:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "869:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "892:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "897:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "888:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "888:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "882:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "882:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "862:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "862:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "862:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "812:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "806:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "820:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "822:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "831:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "834:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "827:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "822:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "802:3:46",
                                "statements": []
                              },
                              "src": "798:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "950:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "955:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "946:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "946:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "964:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "926:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "929:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "923:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "923:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "920:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "747:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "752:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "757:6:46",
                            "type": ""
                          }
                        ],
                        "src": "716:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1116:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1126:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1146:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1140:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1140:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1130:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1188:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1196:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1184:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1184:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1203:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1208:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1162:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1162:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1224:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1235:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1240:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1231:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1231:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1224:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1092:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1097:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1108:3:46",
                            "type": ""
                          }
                        ],
                        "src": "979:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1379:262:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1396:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1407:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1389:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1389:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1419:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1433:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1433:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1423:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1466:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1477:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1462:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1462:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1482:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1455:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1455:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1455:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1524:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1532:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1520:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1520:15:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1541:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1552:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1537:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1557:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1498:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1498:66:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1498:66:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1573:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1589:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1608:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1616:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1604:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1604:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1625:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1621:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1621:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1600:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1600:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1585:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1585:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1581:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1581:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1573:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1348:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1359:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1370:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1258:383:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "580:1515:24:-:0;;;;;;2898:11:23;:9;:11::i;:::-;580:1515:24;;2675:11:23;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:27:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:27:o;1175:320::-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;1614:190:29:-;1784:4;1614:190::o;1444:138:24:-;1511:7;1545:12;5043:66:22;5359:46;-1:-1:-1;;;;;5359:46:22;;5288:124;1545:12:24;-1:-1:-1;;;;;1537:36:24;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1530:45;;1444:138;:::o;948:895:23:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:27;7095:12;-1:-1:-1;;;;;1465:19:27;;;7119:69;;;;-1:-1:-1;;;7119:69:27;;511:2:46;7119:69:27;;;493:21:46;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:46;;;633:36;686:19;;7119:69:27;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:27;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:27:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:27;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:27;;;;;;;;:::i;14:290:46:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:46;;214:42;;204:70;;270:1;267;260:12;716:258;788:1;798:113;812:6;809:1;806:13;798:113;;;888:11;;;882:18;869:11;;;862:39;834:2;827:10;798:113;;;929:6;926:1;923:13;920:48;;;964:1;955:6;950:3;946:16;939:27;920:48;;716:258;;;:::o;979:274::-;1108:3;1146:6;1140:13;1162:53;1208:6;1203:3;1196:4;1188:6;1184:17;1162:53;:::i;:::-;1231:16;;;;;979:274;-1:-1:-1;;979:274:46:o;1258:383::-;1407:2;1396:9;1389:21;1370:4;1439:6;1433:13;1482:6;1477:2;1466:9;1462:18;1455:34;1498:66;1557:6;1552:2;1541:9;1537:18;1532:2;1524:6;1520:15;1498:66;:::i;:::-;1625:2;1604:15;-1:-1:-1;;1600:29:46;1585:45;;;;1632:2;1581:54;;1258:383;-1:-1:-1;;1258:383:46:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "167200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "": "infinite"
              },
              "internal": {
                "_beacon()": "infinite",
                "_implementation()": "infinite",
                "_setBeacon(address,bytes memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}. The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't conflict with the storage layout of the implementation behind the proxy. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the proxy with `beacon`. If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - `beacon` must be a contract with the interface {IBeacon}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":\"BeaconProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"../ERC1967/ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\\n *\\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\\n * conflict with the storage layout of the implementation behind the proxy.\\n *\\n * _Available since v3.4._\\n */\\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the proxy with `beacon`.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\\n     * constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract with the interface {IBeacon}.\\n     */\\n    constructor(address beacon, bytes memory data) payable {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current beacon address.\\n     */\\n    function _beacon() internal view virtual returns (address) {\\n        return _getBeacon();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address of the associated beacon.\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return IBeacon(_getBeacon()).implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract.\\n     * - The implementation returned by `beacon` must be a contract.\\n     */\\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n}\\n\",\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": {
        "IBeacon": {
          "abi": [
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "This is the interface that {BeaconProxy} expects of its beacon.",
            "kind": "dev",
            "methods": {
              "implementation()": {
                "details": "Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "implementation()": "5c60da1b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol": {
        "UpgradeableBeacon": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "implementation_",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their implementation contract, which is where they will delegate all function calls. An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.",
            "events": {
              "Upgraded(address)": {
                "details": "Emitted when the implementation returned by the beacon is changed."
              }
            },
            "kind": "dev",
            "methods": {
              "constructor": {
                "details": "Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the beacon."
              },
              "implementation()": {
                "details": "Returns the current implementation address."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "upgradeTo(address)": {
                "details": "Upgrades the beacon to a new implementation. Emits an {Upgraded} event. Requirements: - msg.sender must be the owner of the contract. - `newImplementation` must be a contract."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_3011": {
                  "entryPoint": null,
                  "id": 3011,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_3621": {
                  "entryPoint": null,
                  "id": 3621,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_msgSender_3975": {
                  "entryPoint": null,
                  "id": 3975,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_3667": {
                  "entryPoint": 151,
                  "id": 3667,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_3099": {
                  "entryPoint": 71,
                  "id": 3099,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@isContract_3686": {
                  "entryPoint": 322,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 337,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:726:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14:290:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "483:241:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "500:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "511:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "493:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "534:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "545:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "530:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "530:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "550:2:46",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "523:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "573:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "584:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:18:46"
                                  },
                                  {
                                    "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "589:34:46",
                                    "type": "",
                                    "value": "UpgradeableBeacon: implementatio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "655:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "640:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "640:18:46"
                                  },
                                  {
                                    "hexValue": "6e206973206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "660:21:46",
                                    "type": "",
                                    "value": "n is not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "633:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "633:49:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "633:49:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "691:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "703:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "714:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "699:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "699:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "691:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "460:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "474:4:46",
                            "type": ""
                          }
                        ],
                        "src": "309:415:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"UpgradeableBeacon: implementatio\")\n        mstore(add(headStart, 96), \"n is not a contract\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4E4 CODESIZE SUB DUP1 PUSH2 0x4E4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x151 JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x47 JUMP JUMPDEST PUSH2 0x41 DUP2 PUSH2 0x97 JUMP JUMPDEST POP PUSH2 0x181 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xAA DUP2 PUSH2 0x142 PUSH1 0x20 SHL PUSH2 0x1A0 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E206973206E6F74206120636F6E747261637400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x354 DUP1 PUSH2 0x190 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x10E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x122 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xD7 DUP2 PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x116 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x120 PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x194 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19D DUP2 PUSH2 0x29E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH2 0x857C 0xDA 0x49 0xEE CREATE 0xAB PUSH32 0xFBF7C954AD8941A4D6737EA56FBE0BCCB90FD0C5769A64736F6C634300080E00 CALLER ",
              "sourceMap": "543:1496:26:-:0;;;931:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:19;719:10:28;936:18:19;:32::i;:::-;978:35:26;997:15;978:18;:35::i;:::-;931:89;543:1496;;2433:187:19;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:19;;;-1:-1:-1;;;;;;2541:17:19;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1811:226:26:-;1892:37;1911:17;1892:18;;;;;:37;;:::i;:::-;1884:101;;;;-1:-1:-1;;;1884:101:26;;511:2:46;1884:101:26;;;493:21:46;550:2;530:18;;;523:30;589:34;569:18;;;562:62;660:21;640:18;;;633:49;699:19;;1884:101:26;;;;;;;;1995:15;:35;;-1:-1:-1;;;;;;1995:35:26;-1:-1:-1;;;;;1995:35:26;;;;;;;;;;1811:226::o;1175:320:27:-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;14:290:46:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:46;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:46:o;309:415::-;543:1496:26;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_checkOwner_3042": {
                  "entryPoint": 431,
                  "id": 3042,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_3975": {
                  "entryPoint": null,
                  "id": 3975,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_3667": {
                  "entryPoint": 521,
                  "id": 3667,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_3099": {
                  "entryPoint": 670,
                  "id": 3099,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@implementation_3631": {
                  "entryPoint": null,
                  "id": 3631,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@isContract_3686": {
                  "entryPoint": 416,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_3028": {
                  "entryPoint": null,
                  "id": 3028,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renounceOwnership_3056": {
                  "entryPoint": 270,
                  "id": 3056,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferOwnership_3079": {
                  "entryPoint": 290,
                  "id": 3079,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@upgradeTo_3648": {
                  "entryPoint": 198,
                  "id": 3648,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 750,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1698:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:216:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "254:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "263:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "266:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "256:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "256:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "256:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "224:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "239:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "244:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "235:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "235:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "248:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "231:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "231:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "220:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "220:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "210:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "210:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "203:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "203:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "200:70:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "279:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "289:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "279:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14:286:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "406:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "416:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "428:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "439:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "424:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "424:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "416:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "458:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "473:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "489:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "494:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "485:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "498:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "481:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "481:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "469:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "451:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "451:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "451:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "375:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "386:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "397:4:46",
                            "type": ""
                          }
                        ],
                        "src": "305:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "687:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "704:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "715:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "697:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "697:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "697:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "749:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "734:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "734:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "754:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "727:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "727:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "727:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "777:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "788:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "773:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "773:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "793:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "766:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "766:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "766:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "848:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "859:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "844:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "844:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "864:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "837:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "837:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "837:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "882:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "894:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "905:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "890:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "882:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "664:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "678:4:46",
                            "type": ""
                          }
                        ],
                        "src": "513:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1094:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1111:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1122:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1104:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1104:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1104:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1145:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1156:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1141:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1141:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1161:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1134:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1134:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1134:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1184:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1195:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1180:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1180:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1200:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1173:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1173:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1173:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1244:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1256:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1267:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1252:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1252:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1244:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1071:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1085:4:46",
                            "type": ""
                          }
                        ],
                        "src": "920:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1455:241:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1472:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1483:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1465:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1465:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1465:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1506:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1517:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1502:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1502:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1522:2:46",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1495:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1495:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1495:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1545:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1556:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1541:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1541:18:46"
                                  },
                                  {
                                    "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1561:34:46",
                                    "type": "",
                                    "value": "UpgradeableBeacon: implementatio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1534:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1534:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1616:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1627:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1612:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1612:18:46"
                                  },
                                  {
                                    "hexValue": "6e206973206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:21:46",
                                    "type": "",
                                    "value": "n is not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1605:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1605:49:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1605:49:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1663:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1675:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1686:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1671:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1671:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1663:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1432:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1446:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1281:415:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"UpgradeableBeacon: implementatio\")\n        mstore(add(headStart, 96), \"n is not a contract\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x10E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x122 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xD7 DUP2 PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x116 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x120 PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x194 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19D DUP2 PUSH2 0x29E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH2 0x857C 0xDA 0x49 0xEE CREATE 0xAB PUSH32 0xFBF7C954AD8941A4D6737EA56FBE0BCCB90FD0C5769A64736F6C634300080E00 CALLER ",
              "sourceMap": "543:1496:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1469:167;;;;;;:::i;:::-;;:::i;:::-;;1098:112;1188:15;;-1:-1:-1;;;;;1188:15:26;1098:112;;;-1:-1:-1;;;;;469:32:46;;;451:51;;439:2;424:18;1098:112:26;;;;;;;1831:101:19;;;:::i;1201:85::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:19;1201:85;;2081:198;;;;;;:::i;:::-;;:::i;1469:167:26:-;1094:13:19;:11;:13::i;:::-;1550:37:26::1;1569:17;1550:18;:37::i;:::-;1602:27;::::0;-1:-1:-1;;;;;1602:27:26;::::1;::::0;::::1;::::0;;;::::1;1469:167:::0;:::o;1831:101:19:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:19;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:19;;715:2:46;2161:73:19::1;::::0;::::1;697:21:46::0;754:2;734:18;;;727:30;793:34;773:18;;;766:62;-1:-1:-1;;;844:18:46;;;837:36;890:19;;2161:73:19::1;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1175:320:27:-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;1359:130:19:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:19;719:10:28;1422:23:19;1414:68;;;;-1:-1:-1;;;1414:68:19;;1122:2:46;1414:68:19;;;1104:21:46;;;1141:18;;;1134:30;1200:34;1180:18;;;1173:62;1252:18;;1414:68:19;920:356:46;1811:226:26;-1:-1:-1;;;;;1465:19:27;;;1884:101:26;;;;-1:-1:-1;;;1884:101:26;;1483:2:46;1884:101:26;;;1465:21:46;1522:2;1502:18;;;1495:30;1561:34;1541:18;;;1534:62;-1:-1:-1;;;1612:18:46;;;1605:49;1671:19;;1884:101:26;1281:415:46;1884:101:26;1995:15;:35;;-1:-1:-1;;;;;;1995:35:26;-1:-1:-1;;;;;1995:35:26;;;;;;;;;;1811:226::o;2433:187:19:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:19;;;-1:-1:-1;;;;;;2541:17:19;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:286:46:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:46;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:46:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "170400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "implementation()": "2308",
                "owner()": "2363",
                "renounceOwnership()": "infinite",
                "transferOwnership(address)": "28364",
                "upgradeTo(address)": "30509"
              },
              "internal": {
                "_setImplementation(address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "implementation()": "5c60da1b",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b",
              "upgradeTo(address)": "3659cfe6"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their implementation contract, which is where they will delegate all function calls. An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\",\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation returned by the beacon is changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the beacon.\"},\"implementation()\":{\"details\":\"Returns the current implementation address.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrades the beacon to a new implementation. Emits an {Upgraded} event. Requirements: - msg.sender must be the owner of the contract. - `newImplementation` must be a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":\"UpgradeableBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../../access/Ownable.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\\n * implementation contract, which is where they will delegate all function calls.\\n *\\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\\n */\\ncontract UpgradeableBeacon is IBeacon, Ownable {\\n    address private _implementation;\\n\\n    /**\\n     * @dev Emitted when the implementation returned by the beacon is changed.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\\n     * beacon.\\n     */\\n    constructor(address implementation_) {\\n        _setImplementation(implementation_);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function implementation() public view virtual override returns (address) {\\n        return _implementation;\\n    }\\n\\n    /**\\n     * @dev Upgrades the beacon to a new implementation.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * Requirements:\\n     *\\n     * - msg.sender must be the owner of the contract.\\n     * - `newImplementation` must be a contract.\\n     */\\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Sets the implementation contract address for this beacon\\n     *\\n     * Requirements:\\n     *\\n     * - `newImplementation` must be a contract.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"UpgradeableBeacon: implementation is not a contract\\\");\\n        _implementation = newImplementation;\\n    }\\n}\\n\",\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 2995,
                "contract": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol:UpgradeableBeacon",
                "label": "_owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 3605,
                "contract": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol:UpgradeableBeacon",
                "label": "_implementation",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "Address": {
          "abi": [],
          "devdoc": {
            "details": "Collection of functions related to the address type",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fbf24d2267cdccc449c9c51105844a63f43cffeb0e85aa77ae072d9788fd4a3564736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB CALLCODE 0x4D 0x22 PUSH8 0xCDCCC449C9C51105 DUP5 0x4A PUSH4 0xF43CFFEB 0xE DUP6 0xAA PUSH24 0xAE072D9788FD4A3564736F6C634300080E00330000000000 ",
              "sourceMap": "194:8111:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:27;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fbf24d2267cdccc449c9c51105844a63f43cffeb0e85aa77ae072d9788fd4a3564736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB CALLCODE 0x4D 0x22 PUSH8 0xCDCCC449C9C51105 DUP5 0x4A PUSH4 0xF43CFFEB 0xE DUP6 0xAA PUSH24 0xAE072D9788FD4A3564736F6C634300080E00330000000000 ",
              "sourceMap": "194:8111:27:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "functionCall(address,bytes memory)": "infinite",
                "functionCall(address,bytes memory,string memory)": "infinite",
                "functionCallWithValue(address,bytes memory,uint256)": "infinite",
                "functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
                "functionDelegateCall(address,bytes memory)": "infinite",
                "functionDelegateCall(address,bytes memory,string memory)": "infinite",
                "functionStaticCall(address,bytes memory)": "infinite",
                "functionStaticCall(address,bytes memory,string memory)": "infinite",
                "isContract(address)": "infinite",
                "sendValue(address payable,uint256)": "infinite",
                "verifyCallResult(bool,bytes memory,string memory)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "Context": {
          "abi": [],
          "devdoc": {
            "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/StorageSlot.sol": {
        "StorageSlot": {
          "abi": [],
          "devdoc": {
            "details": "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`._",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220950f81efbbab33ec10c530471f8c75baa9820b7902028a636a820e8af2e729b264736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0xF DUP2 0xEF 0xBB 0xAB CALLER 0xEC LT 0xC5 ADDRESS SELFBALANCE 0x1F DUP13 PUSH22 0xBAA9820B7902028A636A820E8AF2E729B264736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "1279:1391:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1279:1391:29;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220950f81efbbab33ec10c530471f8c75baa9820b7902028a636a820e8af2e729b264736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0xF DUP2 0xEF 0xBB 0xAB CALLER 0xEC LT 0xC5 ADDRESS SELFBALANCE 0x1F DUP13 PUSH22 0xBAA9820B7902028A636A820E8AF2E729B264736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "1279:1391:29:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "getAddressSlot(bytes32)": "infinite",
                "getBooleanSlot(bytes32)": "infinite",
                "getBytes32Slot(bytes32)": "infinite",
                "getUint256Slot(bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "Strings": {
          "abi": [],
          "devdoc": {
            "details": "String operations.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e03928ed6e245d297adbc55b2ad0c2af4f92a57aa523eaa4ab1c26517158a02064736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 CODECOPY 0x28 0xED PUSH15 0x245D297ADBC55B2AD0C2AF4F92A57A 0xA5 0x23 0xEA LOG4 0xAB SHR 0x26 MLOAD PUSH18 0x58A02064736F6C634300080E003300000000 ",
              "sourceMap": "161:2235:30:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2235:30;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e03928ed6e245d297adbc55b2ad0c2af4f92a57aa523eaa4ab1c26517158a02064736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 CODECOPY 0x28 0xED PUSH15 0x245D297ADBC55B2AD0C2AF4F92A57A 0xA5 0x23 0xEA LOG4 0xAB SHR 0x26 MLOAD PUSH18 0x58A02064736F6C634300080E003300000000 ",
              "sourceMap": "161:2235:30:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "toHexString(address)": "infinite",
                "toHexString(uint256)": "infinite",
                "toHexString(uint256,uint256)": "infinite",
                "toString(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "ECDSA": {
          "abi": [],
          "devdoc": {
            "details": "Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb93fa53537ee699c4a9ca0a7e6df40bb82c78dd9e9777a1a0342a3061dfc9b564736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB SWAP4 STATICCALL MSTORE8 MSTORE8 PUSH31 0xE699C4A9CA0A7E6DF40BB82C78DD9E9777A1A0342A3061DFC9B564736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "369:9018:31:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;369:9018:31;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb93fa53537ee699c4a9ca0a7e6df40bb82c78dd9e9777a1a0342a3061dfc9b564736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB SWAP4 STATICCALL MSTORE8 MSTORE8 PUSH31 0xE699C4A9CA0A7E6DF40BB82C78DD9E9777A1A0342A3061DFC9B564736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "369:9018:31:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "_throwError(enum ECDSA.RecoverError)": "infinite",
                "recover(bytes32,bytes memory)": "infinite",
                "recover(bytes32,bytes32,bytes32)": "infinite",
                "recover(bytes32,uint8,bytes32,bytes32)": "infinite",
                "toEthSignedMessageHash(bytes memory)": "infinite",
                "toEthSignedMessageHash(bytes32)": "infinite",
                "toTypedDataHash(bytes32,bytes32)": "infinite",
                "tryRecover(bytes32,bytes memory)": "infinite",
                "tryRecover(bytes32,bytes32,bytes32)": "infinite",
                "tryRecover(bytes32,uint8,bytes32,bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/Artist.sol": {
        "Artist": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                }
              ],
              "name": "EditionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                }
              ],
              "name": "EditionPurchased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "buyEdition",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "createEdition",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "depositedForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "editions",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "getOwnersOfEdition",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "getTokenIdsOfEdition",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_artistId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "setEndTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                }
              ],
              "name": "setStartTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "withdrawFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdrawnForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "SoundXYZ",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "getOwnersOfEdition(uint256)": {
                "details": "Get owners of a given edition id",
                "params": {
                  "_editionId": "edition id"
                }
              },
              "getTokenIdsOfEdition(uint256)": {
                "details": "Get token ids for a given edition id",
                "params": {
                  "_editionId": "edition id"
                }
              },
              "initialize(address,uint256,string,string,string)": {
                "params": {
                  "_name": "Name of artist",
                  "_owner": "Owner of edition"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "royaltyInfo(uint256,uint256)": {
                "details": "Get royalty information for token",
                "params": {
                  "_editionId": "edition id",
                  "_salePrice": "Sale price for the token"
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Artist",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50612947806100206000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2947 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xBD8616EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD8616EC EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0x74E79189 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3FAFEF29 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x234 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x207F JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x20FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x213C JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x9CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x319 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x395 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH4 0xFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 DUP4 AND PUSH1 0x60 DUP7 ADD MSTORE DUP3 AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x401 PUSH2 0x3FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21F6 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x2231 JUMP JUMPDEST PUSH2 0xB42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xE0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x502 PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x254 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xEE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x55D CALLDATASIZE PUSH1 0x4 PUSH2 0x22F5 JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x57D CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x28C PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x10FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x610 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x63D CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x14E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x2530 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x712 JUMPI POP PUSH2 0x712 DUP3 PUSH2 0x15BC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x753 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7A0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x775 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x783 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 DUP3 PUSH2 0x160C JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP3 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x84E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x86A JUMPI POP PUSH2 0x86A DUP2 CALLER PUSH2 0x67F JUMP JUMPDEST PUSH2 0x8DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x166B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x91F JUMPI PUSH2 0x91F PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x948 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x9B1 JUMPI PUSH2 0x979 DUP2 PUSH2 0xD29 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI PUSH2 0x98B PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0x9AD DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x9BB DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x950 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA28 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x16D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA39 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA43 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA52 CALLER DUP3 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH5 0x100000000 DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP3 SWAP2 PUSH2 0xB0D JUMPI MLOAD SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xB2A DUP4 DUP9 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0x2677 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xBB2 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR DUP2 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP8 DUP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP4 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL MUL SWAP4 SWAP1 SWAP4 AND PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT SWAP5 DUP4 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP3 SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0xC92 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xB3131D7D301F8CAEB40981CFFC627B1FDF324B5E4A23845B61C1A6AD2A25F385 SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG2 PUSH2 0xD06 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1084 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0xE21 PUSH1 0x0 PUSH2 0x1A5B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE57 JUMPI PUSH2 0xE57 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE80 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xED4 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI PUSH2 0xEBB PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0xED0 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xEDE DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE88 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST PUSH2 0xA28 CALLER DUP4 DUP4 PUSH2 0x1AAD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0xF20 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0xF3A JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xFCA DUP5 DUP5 PUSH2 0x1B7B JUMP JUMPDEST PUSH2 0xFD2 PUSH2 0x1BAC JUMP JUMPDEST PUSH2 0xFDB DUP7 PUSH2 0x1508 JUMP JUMPDEST DUP2 PUSH2 0xFE5 DUP7 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF6 SWAP3 SWAP2 SWAP1 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x101A SWAP3 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP PUSH2 0x1029 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1037 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x108E CALLER DUP4 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x10AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x10B6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x10C4 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 AND LT PUSH2 0x11D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE LT ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x12B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x105D58DD1A5BDB881A185CDB89DD081CDD185C9D1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND GT PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1327 CALLER PUSH2 0x1322 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1345 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x136D DUP4 PUSH2 0x26DE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP1 PUSH1 0xCD PUSH1 0x0 PUSH2 0x139A PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x13B5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP5 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1412 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1494 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x14AF SWAP1 PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x14B8 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x279A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14F4 SWAP2 SWAP1 PUSH2 0x27E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1510 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1412 DUP2 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1586 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x15ED JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x712 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x16A0 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x177B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x8E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17F2 DUP4 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1839 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x185D JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1852 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1878 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x193E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1949 PUSH1 0x0 DUP3 PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1972 SWAP1 DUP5 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x19A0 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xA28 DUP3 DUP3 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 PUSH2 0x1E9F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x1C02 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1C2C JUMPI DUP1 PUSH2 0x1C16 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C25 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2677 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x185D JUMPI PUSH2 0x1C86 PUSH1 0x1 DUP4 PUSH2 0x25DD JUMP JUMPDEST SWAP2 POP PUSH2 0x1C93 PUSH1 0xA DUP7 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1C9E SWAP1 PUSH1 0x30 PUSH2 0x26C6 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CB3 JUMPI PUSH2 0x1CB3 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1CD5 PUSH1 0xA DUP7 PUSH2 0x2677 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 JUMP JUMPDEST PUSH2 0x1CE7 DUP5 DUP5 DUP5 PUSH2 0x1865 JUMP JUMPDEST PUSH2 0x1CF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1DF3 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x1E8B SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8E6 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 CALLER PUSH2 0x1A5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1F13 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1F4E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1F4B SWAP2 DUP2 ADD SWAP1 PUSH2 0x28F4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1FAB JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1FA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x185D JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x1FDC SWAP1 PUSH2 0x255E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2017 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2044 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2044 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2029 JUMP JUMPDEST POP PUSH2 0x2050 SWAP3 SWAP2 POP PUSH2 0x2054 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20A6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x20E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x215A DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2184 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21D5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21E5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x222C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x224A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2255 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH2 0x226A PUSH1 0x40 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP4 POP PUSH2 0x2278 PUSH1 0x60 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP3 POP PUSH2 0x2286 PUSH1 0x80 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP2 POP PUSH2 0x2294 PUSH1 0xA0 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2313 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2364 JUMPI PUSH2 0x2364 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x238C JUMPI PUSH2 0x238C PUSH2 0x2333 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x23A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2349 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x23F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2402 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2432 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2454 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2477 DUP9 DUP3 DUP10 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x24A5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x24B5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x24E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24F8 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2349 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2527 PUSH1 0x20 DUP5 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x254E DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2328 DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2572 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2592 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x25D6 JUMPI PUSH2 0x25D6 PUSH2 0x25AE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EF PUSH2 0x25AE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x265C JUMPI PUSH2 0x265C PUSH2 0x25AE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2686 JUMPI PUSH2 0x2686 PUSH2 0x2661 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x269D DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x26B1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x26D9 PUSH2 0x25AE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x26F7 JUMPI PUSH2 0x26F7 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x271B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x273C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2750 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2761 JUMPI PUSH2 0x278E JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x278E JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2786 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x276D JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A6 DUP3 DUP7 PUSH2 0x2701 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x27B6 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x27D3 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27EC DUP3 DUP5 PUSH2 0x2701 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2860 JUMPI PUSH2 0x2860 PUSH2 0x2661 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x28EA SWAP1 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xE4 PUSH1 0xB7 0xEF PUSH16 0x39786F77F92A66849CE602649C95F52 0xED 0xB7 SWAP9 0xCE CALLDATACOPY 0xFB SMOD PUSH30 0xA5FF64736F6C634300080E00330000000000000000000000000000000000 ",
              "sourceMap": "1200:9566:32:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@__ERC721_init_891": {
                  "entryPoint": 7035,
                  "id": 891,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__ERC721_init_unchained_909": {
                  "entryPoint": 7761,
                  "id": 909,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__Ownable_init_26": {
                  "entryPoint": 7084,
                  "id": 26,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Ownable_init_unchained_37": {
                  "entryPoint": 7839,
                  "id": 37,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 5739,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 7887,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_checkOwner_68": {
                  "entryPoint": 6657,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 6118,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_1423": {
                  "entryPoint": 7439,
                  "id": 1423,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 5644,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 7388,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_sendFunds_5342": {
                  "entryPoint": 5849,
                  "id": 5342,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 6829,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 6747,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 6245,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 2001,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 3465,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@buyEdition_4984": {
                  "entryPoint": 4346,
                  "id": 4984,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@contractURI_5098": {
                  "entryPoint": 5344,
                  "id": 5098,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@createEdition_4875": {
                  "entryPoint": 2882,
                  "id": 4875,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@depositedForEdition_4741": {
                  "entryPoint": null,
                  "id": 4741,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@editions_4733": {
                  "entryPoint": null,
                  "id": 4733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1121": {
                  "entryPoint": 1962,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getOwnersOfEdition_5221": {
                  "entryPoint": 2283,
                  "id": 5221,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTokenIdsOfEdition_5158": {
                  "entryPoint": 3619,
                  "id": 5158,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_4824": {
                  "entryPoint": 3840,
                  "id": 4824,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 1816,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 3369,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 3599,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@royaltyInfo_5274": {
                  "entryPoint": 2681,
                  "id": 5274,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 3342,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 4228,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 3829,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setEndTime_5050": {
                  "entryPoint": 4284,
                  "id": 5050,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setStartTime_5033": {
                  "entryPoint": 5502,
                  "id": 5033,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_5309": {
                  "entryPoint": 1773,
                  "id": 5309,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 5564,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 3814,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_4133": {
                  "entryPoint": 7131,
                  "id": 4133,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenToEdition_4737": {
                  "entryPoint": null,
                  "id": 4737,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@tokenURI_5083": {
                  "entryPoint": 5141,
                  "id": 5083,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalSupply_5286": {
                  "entryPoint": 2604,
                  "id": 5286,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 2632,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 5384,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawFunds_5016": {
                  "entryPoint": 2508,
                  "id": 5016,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawnForEdition_4745": {
                  "entryPoint": null,
                  "id": 4745,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 9033,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_string": {
                  "entryPoint": 9151,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 8864,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32": {
                  "entryPoint": 8753,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 9520,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 8629,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 9348,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 8949,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 8508,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 9183,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 8319,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 10484,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 8462,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 8694,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint32": {
                  "entryPoint": 9476,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint32": {
                  "entryPoint": 8728,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 8399,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_storage": {
                  "entryPoint": 9985,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 9867,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 10138,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 10208,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10423,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 8552,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 8893,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 8443,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10341,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_830caf72009b03778634eed138b0056290b9f3b77248e8de74bf688ea7fabf66__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10246,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 9716,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 9926,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 9847,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 9794,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 9693,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 8355,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 9566,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 9668,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint32": {
                  "entryPoint": 9950,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 10321,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 9646,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 9825,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 9624,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 9011,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 8487,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 8297,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:25818:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "645:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "655:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "664:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "659:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "724:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "749:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "754:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "745:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "745:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "768:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "773:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "764:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "764:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "758:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "758:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "738:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "738:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "685:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "688:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "682:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "682:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "696:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "698:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "707:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "710:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "703:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "703:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "678:3:46",
                                "statements": []
                              },
                              "src": "674:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "813:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "826:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "831:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "822:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "822:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "840:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "815:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "815:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "815:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "802:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "805:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "799:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "796:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "623:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "628:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "633:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "905:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "915:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "935:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "929:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "919:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "957:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "962:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "950:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "950:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1011:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1000:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1000:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1022:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1027:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1018:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1018:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1034:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "978:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "978:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "978:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1050:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1065:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1078:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1086:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1074:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1074:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1095:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1091:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1091:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1070:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1070:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1061:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1061:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1102:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1057:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1057:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1050:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "882:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "889:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "897:3:46",
                            "type": ""
                          }
                        ],
                        "src": "855:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1239:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1256:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1267:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1249:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1249:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1249:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1279:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1305:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1317:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1328:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1313:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1313:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1287:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1287:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1279:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1208:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1219:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1230:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1118:220:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1413:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1459:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1468:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1471:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1461:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1461:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1461:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1434:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1430:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1430:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1455:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1426:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1426:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1423:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1484:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1507:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1494:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1484:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1379:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1390:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1402:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1343:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1629:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1639:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1651:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1662:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1647:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1647:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1639:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1681:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1696:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1712:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1717:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1708:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1708:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1721:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1704:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1704:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1692:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1692:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1674:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1674:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1674:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1598:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1609:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1620:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1528:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1781:86:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1845:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1854:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1857:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1847:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1847:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1847:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1804:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1815:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1830:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1835:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1826:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1826:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1839:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1822:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1822:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1811:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1811:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1801:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1801:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1794:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1794:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1791:70:46"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1770:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1736:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1959:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2005:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2014:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2017:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2007:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2007:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2007:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1980:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1989:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1976:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1976:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2001:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1972:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1972:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1969:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2030:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2056:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2043:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2043:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2034:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2100:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2075:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2075:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2075:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2115:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2125:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2115:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2139:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2166:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2177:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2162:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2162:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2149:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2149:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2139:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1917:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1928:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1872:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2343:507:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2353:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2363:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2357:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2374:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2392:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2403:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2388:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2388:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2378:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2422:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2433:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2415:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2415:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2415:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2445:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "2456:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "2449:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2471:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2491:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2485:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2485:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2475:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2514:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2522:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2507:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2507:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2507:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2538:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2549:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2560:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2545:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2545:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "2538:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2572:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2590:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2598:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2586:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2586:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2576:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2610:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2619:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2614:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2678:146:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2699:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2714:6:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2708:5:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2708:13:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "2731:3:46",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "2736:1:46",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2727:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2727:11:46"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2740:1:46",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "2723:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2723:19:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2704:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2704:39:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2692:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2692:52:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2692:52:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2757:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2768:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2773:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2764:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2764:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2757:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2789:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2803:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2811:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2799:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2799:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2789:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2640:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2643:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2637:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2637:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2651:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2653:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2662:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2665:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2658:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2658:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2653:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2633:3:46",
                                "statements": []
                              },
                              "src": "2629:195:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2833:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "2841:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2833:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2312:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2323:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2334:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2192:658:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2956:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2966:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2978:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2989:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2974:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2974:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2966:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3008:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3019:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3001:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3001:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3001:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2925:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2936:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2947:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2855:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3141:352:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3187:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3196:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3199:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3189:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3189:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3189:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3162:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3171:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3158:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3158:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3183:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3154:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3154:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3151:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3212:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3238:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3225:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3225:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3216:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3282:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3257:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3257:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3257:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3297:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3307:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3297:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3321:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3353:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3364:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3349:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3349:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3336:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3325:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3402:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3377:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3377:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3377:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3419:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3429:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3419:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3445:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3472:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3483:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3468:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3468:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3455:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3455:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3445:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3091:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3102:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3114:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3122:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3130:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3037:456:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3773:438:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3783:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3795:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3806:3:46",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3791:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3791:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3783:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3826:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3841:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3857:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3862:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3853:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3853:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3866:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3849:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3849:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3837:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3837:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3819:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3819:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3819:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3890:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3901:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3886:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3886:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3906:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3879:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3879:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3879:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3922:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3932:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3926:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3962:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3973:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3958:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3958:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3982:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3990:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3978:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3978:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3951:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3951:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3951:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4014:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4025:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4010:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4010:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "4034:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4042:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4030:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4030:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4003:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4003:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4003:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4066:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4077:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4062:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4062:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4087:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4095:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4083:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4083:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4055:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4055:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4055:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4119:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4130:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4115:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4115:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "4140:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4148:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4136:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4136:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4108:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4108:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4108:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4172:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4183:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4168:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4168:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4193:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4201:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4189:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4189:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4161:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4161:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4161:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3694:9:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "3705:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3713:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3721:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3729:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3737:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3745:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3753:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3764:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3498:713:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4303:161:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4349:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4358:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4361:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4351:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4351:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4351:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4324:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4333:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4320:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4320:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4345:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4316:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4316:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4313:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4374:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4397:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4384:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4384:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4374:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4416:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4443:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4454:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4439:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4439:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4426:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4426:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4416:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4261:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4272:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4284:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4292:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4216:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4598:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4608:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4620:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4631:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4616:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4616:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4608:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4650:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4665:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4681:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4686:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4677:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4677:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4690:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4673:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4673:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4661:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4661:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4643:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4643:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4643:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4714:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4725:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4710:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4710:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4730:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4703:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4703:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4703:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4559:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4570:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4578:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4589:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4469:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4796:115:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4806:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4828:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4815:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4815:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "4806:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4889:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4898:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4901:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4891:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4891:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4891:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4857:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "4868:5:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4875:10:46",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4864:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4864:22:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4854:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4854:33:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4847:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4847:41:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4844:61:46"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "4775:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4786:5:46",
                            "type": ""
                          }
                        ],
                        "src": "4748:163:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5075:455:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5122:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5131:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5134:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5124:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5124:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5124:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5096:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5105:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5092:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5092:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5117:3:46",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5088:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5088:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5085:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5147:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5173:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5160:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5160:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5151:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5217:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5192:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5192:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5192:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5232:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5242:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5232:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5256:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5283:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5294:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5279:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5279:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5266:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5266:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5256:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5307:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5339:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5350:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5335:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5335:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5317:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5317:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5307:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5363:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5395:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5406:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5391:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5391:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5373:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5373:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5363:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5419:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5451:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5462:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5447:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5447:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5429:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5429:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5419:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5476:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5508:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5519:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5504:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5504:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5486:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5486:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "5476:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5001:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5012:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5024:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5032:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5040:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5048:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5056:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "5064:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4916:614:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5605:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5651:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5660:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5663:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5653:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5653:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5653:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5626:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5635:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5622:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5622:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5647:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5618:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5618:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5615:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5676:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5702:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5689:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5689:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5680:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5746:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5721:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5721:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5721:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5761:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5771:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5761:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5571:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5582:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5594:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5535:247:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5938:481:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5948:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5958:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5952:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5969:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5987:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5998:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5983:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5983:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5973:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6017:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6028:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6010:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6010:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6010:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6040:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "6051:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "6044:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6066:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6086:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6080:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6080:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6070:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6109:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6117:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6102:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6102:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6102:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6133:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6144:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6155:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6140:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6140:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "6133:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6167:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6185:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6193:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6181:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6181:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6171:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6205:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6214:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6209:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6273:120:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6294:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6305:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6299:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6299:13:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6287:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6287:26:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6287:26:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6326:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6337:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6342:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6333:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6333:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6326:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6358:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "6372:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6380:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6368:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6368:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6358:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6235:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6238:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6232:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6232:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6246:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6248:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6257:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6260:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6253:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6253:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6248:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6228:3:46",
                                "statements": []
                              },
                              "src": "6224:169:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6402:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "6410:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6402:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5907:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5918:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5929:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5787:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6508:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6554:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6563:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6566:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6556:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6556:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6556:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6529:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6538:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6525:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6525:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6550:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6521:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6521:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6518:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6579:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6605:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6592:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6592:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6583:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6649:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6624:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6624:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6624:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6664:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6674:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6664:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6688:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6720:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6731:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6716:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6716:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6703:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6703:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6692:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6792:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6801:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6804:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6794:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6794:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6794:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6757:7:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "6780:7:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "6773:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6773:15:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6766:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6766:23:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6754:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6754:36:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6747:44:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6744:64:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6817:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "6827:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6817:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6466:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6477:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6489:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6497:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6424:416:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6877:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6894:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6901:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6906:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6897:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6897:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6887:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6887:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6887:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6934:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6937:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6927:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6927:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6927:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6958:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6961:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6951:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6951:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6951:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6845:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7052:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7062:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7072:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7066:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7117:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7119:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7119:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7119:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7105:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7113:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7102:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7102:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7099:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7148:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7162:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "7158:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7158:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7152:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7174:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7194:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7188:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7188:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7178:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7206:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7228:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7252:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "7260:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7248:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7248:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "7265:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "7244:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7244:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7270:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7240:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7240:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7275:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7236:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7224:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7224:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7210:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7338:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7340:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7340:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7340:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7297:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7309:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7294:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7294:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7317:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7329:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7314:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7314:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7291:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7291:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7288:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7376:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7380:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7369:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7369:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7369:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7400:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "7409:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "7400:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7431:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7439:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7424:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7424:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7424:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7484:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7493:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7496:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7486:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7486:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7486:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7465:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7470:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7461:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7461:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "7479:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7458:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7458:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7455:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7526:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7534:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7522:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7522:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "7541:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7546:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "7509:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7509:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7509:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "7577:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "7585:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7573:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7573:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7594:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7569:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7569:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7601:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7562:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7562:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7562:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "7021:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7026:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7034:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "7042:5:46",
                            "type": ""
                          }
                        ],
                        "src": "6977:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7667:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7716:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7725:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7728:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7718:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7718:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7718:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "7695:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7703:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7691:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7691:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "7710:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7687:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7687:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7680:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7680:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7677:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7741:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7789:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7797:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7785:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7785:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7817:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7804:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7804:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "7826:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "7750:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7750:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "7741:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7641:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7649:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "7657:5:46",
                            "type": ""
                          }
                        ],
                        "src": "7614:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8009:780:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8056:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8065:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8068:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8058:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8058:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8058:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8030:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8039:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8026:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8026:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8051:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8022:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8022:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8019:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8081:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8107:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8094:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8094:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8085:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8151:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8126:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8126:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8126:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8166:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8176:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8166:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8190:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8217:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8228:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8213:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8213:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8200:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8200:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8190:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8241:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8272:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8283:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8268:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8268:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8255:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8255:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8245:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8296:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8306:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8300:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8351:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8360:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8363:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8353:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8353:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8353:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8339:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8347:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8336:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8336:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8333:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8376:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8408:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8419:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8404:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8404:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8428:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "8386:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8386:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8376:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8445:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8478:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8489:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8474:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8474:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8461:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8461:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8449:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8522:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8531:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8534:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8524:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8524:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8524:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8508:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8518:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8505:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8505:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8502:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8547:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8579:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8590:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8575:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8575:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8601:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "8557:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8557:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8547:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8618:49:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8651:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8662:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8647:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8647:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8634:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8634:33:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8622:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8696:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8705:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8708:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8698:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8698:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8698:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8682:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8692:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8679:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8679:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8676:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8721:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8753:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8764:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8749:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8749:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8775:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "8731:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8731:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8721:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7943:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7954:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7966:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7974:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7982:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7990:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7998:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7841:948:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8924:665:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8971:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8980:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8983:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8973:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8973:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8973:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8945:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8954:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8941:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8941:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8966:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8937:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8937:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8934:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8996:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9022:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9009:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9009:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9000:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9066:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9041:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9041:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9041:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9081:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9091:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9081:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9105:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9137:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9148:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9133:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9133:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9120:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9120:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9109:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9186:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9161:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9161:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9161:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9203:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "9213:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9203:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9229:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9267:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9252:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9239:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9239:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9280:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9311:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9322:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9307:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9307:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9294:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9294:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9284:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9369:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9378:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9381:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9371:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9371:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9371:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9341:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9349:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9338:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9338:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9335:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9394:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9408:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9419:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9404:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9404:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9398:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9474:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9483:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9486:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9476:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9476:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9476:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9453:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9457:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9449:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9449:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9464:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9445:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9445:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9438:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9438:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9435:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9499:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9548:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9552:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9544:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9544:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9570:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "9557:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9557:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9575:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9509:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9509:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9499:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8866:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8877:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8889:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8897:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8905:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8913:6:46",
                            "type": ""
                          }
                        ],
                        "src": "8794:795:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9680:166:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9726:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9735:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9738:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9728:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9728:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9728:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9701:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9710:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9697:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9697:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9722:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9693:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9693:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9690:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9751:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9774:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9761:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9761:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9751:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9793:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9825:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9836:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9821:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9821:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "9803:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9803:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9793:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9638:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9649:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9661:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9669:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9594:252:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9938:301:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9984:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9993:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9996:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9986:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9986:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9986:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9959:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9968:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9955:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9955:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9980:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9951:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9951:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9948:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10009:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10035:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10022:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10022:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10013:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10079:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10054:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10054:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10054:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10094:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10104:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10094:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10118:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10150:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10161:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10146:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10146:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10133:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10133:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10122:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10199:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10174:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10174:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10174:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10216:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10226:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10216:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9896:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9907:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9919:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9927:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9851:388:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10299:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10309:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10323:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "10326:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "10319:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10319:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10309:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10340:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "10370:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10376:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "10366:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10366:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "10344:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10417:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10419:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "10433:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10441:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "10429:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10429:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10419:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "10397:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10390:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10390:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10387:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10507:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10528:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10535:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10540:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "10531:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10531:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10521:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10521:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10521:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10572:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10575:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10565:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10565:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10565:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10600:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10603:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10593:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10593:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10593:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "10463:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10486:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10494:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10483:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10483:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "10460:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10460:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10457:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "10279:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10288:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10244:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10803:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10820:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10831:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10813:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10813:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10813:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10854:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10865:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10850:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10850:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10870:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10843:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10843:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10843:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10893:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10904:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10889:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10909:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10882:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10882:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10882:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10964:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10975:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10960:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10960:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10980:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10953:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10953:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10953:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10993:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11005:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11016:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11001:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11001:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10993:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10780:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10794:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10629:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11205:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11222:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11233:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11215:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11215:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11215:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11267:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11252:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11272:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11245:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11245:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11245:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11295:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11306:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11291:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11291:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11311:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11284:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11284:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11284:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11366:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11377:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11362:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11362:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11382:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11355:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11355:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11355:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11424:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11436:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11447:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11432:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11432:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11424:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11182:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11196:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11031:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11494:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11511:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11518:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11523:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "11514:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11514:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11504:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11504:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11504:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11551:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11554:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11544:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11544:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11575:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11578:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11568:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11568:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11568:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11462:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11626:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11643:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11650:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11655:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "11646:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11646:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11636:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11636:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11636:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11683:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11686:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11676:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11676:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11676:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11707:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11710:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11700:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11700:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11700:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11594:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11773:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11804:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "11806:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11806:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11806:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11789:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11800:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "11796:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11796:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "11786:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11786:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11783:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11835:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11846:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11853:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11842:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11842:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "11835:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11755:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "11765:3:46",
                            "type": ""
                          }
                        ],
                        "src": "11726:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11915:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11937:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "11939:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11939:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11939:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11931:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11934:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11928:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11928:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11925:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11968:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11980:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "11983:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "11976:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11976:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "11968:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "11897:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "11900:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "11906:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11866:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12170:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12187:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12198:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12180:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12180:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12180:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12221:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12232:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12217:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12217:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12237:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12210:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12210:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12210:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12260:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12271:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12256:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12256:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12276:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12249:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12249:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12249:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12331:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12342:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12327:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12327:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12347:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12320:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12320:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12320:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12373:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12385:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12396:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12381:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12381:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12373:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12147:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12161:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11996:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12463:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12522:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12524:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12524:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12524:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "12494:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "12487:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12487:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "12480:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12480:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "12502:1:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12513:1:46",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "12509:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12509:6:46"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "12517:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "12505:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12505:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12499:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12499:21:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "12476:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12476:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12473:71:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12553:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12568:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12571:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "12564:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12564:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "12553:7:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12442:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12445:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "12451:7:46",
                            "type": ""
                          }
                        ],
                        "src": "12411:168:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12616:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12633:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12640:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12645:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12636:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12636:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12626:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12626:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12626:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12673:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12676:4:46",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12666:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12666:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12666:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12697:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12700:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12690:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12690:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12690:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12584:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12762:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12785:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "12787:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12787:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12787:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12782:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12775:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12775:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12772:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12816:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12825:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12828:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "12821:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12821:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "12816:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12747:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12750:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "12756:1:46",
                            "type": ""
                          }
                        ],
                        "src": "12716:120:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13082:385:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13092:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13104:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13115:3:46",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13100:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13100:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13092:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13135:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13150:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13166:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13171:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "13162:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13162:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13175:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "13158:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13158:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13146:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13146:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13128:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13128:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13128:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13199:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13210:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13195:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13195:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13215:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13188:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13188:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13188:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13231:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13241:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13235:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13271:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13282:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13267:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13267:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "13291:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13299:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13287:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13287:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13260:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13260:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13260:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13323:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13334:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13319:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13319:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "13343:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13351:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13339:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13339:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13312:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13312:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13312:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13375:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13386:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13371:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13371:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "13396:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13404:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13392:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13392:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13364:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13364:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13364:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13428:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13439:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13424:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13424:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "13449:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13457:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13445:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13445:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13417:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13417:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13417:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13011:9:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "13022:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13030:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13038:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13046:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13054:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13062:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13073:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12841:626:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13646:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13663:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13674:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13656:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13656:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13656:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13697:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13708:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13693:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13693:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13713:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13686:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13686:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13686:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13736:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13747:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13732:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13732:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13752:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13725:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13725:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13725:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13788:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13800:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13811:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13796:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13796:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13788:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13623:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13637:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13472:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13999:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14016:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14027:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14009:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14009:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14009:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14050:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14061:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14046:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14046:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14066:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14039:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14039:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14039:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14089:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14100:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14085:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14085:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14105:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14078:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14078:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14078:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14160:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14171:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14156:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14156:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14176:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14149:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14149:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14149:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14197:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14209:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14220:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14205:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14205:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14197:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13976:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13990:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13825:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14409:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14426:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14437:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14419:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14419:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14460:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14471:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14456:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14456:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14476:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14449:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14449:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14449:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14499:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14510:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14495:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14495:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14515:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14488:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14488:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14488:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14570:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14581:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14566:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14566:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14586:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14559:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14559:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14559:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14612:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14624:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14635:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14620:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14620:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14612:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14386:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14400:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14235:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14938:345:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14948:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14968:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14962:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14962:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "14952:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15010:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15018:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15006:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15006:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15025:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15030:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "14984:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14984:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14984:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15046:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15063:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15068:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15059:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15059:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15050:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15084:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15106:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15100:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15100:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15088:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15148:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15156:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15144:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15144:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15163:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15170:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15122:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15122:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15122:57:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15188:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15205:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15212:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15201:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15201:20:46"
                              },
                              "variables": [
                                {
                                  "name": "end_2",
                                  "nodeType": "YulTypedName",
                                  "src": "15192:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15237:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15244:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15230:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15230:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15230:18:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15257:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15268:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15275:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15264:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15264:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "15257:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "14906:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14911:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14919:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "14930:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14650:633:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15395:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15405:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15417:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15428:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15413:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15413:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15405:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15447:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15462:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15470:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15458:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15458:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15440:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15440:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15440:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15364:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15375:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15386:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15288:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15661:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15678:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15689:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15671:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15671:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15671:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15712:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15723:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15708:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15708:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15728:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15701:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15701:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15701:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15751:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15762:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15747:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15747:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15767:24:46",
                                    "type": "",
                                    "value": "Edition does not exist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15740:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15740:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15740:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15801:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15813:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15824:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15809:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15809:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15801:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15638:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15652:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15487:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16012:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16029:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16040:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16022:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16022:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16022:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16063:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16074:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16059:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16059:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16079:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16052:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16052:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16052:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16102:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16113:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16098:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16098:18:46"
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f7574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16118:34:46",
                                    "type": "",
                                    "value": "This edition is already sold out"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16091:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16091:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16091:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16173:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16184:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16169:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16169:18:46"
                                  },
                                  {
                                    "hexValue": "2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16189:3:46",
                                    "type": "",
                                    "value": "."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16162:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16162:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16162:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16202:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16214:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16225:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16210:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16210:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16202:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15989:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16003:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15838:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16414:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16431:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16442:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16424:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16424:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16424:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16465:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16476:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16461:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16461:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16481:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16454:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16454:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16454:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16504:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16515:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16500:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16500:18:46"
                                  },
                                  {
                                    "hexValue": "4d7573742073656e6420656e6f75676820746f20707572636861736520746865",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16520:34:46",
                                    "type": "",
                                    "value": "Must send enough to purchase the"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16493:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16493:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16493:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16575:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16586:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16571:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16571:18:46"
                                  },
                                  {
                                    "hexValue": "2065646974696f6e2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16591:11:46",
                                    "type": "",
                                    "value": " edition."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16564:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16564:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16564:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16612:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16624:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16635:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16620:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16620:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16612:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16391:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16405:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16240:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16824:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16841:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16852:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16834:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16834:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16834:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16875:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16886:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16871:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16871:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16891:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16864:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16864:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16864:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16914:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16925:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16910:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16910:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e206861736e27742073746172746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16930:24:46",
                                    "type": "",
                                    "value": "Auction hasn't started"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16903:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16903:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16903:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16964:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16976:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16987:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16972:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16972:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16964:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_830caf72009b03778634eed138b0056290b9f3b77248e8de74bf688ea7fabf66__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16801:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16815:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16650:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17175:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17192:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17203:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17185:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17185:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17185:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17226:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17222:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17242:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17215:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17215:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17215:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17265:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17276:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17261:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17261:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e2068617320656e646564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17281:19:46",
                                    "type": "",
                                    "value": "Auction has ended"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17254:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17254:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17254:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17310:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17322:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17333:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17318:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17318:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17310:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17152:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17166:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17001:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17395:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17422:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17424:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17424:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17424:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17411:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17418:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "17414:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17414:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17408:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17408:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17405:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17453:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17464:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17467:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17460:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17460:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "17453:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17378:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17381:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "17387:3:46",
                            "type": ""
                          }
                        ],
                        "src": "17347:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17526:155:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17536:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17546:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17540:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17565:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "17584:5:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17591:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17580:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17580:14:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17569:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17622:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17624:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17624:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17624:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17609:7:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17618:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "17606:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17606:15:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17603:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17653:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17664:7:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17673:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17660:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17660:15:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "17653:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "17508:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "17518:3:46",
                            "type": ""
                          }
                        ],
                        "src": "17480:201:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17785:93:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17795:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17807:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17818:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17803:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17803:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17795:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17837:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17852:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17860:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17848:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17848:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17830:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17830:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17830:42:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17754:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17765:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17776:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17686:192:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18057:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18074:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18085:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18067:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18067:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18067:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18108:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18119:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18104:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18104:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18124:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18097:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18097:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18097:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18147:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18158:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18143:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18143:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18163:34:46",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18136:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18136:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18136:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18218:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18229:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18214:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18214:18:46"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18234:17:46",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18207:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18207:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18207:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18261:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18273:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18284:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18269:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18269:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18261:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18034:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18048:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17883:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18355:65:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18372:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "18375:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18365:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18365:14:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18365:14:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18388:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18406:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18409:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "18396:9:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18396:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "18388:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "18338:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "18346:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18299:121:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18483:915:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18493:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18516:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18510:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18510:12:46"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "18497:9:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18531:15:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18545:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "18535:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18555:11:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18565:1:46",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18559:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18575:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18589:2:46"
                                  },
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "18593:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "18585:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18585:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "18575:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18612:44:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "18642:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18653:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18638:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18638:18:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "18616:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18695:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "18697:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "18711:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18719:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "18707:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18707:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "18697:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "18675:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18668:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18668:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "18665:61:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18735:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18745:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "18739:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18806:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18827:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "18834:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "18839:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "18830:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18830:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18820:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18820:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18820:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18871:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18874:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18864:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18864:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18864:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18899:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18902:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18892:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18892:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18892:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "18762:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "18785:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18793:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18782:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18782:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "18759:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18759:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "18756:161:46"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "18967:97:46",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "18988:3:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18997:9:46"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "19012:3:46",
                                                      "type": "",
                                                      "value": "255"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19008:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "19008:8:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "18993:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18993:24:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "18981:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18981:37:46"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "18981:37:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "19031:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "19042:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "19047:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "19038:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19038:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "19031:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "18960:104:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18965:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "19080:312:46",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "19094:51:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "19139:5:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "19109:29:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19109:36:46"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "19098:7:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "19158:10:46",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19167:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "19162:1:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "19235:111:46",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19264:3:46"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19269:1:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "19260:3:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "19260:11:46"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19279:7:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "19273:5:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "19273:14:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19253:6:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19253:35:46"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "19253:35:46"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "19305:27:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19320:7:46"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19329:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19316:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19316:16:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19305:7:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "19192:1:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "19195:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "19189:2:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19189:13:46"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "19203:19:46",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "19205:15:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19214:1:46"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19217:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19210:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19210:10:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19205:1:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "19185:3:46",
                                          "statements": []
                                        },
                                        "src": "19181:165:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "19359:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "19370:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "19375:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "19366:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19366:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "19359:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "19073:319:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19078:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "outOfPlaceEncoding",
                                "nodeType": "YulIdentifier",
                                "src": "18933:18:46"
                              },
                              "nodeType": "YulSwitch",
                              "src": "18926:466:46"
                            }
                          ]
                        },
                        "name": "abi_encode_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "18460:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "18467:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "18475:3:46",
                            "type": ""
                          }
                        ],
                        "src": "18425:973:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19736:381:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19746:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19782:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "19790:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "19756:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19756:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19750:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19803:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19823:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19817:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19817:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "19807:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19865:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19873:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19861:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19861:17:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19880:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "19884:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "19839:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19839:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19839:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19900:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19917:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "19921:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19913:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19913:15:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19904:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19944:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19951:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19937:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19937:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19937:18:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19964:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19986:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19980:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19980:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19968:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "20028:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20036:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20024:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20024:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20047:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20054:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20043:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20043:13:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20058:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "20002:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20002:65:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20002:65:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20076:35:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20091:5:46"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20098:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20087:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20087:20:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20109:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20083:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20083:28:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "20076:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "19696:3:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19701:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19709:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19717:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "19728:3:46",
                            "type": ""
                          }
                        ],
                        "src": "19403:714:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20359:124:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20369:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20405:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "20413:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "20379:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20379:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20373:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20433:2:46"
                                  },
                                  {
                                    "hexValue": "73746f726566726f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20437:12:46",
                                    "type": "",
                                    "value": "storefront"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20426:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20426:24:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20426:24:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20459:18:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20470:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20474:2:46",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20466:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20466:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "20459:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "20335:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20340:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "20351:3:46",
                            "type": ""
                          }
                        ],
                        "src": "20122:361:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20662:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20679:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20690:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20672:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20672:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20672:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20713:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20724:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20709:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20709:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20729:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20702:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20702:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20702:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20752:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20763:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20748:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20748:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20768:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20741:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20741:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20741:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20823:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20834:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20819:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20819:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20839:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20812:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20812:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20812:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20857:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20869:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20880:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20865:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20865:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20857:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20639:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20653:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20488:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21069:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21086:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21097:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21079:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21079:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21079:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21120:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21131:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21116:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21116:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21136:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21109:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21109:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21109:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21159:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21170:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21155:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21155:18:46"
                                  },
                                  {
                                    "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21175:31:46",
                                    "type": "",
                                    "value": "Insufficient balance for send"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21148:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21148:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21148:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21216:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21228:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21239:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21224:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21224:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21216:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21046:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21060:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20895:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21444:14:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21446:10:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "21453:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "21446:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "21428:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "21436:3:46",
                            "type": ""
                          }
                        ],
                        "src": "21253:205:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21637:239:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21654:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21665:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21647:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21647:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21647:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21688:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21699:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21684:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21684:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21704:2:46",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21677:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21677:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21677:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21727:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21738:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21723:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21723:18:46"
                                  },
                                  {
                                    "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21743:34:46",
                                    "type": "",
                                    "value": "Unable to send value: recipient "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21716:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21716:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21716:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21798:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21809:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21794:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21794:18:46"
                                  },
                                  {
                                    "hexValue": "6d61792068617665207265766572746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21814:19:46",
                                    "type": "",
                                    "value": "may have reverted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21787:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21787:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21787:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21843:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21855:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21866:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21851:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21851:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21843:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21614:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21628:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21463:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22055:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22072:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22083:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22065:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22065:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22065:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22106:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22117:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22102:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22102:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22122:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22095:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22095:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22095:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22145:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22156:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22141:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22141:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22161:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22134:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22134:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22134:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22216:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22227:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22212:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22212:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22232:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22205:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22205:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22205:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22249:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22261:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22272:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22257:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22257:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22249:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22032:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22046:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21881:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22461:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22478:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22489:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22471:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22471:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22471:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22512:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22523:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22508:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22508:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22528:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22501:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22501:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22501:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22551:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22562:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22547:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22547:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22567:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22540:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22540:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22622:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22633:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22618:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22618:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22638:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22611:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22611:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22611:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22654:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22666:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22677:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22662:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22662:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22654:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22438:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22452:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22287:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22866:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22883:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22894:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22876:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22876:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22876:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22917:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22928:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22913:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22913:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22933:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22906:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22906:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22906:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22956:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22967:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22952:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22952:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22972:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22945:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22945:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22945:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23016:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23028:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23039:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23024:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23024:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23016:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22843:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22857:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22692:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23227:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23244:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23255:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23237:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23237:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23237:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23278:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23289:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23274:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23274:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23294:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23267:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23267:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23267:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23317:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23328:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23313:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23313:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23333:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23306:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23306:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23306:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23370:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23382:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23393:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23378:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23378:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23370:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23204:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23218:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23053:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23581:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23598:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23609:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23591:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23591:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23591:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23632:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23643:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23628:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23628:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23648:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23621:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23621:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23621:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23671:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23682:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23667:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23667:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23687:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23660:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23660:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23660:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23742:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23753:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23738:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23738:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23758:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23731:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23731:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23731:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23781:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23793:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23804:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23789:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23789:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23781:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23558:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23572:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23407:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23857:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23880:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "23882:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23882:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23882:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "23877:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "23870:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23870:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "23867:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23911:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "23920:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "23923:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "23916:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23916:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "23911:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "23842:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "23845:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "23851:1:46",
                            "type": ""
                          }
                        ],
                        "src": "23819:112:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24110:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24127:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24138:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24120:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24120:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24120:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24161:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24172:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24157:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24157:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24177:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24150:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24150:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24150:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24200:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24211:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24196:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24196:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24216:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24189:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24189:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24189:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24271:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24282:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24267:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24267:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24287:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24260:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24260:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24260:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24317:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24329:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24340:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24325:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24325:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24317:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24087:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24101:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23936:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24529:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24546:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24557:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24539:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24539:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24539:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24580:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24591:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24576:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24576:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24596:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24569:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24569:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24569:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24619:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24630:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24615:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24615:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24635:34:46",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24608:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24608:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24608:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24679:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24691:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24702:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24687:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24687:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24679:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24506:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24520:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24355:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24890:178:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24907:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24918:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24900:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24900:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24900:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24941:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24952:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24937:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24937:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24957:2:46",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24930:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24930:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24930:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24980:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24991:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24976:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24976:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24996:30:46",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24969:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24969:58:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24969:58:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25036:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25048:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25059:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25044:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25044:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25036:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24867:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24881:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24716:352:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25276:286:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25286:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25304:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25309:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "25300:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25300:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25313:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "25296:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25296:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25290:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25331:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25346:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25354:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "25342:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25342:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25324:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25324:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25324:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25378:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25389:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25374:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25374:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25398:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25406:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "25394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25394:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25367:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25367:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25367:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25430:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25441:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25426:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25426:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25446:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25419:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25419:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25484:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25469:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25489:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25462:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25462:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25462:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25502:54:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "25528:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25540:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25551:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25536:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25536:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "25510:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25510:46:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25502:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25221:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "25232:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "25240:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25248:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25256:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25267:4:46",
                            "type": ""
                          }
                        ],
                        "src": "25073:489:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25647:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25693:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25702:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25705:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25695:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25695:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25695:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "25668:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25677:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "25664:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25664:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25689:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25660:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25660:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "25657:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25718:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25737:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25731:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25731:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "25722:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "25780:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "25756:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25756:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25756:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25795:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "25805:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "25795:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25613:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "25624:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25636:6:46",
                            "type": ""
                          }
                        ],
                        "src": "25567:249:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        let _1 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), and(value6, _1))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        value4 := abi_decode_uint32(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        let _1 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        mstore(end_2, \"/\")\n        end := add(end_2, 1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Edition does not exist\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"This edition is already sold out\")\n        mstore(add(headStart, 96), \".\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"Must send enough to purchase the\")\n        mstore(add(headStart, 96), \" edition.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_830caf72009b03778634eed138b0056290b9f3b77248e8de74bf688ea7fabf66__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Auction hasn't started\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Auction has ended\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint32(value) -> ret\n    {\n        let _1 := 0xffffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_string_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := 0\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        let _2 := 32\n        if eq(outOfPlaceEncoding, lt(length, _2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, length)\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        let length := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), _1, length)\n        let end_1 := add(_1, length)\n        mstore(end_1, \"/\")\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(end_1, 1), length_1)\n        end := add(add(end_1, length_1), 1)\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        mstore(_1, \"storefront\")\n        end := add(_1, 10)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Insufficient balance for send\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Unable to send value: recipient \")\n        mstore(add(headStart, 96), \"may have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xBD8616EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD8616EC EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0x74E79189 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3FAFEF29 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x234 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x207F JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x20FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x213C JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x9CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x319 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x395 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH4 0xFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 DUP4 AND PUSH1 0x60 DUP7 ADD MSTORE DUP3 AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x401 PUSH2 0x3FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21F6 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x2231 JUMP JUMPDEST PUSH2 0xB42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xE0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x502 PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x254 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xEE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x55D CALLDATASIZE PUSH1 0x4 PUSH2 0x22F5 JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x57D CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x28C PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x10FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x610 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x63D CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x14E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x2530 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x712 JUMPI POP PUSH2 0x712 DUP3 PUSH2 0x15BC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x753 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7A0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x775 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x783 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 DUP3 PUSH2 0x160C JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP3 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x84E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x86A JUMPI POP PUSH2 0x86A DUP2 CALLER PUSH2 0x67F JUMP JUMPDEST PUSH2 0x8DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x166B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x91F JUMPI PUSH2 0x91F PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x948 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x9B1 JUMPI PUSH2 0x979 DUP2 PUSH2 0xD29 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI PUSH2 0x98B PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0x9AD DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x9BB DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x950 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA28 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x16D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA39 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA43 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA52 CALLER DUP3 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH5 0x100000000 DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP3 SWAP2 PUSH2 0xB0D JUMPI MLOAD SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xB2A DUP4 DUP9 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0x2677 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xBB2 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR DUP2 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP8 DUP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP4 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL MUL SWAP4 SWAP1 SWAP4 AND PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT SWAP5 DUP4 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP3 SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0xC92 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xB3131D7D301F8CAEB40981CFFC627B1FDF324B5E4A23845B61C1A6AD2A25F385 SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG2 PUSH2 0xD06 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1084 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0xE21 PUSH1 0x0 PUSH2 0x1A5B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE57 JUMPI PUSH2 0xE57 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE80 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xED4 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI PUSH2 0xEBB PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0xED0 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xEDE DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE88 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST PUSH2 0xA28 CALLER DUP4 DUP4 PUSH2 0x1AAD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0xF20 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0xF3A JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xFCA DUP5 DUP5 PUSH2 0x1B7B JUMP JUMPDEST PUSH2 0xFD2 PUSH2 0x1BAC JUMP JUMPDEST PUSH2 0xFDB DUP7 PUSH2 0x1508 JUMP JUMPDEST DUP2 PUSH2 0xFE5 DUP7 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF6 SWAP3 SWAP2 SWAP1 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x101A SWAP3 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP PUSH2 0x1029 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1037 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x108E CALLER DUP4 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x10AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x10B6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x10C4 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 AND LT PUSH2 0x11D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE LT ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x12B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x105D58DD1A5BDB881A185CDB89DD081CDD185C9D1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND GT PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1327 CALLER PUSH2 0x1322 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1345 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x136D DUP4 PUSH2 0x26DE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP1 PUSH1 0xCD PUSH1 0x0 PUSH2 0x139A PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x13B5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP5 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1412 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1494 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x14AF SWAP1 PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x14B8 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x279A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14F4 SWAP2 SWAP1 PUSH2 0x27E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1510 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1412 DUP2 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1586 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x15ED JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x712 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x16A0 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x177B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x8E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17F2 DUP4 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1839 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x185D JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1852 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1878 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x193E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1949 PUSH1 0x0 DUP3 PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1972 SWAP1 DUP5 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x19A0 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xA28 DUP3 DUP3 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 PUSH2 0x1E9F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x1C02 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1C2C JUMPI DUP1 PUSH2 0x1C16 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C25 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2677 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x185D JUMPI PUSH2 0x1C86 PUSH1 0x1 DUP4 PUSH2 0x25DD JUMP JUMPDEST SWAP2 POP PUSH2 0x1C93 PUSH1 0xA DUP7 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1C9E SWAP1 PUSH1 0x30 PUSH2 0x26C6 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CB3 JUMPI PUSH2 0x1CB3 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1CD5 PUSH1 0xA DUP7 PUSH2 0x2677 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 JUMP JUMPDEST PUSH2 0x1CE7 DUP5 DUP5 DUP5 PUSH2 0x1865 JUMP JUMPDEST PUSH2 0x1CF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1DF3 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x1E8B SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8E6 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 CALLER PUSH2 0x1A5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1F13 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1F4E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1F4B SWAP2 DUP2 ADD SWAP1 PUSH2 0x28F4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1FAB JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1FA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x185D JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x1FDC SWAP1 PUSH2 0x255E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2017 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2044 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2044 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2029 JUMP JUMPDEST POP PUSH2 0x2050 SWAP3 SWAP2 POP PUSH2 0x2054 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20A6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x20E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x215A DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2184 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21D5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21E5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x222C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x224A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2255 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH2 0x226A PUSH1 0x40 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP4 POP PUSH2 0x2278 PUSH1 0x60 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP3 POP PUSH2 0x2286 PUSH1 0x80 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP2 POP PUSH2 0x2294 PUSH1 0xA0 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2313 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2364 JUMPI PUSH2 0x2364 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x238C JUMPI PUSH2 0x238C PUSH2 0x2333 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x23A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2349 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x23F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2402 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2432 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2454 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2477 DUP9 DUP3 DUP10 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x24A5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x24B5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x24E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24F8 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2349 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2527 PUSH1 0x20 DUP5 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x254E DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2328 DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2572 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2592 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x25D6 JUMPI PUSH2 0x25D6 PUSH2 0x25AE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EF PUSH2 0x25AE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x265C JUMPI PUSH2 0x265C PUSH2 0x25AE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2686 JUMPI PUSH2 0x2686 PUSH2 0x2661 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x269D DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x26B1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x26D9 PUSH2 0x25AE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x26F7 JUMPI PUSH2 0x26F7 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x271B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x273C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2750 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2761 JUMPI PUSH2 0x278E JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x278E JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2786 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x276D JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A6 DUP3 DUP7 PUSH2 0x2701 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x27B6 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x27D3 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27EC DUP3 DUP5 PUSH2 0x2701 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2860 JUMPI PUSH2 0x2860 PUSH2 0x2661 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x28EA SWAP1 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xE4 PUSH1 0xB7 0xEF PUSH16 0x39786F77F92A66849CE602649C95F52 0xED 0xB7 SWAP9 0xCE CALLDATACOPY 0xFB SMOD PUSH30 0xA5FF64736F6C634300080E00330000000000000000000000000000000000 ",
              "sourceMap": "1200:9566:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10099:301;;;;;;;;;;-1:-1:-1;10099:301:32;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;10099:301:32;;;;;;;;2931:98:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;;;;;-1:-1:-1;4407:167:7;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:46;;;1674:51;;1662:2;1647:18;4407:167:7;1528:203:46;3928:418:7;;;;;;;;;;-1:-1:-1;3928:418:7;;;;;:::i;:::-;;:::i;:::-;;8820:478:32;;;;;;;;;;-1:-1:-1;8820:478:32;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6462:545::-;;;;;;;;;;-1:-1:-1;6462:545:32;;;;;:::i;:::-;;:::i;9957:136::-;;;;;;;;;;;;;:::i;:::-;;;3001:25:46;;;2989:2;2974:18;9957:136:32;2855:177:46;5084:327:7;;;;;;;;;;-1:-1:-1;5084:327:7;;;;;:::i;:::-;;:::i;2319:43:32:-;;;;;;;;;;-1:-1:-1;2319:43:32;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2319:43:32;;;;;;;;;;;;;;;;-1:-1:-1;;;2319:43:32;;;;;-1:-1:-1;;;2319:43:32;;;;;-1:-1:-1;;;2319:43:32;;;;;;;;;;-1:-1:-1;;;;;3837:32:46;;;3819:51;;3901:2;3886:18;;3879:34;;;;3932:10;3978:15;;;3958:18;;;3951:43;;;;4030:15;;;4025:2;4010:18;;4003:43;4083:15;;4077:3;4062:19;;4055:44;4136:15;;3857:3;4115:19;;4108:44;4189:15;4183:3;4168:19;;4161:44;3806:3;3791:19;2319:43:32;3498:713:46;9455:496:32;;;;;;;;;;-1:-1:-1;9455:496:32;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4661:32:46;;;4643:51;;4725:2;4710:18;;4703:34;;;;4616:18;9455:496:32;4469:274:46;4096:781:32;;;;;;;;;;-1:-1:-1;4096:781:32;;;;;:::i;:::-;;:::i;5477:179:7:-;;;;;;;;;;-1:-1:-1;5477:179:7;;;;;:::i;:::-;;:::i;2410:49:32:-;;;;;;;;;;-1:-1:-1;2410:49:32;;;;;:::i;:::-;;;;;;;;;;;;;;2651:218:7;;;;;;;;;;-1:-1:-1;2651:218:7;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;;;;;-1:-1:-1;2390:204:7;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;8256:459:32:-;;;;;;;;;;-1:-1:-1;8256:459:32;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1441:85:0:-;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;3093:102:7;;;;;;;;;;;;;:::i;4641:153::-;;;;;;;;;;-1:-1:-1;4641:153:7;;;;;:::i;:::-;;:::i;3437:653:32:-;;;;;;;;;;-1:-1:-1;3437:653:32;;;;;:::i;:::-;;:::i;5722:315:7:-;;;;;;;;;;-1:-1:-1;5722:315:7;;;;;:::i;:::-;;:::i;7159:132:32:-;;;;;;;;;;-1:-1:-1;7159:132:32;;;;;:::i;:::-;;:::i;4883:1519::-;;;;;;:::i;:::-;;:::i;7427:375::-;;;;;;;;;;-1:-1:-1;7427:375:32;;;;;:::i;:::-;;:::i;2679:54::-;;;;;;;;;;-1:-1:-1;2679:54:32;;;;;:::i;:::-;;;;;;;;;;;;;;2538;;;;;;;;;;-1:-1:-1;2538:54:32;;;;;:::i;:::-;;;;;;;;;;;;;;7881:216;;;;;;;;;;;;;:::i;4860:162:7:-;;;;;;;;;;-1:-1:-1;4860:162:7;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;2321:198:0;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;7013:140:32:-;;;;;;;;;;-1:-1:-1;7013:140:32;;;;;:::i;:::-;;:::i;10099:301::-;10248:4;-1:-1:-1;;;;;;;;;10287:53:32;;;;:106;;;10344:49;10380:12;10344:35;:49::i;:::-;10268:125;10099:301;-1:-1:-1;;10099:301:32:o;2931:98:7:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;10831:2:46;4068:57:7;;;10813:21:46;10870:2;10850:18;;;10843:30;10909:34;10889:18;;;10882:62;-1:-1:-1;;;10960:18:46;;;10953:31;11001:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;11233:2:46;4136:171:7;;;11215:21:46;11272:2;11252:18;;;11245:30;11311:34;11291:18;;;11284:62;11382:32;11362:18;;;11355:60;11432:19;;4136:171:7;11031:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;8820:478:32:-;8917:32;8966:20;;;:8;:20;;;;;:28;;;8889:16;;8917:32;8966:28;;8952:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8952:43:32;-1:-1:-1;8917:78:32;-1:-1:-1;9005:13:32;9051:1;9033:227;9059:9;929:14:13;9054:2:32;:24;9033:227;;;9104:18;;;;:14;:18;;;;;;:32;;;9100:150;;9181:29;9207:2;9181:25;:29::i;:::-;9156:15;9172:5;9156:22;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9156:54:32;;;:22;;;;;;;;;;;:54;9228:7;;;;:::i;:::-;;;;9100:150;9080:4;;;;:::i;:::-;;;;9033:227;;;-1:-1:-1;9276:15:32;;8820:478;-1:-1:-1;;;8820:478:32:o;6462:545::-;6599:27;6663:31;;;:19;:31;;;;;;;;;6629:19;:31;;;;;;:65;;6663:31;6629:65;:::i;:::-;6800:31;;;;:19;:31;;;;;;;;;6766:19;:31;;;;;:65;6941:8;:20;;;;;:37;6599:95;;-1:-1:-1;6930:70:32;;-1:-1:-1;;;;;6941:37:32;6599:95;6930:10;:70::i;:::-;6514:493;6462:545;:::o;9957:136::-;10003:7;10051:1;10029:19;:9;929:14:13;;838:112;10029:19:32;:23;;;;:::i;:::-;10022:30;;9957:136;:::o;5084:327:7:-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;9455:496:32:-;9580:24;9668:20;;;:8;:20;;;;;;;;9643:45;;;;;;;;;-1:-1:-1;;;;;9643:45:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9643:45:32;;;;;;;;-1:-1:-1;;;9643:45:32;;;;;;;;-1:-1:-1;;;9643:45:32;;;;;;;;;9580:24;;9699:107;;9767:24;;-1:-1:-1;9767:24:32;;-1:-1:-1;9759:36:32;;9699:107;9845:18;;;;9883:24;;9837:27;;;;;9937:6;9910:23;9837:27;9910:10;:23;:::i;:::-;9909:34;;;;:::i;:::-;9875:69;;;;;;9455:496;;;;;;:::o;4096:781::-;1334:13:0;:11;:13::i;:::-;4361:255:32::1;;;;;;;;4401:17;-1:-1:-1::0;;;;;4361:255:32::1;;;;;4439:6;4361:255;;;;4468:1;4361:255;;;;;;4493:9;4361:255;;;;;;4528:11;4361:255;;;;;;4564:10;4361:255;;;;;;4597:8;4361:255;;;;::::0;4327:8:::1;:31;4336:21;:11;929:14:13::0;;838:112;4336:21:32::1;4327:31:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;4327:31:32;:289;;;;-1:-1:-1;;;;;4327:289:32;;::::1;-1:-1:-1::0;;;;;;4327:289:32;;::::1;;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;;4327:289:32::1;-1:-1:-1::0;;;;4327:289:32;;::::1;-1:-1:-1::0;;;4327:289:32::1;-1:-1:-1::0;;;;4327:289:32;;::::1;-1:-1:-1::0;;;4327:289:32::1;::::0;;;;-1:-1:-1;;4327:289:32;;::::1;::::0;::::1;-1:-1:-1::0;;4327:289:32;;;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;;::::0;;4660:21:::1;:11;929:14:13::0;;838:112;4660:21:32::1;4632:204;::::0;;-1:-1:-1;;;;;13146:32:46;;13128:51;;13210:2;13195:18;;13188:34;;;13241:10;13287:15;;;13267:18;;;13260:43;13339:15;;;13334:2;13319:18;;13312:43;13392:15;;;13386:3;13371:19;;13364:44;13445:15;;13166:3;13424:19;;13417:44;4632:204:32;;::::1;::::0;;;;13115:3:46;4632:204:32;;::::1;4847:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;4847:23:32::1;4096:781:::0;;;;;;:::o;5477:179:7:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;2651:218::-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;13674:2:46;2784:56:7;;;13656:21:46;13713:2;13693:18;;;13686:30;-1:-1:-1;;;13732:18:46;;;13725:54;13796:18;;2784:56:7;13472:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;14027:2:46;2481:73:7;;;14009:21:46;14066:2;14046:18;;;14039:30;14105:34;14085:18;;;14078:62;-1:-1:-1;;;14156:18:46;;;14149:39;14205:19;;2481:73:7;13825:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;8256:459:32:-;8355:34;8406:20;;;:8;:20;;;;;:28;;;8327:16;;8355:34;8406:28;;8392:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8392:43:32;-1:-1:-1;8355:80:32;-1:-1:-1;8445:13:32;8491:1;8473:202;8499:9;929:14:13;8494:2:32;:24;8473:202;;;8544:18;;;;:14;:18;;;;;;:32;;;8540:125;;8623:2;8596:17;8614:5;8596:24;;;;;;;;:::i;:::-;;;;;;;;;;:29;8643:7;;;;:::i;:::-;;;;8540:125;8520:4;;;;:::i;:::-;;;;8473:202;;3093:102:7;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;3437:653:32:-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;14437:2:46;3157:201:5;;;14419:21:46;14476:2;14456:18;;;14449:30;14515:34;14495:18;;;14488:62;-1:-1:-1;;;14566:18:46;;;14559:44;14620:19;;3157:201:5;14235:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;3635:29:32::1;3649:5;3656:7;3635:13;:29::i;:::-;3674:16;:14;:16::i;:::-;3762:25;3780:6;3762:17;:25::i;:::-;3891:8;3901:20;:9;:18;:20::i;:::-;3874:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3857:7;:71;;;;;;;;;;;;:::i;:::-;;3983:21;:9;1043:19:13::0;;1061:1;1043:19;;;956:123;3983:21:32::1;4060:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;4060:23:32::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;15440:36:46;;3553:14:5;;15428:2:46;15413:18;3553:14:5;;;;;;;3101:483;3437:653:32;;;;;:::o;5722:315:7:-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;7159:132:32:-;1334:13:0;:11;:13::i;:::-;7245:20:32::1;::::0;;;:8:::1;:20;::::0;;;;;:28:::1;;:39:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;7245:39:32::1;-1:-1:-1::0;;;;7245:39:32;;::::1;::::0;;;::::1;::::0;;7159:132::o;4883:1519::-;5134:1;5102:20;;;:8;:20;;;;;:29;;;;;;;;5094:68;;;;-1:-1:-1;;;5094:68:32;;15689:2:46;5094:68:32;;;15671:21:46;15728:2;15708:18;;;15701:30;-1:-1:-1;;;15747:18:46;;;15740:52;15809:18;;5094:68:32;15487:346:46;5094:68:32;5279:20;;;;:8;:20;;;;;:29;;;;;;;;;5248:28;;:60;5240:106;;;;-1:-1:-1;;;5240:106:32;;16040:2:46;5240:106:32;;;16022:21:46;16079:2;16059:18;;;16052:30;16118:34;16098:18;;;16091:62;-1:-1:-1;;;16169:18:46;;;16162:31;16210:19;;5240:106:32;15838:397:46;5240:106:32;5440:20;;;;:8;:20;;;;;:26;;;5427:9;:39;;5419:93;;;;-1:-1:-1;;;5419:93:32;;16442:2:46;5419:93:32;;;16424:21:46;16481:2;16461:18;;;16454:30;16520:34;16500:18;;;16493:62;-1:-1:-1;;;16571:18:46;;;16564:39;16620:19;;5419:93:32;16240:405:46;5419:93:32;5585:20;;;;:8;:20;;;;;:30;;;5618:15;-1:-1:-1;;;5585:30:32;;;;;:48;5577:83;;;;-1:-1:-1;;;5577:83:32;;16852:2:46;5577:83:32;;;16834:21:46;16891:2;16871:18;;;16864:30;-1:-1:-1;;;16910:18:46;;;16903:52;16972:18;;5577:83:32;16650:346:46;5577:83:32;5730:20;;;;:8;:20;;;;;:28;;;5761:15;-1:-1:-1;;;5730:28:32;;;;;:46;5722:76;;;;-1:-1:-1;;;5722:76:32;;17203:2:46;5722:76:32;;;17185:21:46;17242:2;17222:18;;;17215:30;-1:-1:-1;;;17261:18:46;;;17254:47;17318:18;;5722:76:32;17001:341:46;5722:76:32;5874:38;5880:10;5892:19;:9;929:14:13;;838:112;5892:19:32;5874:5;:38::i;:::-;5976:31;;;;:19;:31;;;;;:44;;6011:9;;5976:31;:44;;6011:9;;5976:44;:::i;:::-;;;;-1:-1:-1;;6095:20:32;;;;:8;:20;;;;;:28;;:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6246:10;6208:14;:35;6223:19;:9;929:14:13;;838:112;6223:19:32;6208:35;;;;;;;;;;;-1:-1:-1;6208:35:32;:48;6352:10;6301:19;:9;929:14:13;;838:112;6301:19:32;6322:20;;;;:8;:20;;;;;;;;;:28;;;6272:91;;6322:28;;;;17830:42:46;;6322:20:32;;6272:91;;17803:18:46;6272:91:32;;;;;;;6374:21;:9;1043:19:13;;1061:1;1043:19;;;956:123;6374:21:32;4883:1519;:::o;7427:375::-;7571:4:7;7594:16;;;:7;:16;;;;;;7493:13:32;;-1:-1:-1;;;;;7594:16:7;7518:77:32;;;;-1:-1:-1;;;7518:77:32;;18085:2:46;7518:77:32;;;18067:21:46;18124:2;18104:18;;;18097:30;18163:34;18143:18;;;18136:62;-1:-1:-1;;;18214:18:46;;;18207:45;18269:19;;7518:77:32;17883:411:46;7518:77:32;7732:24;;;;:14;:24;;;;;;7723:7;;7732:35;;:33;:35::i;:::-;7774:19;:8;:17;:19::i;:::-;7706:88;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7692:103;;7427:375;;;:::o;7881:216::-;7925:13;8067:7;8050:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;8036:54;;7881:216;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;20690:2:46;2401:73:0::1;::::0;::::1;20672:21:46::0;20729:2;20709:18;;;20702:30;20768:34;20748:18;;;20741:62;-1:-1:-1;;;20819:18:46;;;20812:36;20865:19;;2401:73:0::1;20488:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;7013:140:32:-:0;1334:13:0;:11;:13::i;:::-;7103:20:32::1;::::0;;;:8:::1;:20;::::0;;;;;:30:::1;;:43:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;7103:43:32::1;-1:-1:-1::0;;;;7103:43:32;;::::1;::::0;;;::::1;::::0;;7013:140::o;1987:344:7:-;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;1060:166:17;12173:133:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;13674:2:46;12246:53:7;;;13656:21:46;13713:2;13693:18;;;13686:30;-1:-1:-1;;;13732:18:46;;;13725:54;13796:18;;12246:53:7;13472:348:46;11464:182:7;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;10456:308:32:-;10572:7;10547:21;:32;;10539:74;;;;-1:-1:-1;;;10539:74:32;;21097:2:46;10539:74:32;;;21079:21:46;21136:2;21116:18;;;21109:30;21175:31;21155:18;;;21148:59;21224:18;;10539:74:32;20895:353:46;10539:74:32;10625:12;10643:10;-1:-1:-1;;;;;10643:15:32;10666:7;10643:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10624:54;;;10696:7;10688:69;;;;-1:-1:-1;;;10688:69:32;;21665:2:46;10688:69:32;;;21647:21:46;21704:2;21684:18;;;21677:30;21743:34;21723:18;;;21716:62;-1:-1:-1;;;21794:18:46;;;21787:47;21851:19;;10688:69:32;21463:413:46;7789:272:7;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;22083:2:46;10855:92:7;;;22065:21:46;22122:2;22102:18;;;22095:30;22161:34;22141:18;;;22134:62;-1:-1:-1;;;22212:18:46;;;22205:35;22257:19;;10855:92:7;21881:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;22489:2:46;10957:65:7;;;22471:21:46;22528:2;22508:18;;;22501:30;22567:34;22547:18;;;22540:62;-1:-1:-1;;;22618:18:46;;;22611:34;22662:19;;10957:65:7;22287:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;22894:2:46;1654:68:0;;;22876:21:46;;;22913:18;;;22906:30;22972:34;22952:18;;;22945:62;23024:18;;1654:68:0;22692:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;11782:307:7:-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;23255:2:46;11915:55:7;;;23237:21:46;23294:2;23274:18;;;23267:30;23333:27;23313:18;;;23306:55;23378:18;;11915:55:7;23053:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;1605:149::-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1708:39:7::1;1732:5;1739:7;1708:23;:39::i;1003:95:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;392:703:30:-:0;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:30;;;;;;;;;;;;-1:-1:-1;;;691:10:30;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:30;;-1:-1:-1;837:2:30;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:30;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:30;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:30;;;;;;;;-1:-1:-1;1036:11:30;1045:2;1036:11;;:::i;:::-;;;908:150;;6898:305:7;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;9351:427::-;-1:-1:-1;;;;;9430:16:7;;9422:61;;;;-1:-1:-1;;;9422:61:7;;24557:2:46;9422:61:7;;;24539:21:46;;;24576:18;;;24569:30;24635:34;24615:18;;;24608:62;24687:18;;9422:61:7;24355:356:46;9422:61:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;:30;9493:58;;;;-1:-1:-1;;;9493:58:7;;24918:2:46;9493:58:7;;;24900:21:46;24957:2;24937:18;;;24930:30;24996;24976:18;;;24969:58;25044:18;;9493:58:7;24716:352:46;9493:58:7;-1:-1:-1;;;;;9618:13:7;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:7;-1:-1:-1;;;;;9646:21:7;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;6514:493:32;6462:545;:::o;1760:160:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1873:13:7;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1896:17:7;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;1104:111:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;12858:853:7:-:0;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;12858:853;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:46;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:46:o;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:46;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:46;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:46:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:46;;1343:180;-1:-1:-1;1343:180:46:o;1736:131::-;-1:-1:-1;;;;;1811:31:46;;1801:42;;1791:70;;1857:1;1854;1847:12;1872:315;1940:6;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2056:9;2043:23;2075:31;2100:5;2075:31;:::i;:::-;2125:5;2177:2;2162:18;;;;2149:32;;-1:-1:-1;;;1872:315:46:o;2192:658::-;2363:2;2415:21;;;2485:13;;2388:18;;;2507:22;;;2334:4;;2363:2;2586:15;;;;2560:2;2545:18;;;2334:4;2629:195;2643:6;2640:1;2637:13;2629:195;;;2708:13;;-1:-1:-1;;;;;2704:39:46;2692:52;;2799:15;;;;2764:12;;;;2740:1;2658:9;2629:195;;;-1:-1:-1;2841:3:46;;2192:658;-1:-1:-1;;;;;;2192:658:46:o;3037:456::-;3114:6;3122;3130;3183:2;3171:9;3162:7;3158:23;3154:32;3151:52;;;3199:1;3196;3189:12;3151:52;3238:9;3225:23;3257:31;3282:5;3257:31;:::i;:::-;3307:5;-1:-1:-1;3364:2:46;3349:18;;3336:32;3377:33;3336:32;3377:33;:::i;:::-;3037:456;;3429:7;;-1:-1:-1;;;3483:2:46;3468:18;;;;3455:32;;3037:456::o;4216:248::-;4284:6;4292;4345:2;4333:9;4324:7;4320:23;4316:32;4313:52;;;4361:1;4358;4351:12;4313:52;-1:-1:-1;;4384:23:46;;;4454:2;4439:18;;;4426:32;;-1:-1:-1;4216:248:46:o;4748:163::-;4815:20;;4875:10;4864:22;;4854:33;;4844:61;;4901:1;4898;4891:12;4844:61;4748:163;;;:::o;4916:614::-;5024:6;5032;5040;5048;5056;5064;5117:3;5105:9;5096:7;5092:23;5088:33;5085:53;;;5134:1;5131;5124:12;5085:53;5173:9;5160:23;5192:31;5217:5;5192:31;:::i;:::-;5242:5;-1:-1:-1;5294:2:46;5279:18;;5266:32;;-1:-1:-1;5317:37:46;5350:2;5335:18;;5317:37;:::i;:::-;5307:47;;5373:37;5406:2;5395:9;5391:18;5373:37;:::i;:::-;5363:47;;5429:38;5462:3;5451:9;5447:19;5429:38;:::i;:::-;5419:48;;5486:38;5519:3;5508:9;5504:19;5486:38;:::i;:::-;5476:48;;4916:614;;;;;;;;:::o;5535:247::-;5594:6;5647:2;5635:9;5626:7;5622:23;5618:32;5615:52;;;5663:1;5660;5653:12;5615:52;5702:9;5689:23;5721:31;5746:5;5721:31;:::i;5787:632::-;5958:2;6010:21;;;6080:13;;5983:18;;;6102:22;;;5929:4;;5958:2;6181:15;;;;6155:2;6140:18;;;5929:4;6224:169;6238:6;6235:1;6232:13;6224:169;;;6299:13;;6287:26;;6368:15;;;;6333:12;;;;6260:1;6253:9;6224:169;;6424:416;6489:6;6497;6550:2;6538:9;6529:7;6525:23;6521:32;6518:52;;;6566:1;6563;6556:12;6518:52;6605:9;6592:23;6624:31;6649:5;6624:31;:::i;:::-;6674:5;-1:-1:-1;6731:2:46;6716:18;;6703:32;6773:15;;6766:23;6754:36;;6744:64;;6804:1;6801;6794:12;6744:64;6827:7;6817:17;;;6424:416;;;;;:::o;6845:127::-;6906:10;6901:3;6897:20;6894:1;6887:31;6937:4;6934:1;6927:15;6961:4;6958:1;6951:15;6977:632;7042:5;7072:18;7113:2;7105:6;7102:14;7099:40;;;7119:18;;:::i;:::-;7194:2;7188:9;7162:2;7248:15;;-1:-1:-1;;7244:24:46;;;7270:2;7240:33;7236:42;7224:55;;;7294:18;;;7314:22;;;7291:46;7288:72;;;7340:18;;:::i;:::-;7380:10;7376:2;7369:22;7409:6;7400:15;;7439:6;7431;7424:22;7479:3;7470:6;7465:3;7461:16;7458:25;7455:45;;;7496:1;7493;7486:12;7455:45;7546:6;7541:3;7534:4;7526:6;7522:17;7509:44;7601:1;7594:4;7585:6;7577;7573:19;7569:30;7562:41;;;;6977:632;;;;;:::o;7614:222::-;7657:5;7710:3;7703:4;7695:6;7691:17;7687:27;7677:55;;7728:1;7725;7718:12;7677:55;7750:80;7826:3;7817:6;7804:20;7797:4;7789:6;7785:17;7750:80;:::i;7841:948::-;7966:6;7974;7982;7990;7998;8051:3;8039:9;8030:7;8026:23;8022:33;8019:53;;;8068:1;8065;8058:12;8019:53;8107:9;8094:23;8126:31;8151:5;8126:31;:::i;:::-;8176:5;-1:-1:-1;8228:2:46;8213:18;;8200:32;;-1:-1:-1;8283:2:46;8268:18;;8255:32;8306:18;8336:14;;;8333:34;;;8363:1;8360;8353:12;8333:34;8386:50;8428:7;8419:6;8408:9;8404:22;8386:50;:::i;:::-;8376:60;;8489:2;8478:9;8474:18;8461:32;8445:48;;8518:2;8508:8;8505:16;8502:36;;;8534:1;8531;8524:12;8502:36;8557:52;8601:7;8590:8;8579:9;8575:24;8557:52;:::i;:::-;8547:62;;8662:3;8651:9;8647:19;8634:33;8618:49;;8692:2;8682:8;8679:16;8676:36;;;8708:1;8705;8698:12;8676:36;;8731:52;8775:7;8764:8;8753:9;8749:24;8731:52;:::i;:::-;8721:62;;;7841:948;;;;;;;;:::o;8794:795::-;8889:6;8897;8905;8913;8966:3;8954:9;8945:7;8941:23;8937:33;8934:53;;;8983:1;8980;8973:12;8934:53;9022:9;9009:23;9041:31;9066:5;9041:31;:::i;:::-;9091:5;-1:-1:-1;9148:2:46;9133:18;;9120:32;9161:33;9120:32;9161:33;:::i;:::-;9213:7;-1:-1:-1;9267:2:46;9252:18;;9239:32;;-1:-1:-1;9322:2:46;9307:18;;9294:32;9349:18;9338:30;;9335:50;;;9381:1;9378;9371:12;9335:50;9404:22;;9457:4;9449:13;;9445:27;-1:-1:-1;9435:55:46;;9486:1;9483;9476:12;9435:55;9509:74;9575:7;9570:2;9557:16;9552:2;9548;9544:11;9509:74;:::i;:::-;9499:84;;;8794:795;;;;;;;:::o;9594:252::-;9661:6;9669;9722:2;9710:9;9701:7;9697:23;9693:32;9690:52;;;9738:1;9735;9728:12;9690:52;9774:9;9761:23;9751:33;;9803:37;9836:2;9825:9;9821:18;9803:37;:::i;:::-;9793:47;;9594:252;;;;;:::o;9851:388::-;9919:6;9927;9980:2;9968:9;9959:7;9955:23;9951:32;9948:52;;;9996:1;9993;9986:12;9948:52;10035:9;10022:23;10054:31;10079:5;10054:31;:::i;:::-;10104:5;-1:-1:-1;10161:2:46;10146:18;;10133:32;10174:33;10133:32;10174:33;:::i;10244:380::-;10323:1;10319:12;;;;10366;;;10387:61;;10441:4;10433:6;10429:17;10419:27;;10387:61;10494:2;10486:6;10483:14;10463:18;10460:38;10457:161;;10540:10;10535:3;10531:20;10528:1;10521:31;10575:4;10572:1;10565:15;10603:4;10600:1;10593:15;10457:161;;10244:380;;;:::o;11462:127::-;11523:10;11518:3;11514:20;11511:1;11504:31;11554:4;11551:1;11544:15;11578:4;11575:1;11568:15;11594:127;11655:10;11650:3;11646:20;11643:1;11636:31;11686:4;11683:1;11676:15;11710:4;11707:1;11700:15;11726:135;11765:3;11786:17;;;11783:43;;11806:18;;:::i;:::-;-1:-1:-1;11853:1:46;11842:13;;11726:135::o;11866:125::-;11906:4;11934:1;11931;11928:8;11925:34;;;11939:18;;:::i;:::-;-1:-1:-1;11976:9:46;;11866:125::o;11996:410::-;12198:2;12180:21;;;12237:2;12217:18;;;12210:30;12276:34;12271:2;12256:18;;12249:62;-1:-1:-1;;;12342:2:46;12327:18;;12320:44;12396:3;12381:19;;11996:410::o;12411:168::-;12451:7;12517:1;12513;12509:6;12505:14;12502:1;12499:21;12494:1;12487:9;12480:17;12476:45;12473:71;;;12524:18;;:::i;:::-;-1:-1:-1;12564:9:46;;12411:168::o;12584:127::-;12645:10;12640:3;12636:20;12633:1;12626:31;12676:4;12673:1;12666:15;12700:4;12697:1;12690:15;12716:120;12756:1;12782;12772:35;;12787:18;;:::i;:::-;-1:-1:-1;12821:9:46;;12716:120::o;14650:633::-;14930:3;14968:6;14962:13;14984:53;15030:6;15025:3;15018:4;15010:6;15006:17;14984:53;:::i;:::-;15100:13;;15059:16;;;;15122:57;15100:13;15059:16;15156:4;15144:17;;15122:57;:::i;:::-;-1:-1:-1;;;15201:20:46;;15230:18;;;15275:1;15264:13;;14650:633;-1:-1:-1;;;;14650:633:46:o;17347:128::-;17387:3;17418:1;17414:6;17411:1;17408:13;17405:39;;;17424:18;;:::i;:::-;-1:-1:-1;17460:9:46;;17347:128::o;17480:201::-;17518:3;17546:10;17591:2;17584:5;17580:14;17618:2;17609:7;17606:15;17603:41;;17624:18;;:::i;:::-;17673:1;17660:15;;17480:201;-1:-1:-1;;;17480:201:46:o;18425:973::-;18510:12;;18475:3;;18565:1;18585:18;;;;18638;;;;18665:61;;18719:4;18711:6;18707:17;18697:27;;18665:61;18745:2;18793;18785:6;18782:14;18762:18;18759:38;18756:161;;18839:10;18834:3;18830:20;18827:1;18820:31;18874:4;18871:1;18864:15;18902:4;18899:1;18892:15;18756:161;18933:18;18960:104;;;;19078:1;19073:319;;;;18926:466;;18960:104;-1:-1:-1;;18993:24:46;;18981:37;;19038:16;;;;-1:-1:-1;18960:104:46;;19073:319;18372:1;18365:14;;;18409:4;18396:18;;19167:1;19181:165;19195:6;19192:1;19189:13;19181:165;;;19273:14;;19260:11;;;19253:35;19316:16;;;;19210:10;;19181:165;;;19185:3;;19375:6;19370:3;19366:16;19359:23;;18926:466;;;;;;;18425:973;;;;:::o;19403:714::-;19728:3;19756:38;19790:3;19782:6;19756:38;:::i;:::-;19823:6;19817:13;19839:52;19884:6;19880:2;19873:4;19865:6;19861:17;19839:52;:::i;:::-;-1:-1:-1;;;19913:15:46;;19937:18;;;19980:13;;20002:65;19980:13;20054:1;20043:13;;20036:4;20024:17;;20002:65;:::i;:::-;20087:20;20109:1;20083:28;;19403:714;-1:-1:-1;;;;;19403:714:46:o;20122:361::-;20351:3;20379:38;20413:3;20405:6;20379:38;:::i;:::-;-1:-1:-1;;;20426:24:46;;20474:2;20466:11;;20122:361;-1:-1:-1;;;20122:361:46:o;23407:407::-;23609:2;23591:21;;;23648:2;23628:18;;;23621:30;23687:34;23682:2;23667:18;;23660:62;-1:-1:-1;;;23753:2:46;23738:18;;23731:41;23804:3;23789:19;;23407:407::o;23819:112::-;23851:1;23877;23867:35;;23882:18;;:::i;:::-;-1:-1:-1;23916:9:46;;23819:112::o;23936:414::-;24138:2;24120:21;;;24177:2;24157:18;;;24150:30;24216:34;24211:2;24196:18;;24189:62;-1:-1:-1;;;24282:2:46;24267:18;;24260:48;24340:3;24325:19;;23936:414::o;25073:489::-;-1:-1:-1;;;;;25342:15:46;;;25324:34;;25394:15;;25389:2;25374:18;;25367:43;25441:2;25426:18;;25419:34;;;25489:3;25484:2;25469:18;;25462:31;;;25267:4;;25510:46;;25536:19;;25528:6;25510:46;:::i;:::-;25502:54;25073:489;-1:-1:-1;;;;;;25073:489:46:o;25567:249::-;25636:6;25689:2;25677:9;25668:7;25664:23;25660:32;25657:52;;;25705:1;25702;25695:12;25657:52;25737:9;25731:16;25756:30;25780:5;25756:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2113400",
                "executionCost": "2250",
                "totalCost": "2115650"
              },
              "external": {
                "approve(address,uint256)": "infinite",
                "balanceOf(address)": "2694",
                "buyEdition(uint256)": "infinite",
                "contractURI()": "infinite",
                "createEdition(address,uint256,uint32,uint32,uint32,uint32)": "infinite",
                "depositedForEdition(uint256)": "2549",
                "editions(uint256)": "7038",
                "getApproved(uint256)": "4815",
                "getOwnersOfEdition(uint256)": "infinite",
                "getTokenIdsOfEdition(uint256)": "infinite",
                "initialize(address,uint256,string,string,string)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "owner()": "2421",
                "ownerOf(uint256)": "2627",
                "renounceOwnership()": "infinite",
                "royaltyInfo(uint256,uint256)": "7334",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26722",
                "setEndTime(uint256,uint32)": "26934",
                "setStartTime(uint256,uint32)": "26933",
                "supportsInterface(bytes4)": "infinite",
                "symbol()": "infinite",
                "tokenToEdition(uint256)": "2505",
                "tokenURI(uint256)": "infinite",
                "totalSupply()": "2512",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite",
                "withdrawFunds(uint256)": "infinite",
                "withdrawnForEdition(uint256)": "2527"
              },
              "internal": {
                "_sendFunds(address payable,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "buyEdition(uint256)": "bd8616ec",
              "contractURI()": "e8a3d485",
              "createEdition(address,uint256,uint32,uint32,uint32,uint32)": "3fafef29",
              "depositedForEdition(uint256)": "e1a3d573",
              "editions(uint256)": "279c806e",
              "getApproved(uint256)": "081812fc",
              "getOwnersOfEdition(uint256)": "13dd2960",
              "getTokenIdsOfEdition(uint256)": "74e79189",
              "initialize(address,uint256,string,string,string)": "abfc83a0",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "renounceOwnership()": "715018a6",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setEndTime(uint256,uint32)": "bb314ca1",
              "setStartTime(uint256,uint32)": "fbab9e04",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenToEdition(uint256)": "602787ed",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply()": "18160ddd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdrawFunds(uint256)": "155dd5ee",
              "withdrawnForEdition(uint256)": "d3bb0528"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"}],\"name\":\"EditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"}],\"name\":\"EditionPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"buyEdition\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"createEdition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositedForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"editions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"getOwnersOfEdition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"getTokenIdsOfEdition\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_artistId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"setEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"}],\"name\":\"setStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawnForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SoundXYZ\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getOwnersOfEdition(uint256)\":{\"details\":\"Get owners of a given edition id\",\"params\":{\"_editionId\":\"edition id\"}},\"getTokenIdsOfEdition(uint256)\":{\"details\":\"Get token ids for a given edition id\",\"params\":{\"_editionId\":\"edition id\"}},\"initialize(address,uint256,string,string,string)\":{\"params\":{\"_name\":\"Name of artist\",\"_owner\":\"Owner of edition\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Get royalty information for token\",\"params\":{\"_editionId\":\"edition id\",\"_salePrice\":\"Sale price for the token\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Artist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Artist.sol\":\"Artist\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"contracts/Artist.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\n\\n// This contract is a combination of Mirror.xyz's Editions.sol and Zora's SingleEditionMintable.sol\\n\\n/**\\n * @title Artist\\n * @author SoundXYZ\\n */\\ncontract Artist is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // todo (optimization): link Strings as a deployed library\\n    using Strings for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n    }\\n\\n    // ============ Storage ============\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId;\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n\\n    // ============ Events ============\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer\\n    );\\n\\n    // ============ Methods ============\\n\\n    /**\\n      @param _owner Owner of edition\\n      @param _name Name of artist\\n    */\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set token id start to be 1 not 0\\n        atTokenId.increment();\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime\\n    ) external onlyOwner {\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    function buyEdition(uint256 _editionId) external payable {\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(editions[_editionId].quantity > 0, 'Edition does not exist');\\n        // Check that there are still tokens available to purchase.\\n        require(editions[_editionId].numSold < editions[_editionId].quantity, 'This edition is already sold out.');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= editions[_editionId].price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases before the start time\\n        require(editions[_editionId].startTime < block.timestamp, \\\"Auction hasn't started\\\");\\n        // Don't allow purchases after the end time\\n        require(editions[_editionId].endTime > block.timestamp, 'Auction has ended');\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, atTokenId.current());\\n        // Update the deposited total for the edition\\n        depositedForEdition[_editionId] += msg.value;\\n        // Increment the number of tokens sold for this edition.\\n        editions[_editionId].numSold++;\\n        // Store the mapping of token id to the edition being purchased.\\n        tokenToEdition[atTokenId.current()] = _editionId;\\n\\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\\n\\n        atTokenId.increment();\\n    }\\n\\n    // ============ Operational Methods ============\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n    }\\n\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n    }\\n\\n    // ============ NFT Methods ============\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\\n    }\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    // ============ Extensions =================\\n\\n    /**\\n        @dev Get token ids for a given edition id\\n        @param _editionId edition id\\n     */\\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                tokenIdsOfEdition[index] = id;\\n                index++;\\n            }\\n        }\\n        return tokenIdsOfEdition;\\n    }\\n\\n    /**\\n        @dev Get owners of a given edition id\\n        @param _editionId edition id\\n     */\\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\\n                index++;\\n            }\\n        }\\n        return ownersOfEdition;\\n    }\\n\\n    /**\\n        @dev Get royalty information for token\\n        @param _editionId edition id\\n        @param _salePrice Sale price for the token\\n     */\\n    function royaltyInfo(uint256 _editionId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        Edition memory edition = editions[_editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    function totalSupply() external view returns (uint256) {\\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\\n    }\\n\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    // ============ Private Methods ============\\n\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n}\\n\",\"keccak256\":\"0x275df23e9824418bb46b4643f2cee3b4871481f1a4be57f357af6753b485aab0\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/Artist.sol:Artist",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "contracts/Artist.sol:Artist",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "contracts/Artist.sol:Artist",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/Artist.sol:Artist",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/Artist.sol:Artist",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 4722,
                "contract": "contracts/Artist.sol:Artist",
                "label": "baseURI",
                "offset": 0,
                "slot": "201",
                "type": "t_string_storage"
              },
              {
                "astId": 4725,
                "contract": "contracts/Artist.sol:Artist",
                "label": "atTokenId",
                "offset": 0,
                "slot": "202",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 4728,
                "contract": "contracts/Artist.sol:Artist",
                "label": "atEditionId",
                "offset": 0,
                "slot": "203",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 4733,
                "contract": "contracts/Artist.sol:Artist",
                "label": "editions",
                "offset": 0,
                "slot": "204",
                "type": "t_mapping(t_uint256,t_struct(Edition)4720_storage)"
              },
              {
                "astId": 4737,
                "contract": "contracts/Artist.sol:Artist",
                "label": "tokenToEdition",
                "offset": 0,
                "slot": "205",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 4741,
                "contract": "contracts/Artist.sol:Artist",
                "label": "depositedForEdition",
                "offset": 0,
                "slot": "206",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 4745,
                "contract": "contracts/Artist.sol:Artist",
                "label": "withdrawnForEdition",
                "offset": 0,
                "slot": "207",
                "type": "t_mapping(t_uint256,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_address_payable": {
                "encoding": "inplace",
                "label": "address payable",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_struct(Edition)4720_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct Artist.Edition)",
                "numberOfBytes": "32",
                "value": "t_struct(Edition)4720_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(Edition)4720_storage": {
                "encoding": "inplace",
                "label": "struct Artist.Edition",
                "members": [
                  {
                    "astId": 4707,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "fundingRecipient",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address_payable"
                  },
                  {
                    "astId": 4709,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "price",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 4711,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "numSold",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 4713,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "quantity",
                    "offset": 4,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 4715,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "royaltyBPS",
                    "offset": 8,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 4717,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "startTime",
                    "offset": 12,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 4719,
                    "contract": "contracts/Artist.sol:Artist",
                    "label": "endTime",
                    "offset": 16,
                    "slot": "2",
                    "type": "t_uint32"
                  }
                ],
                "numberOfBytes": "96"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ArtistCreator.sol": {
        "ArtistCreator": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "artistId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "artistAddress",
                  "type": "address"
                }
              ],
              "name": "CreatedArtist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MINTER_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "artistContracts",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "beaconAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "createArtist",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "getSigner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "params": {
                  "_name": "Name of the artist"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "proxiableUUID()": {
                "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "setAdmin(address)": {
                "params": {
                  "_newAdmin": "address of new admin"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "upgradeTo(address)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              },
              "upgradeToAndCall(address,bytes)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60a06040523060805234801561001457600080fd5b506080516151d361004c600039600081816104f401528181610537015281816105df0152818161062201526106be01526151d36000f3fe608060405260043610620000fb5760003560e01c80637e2ec6d01162000095578063e6adabfd1162000060578063e6adabfd146200027b578063f2fde38b14620002a0578063f851a44014620002c5578063fa4d280c14620002e757600080fd5b80637e2ec6d014620001fc5780638129fc1c146200021e5780638da5cb5b1462000236578063b16a43f0146200025657600080fd5b80634f1ef28611620000d65780634f1ef286146200019057806352d1902d14620001a7578063704b6c0214620001bf578063715018a614620001e457600080fd5b8063233654eb14620001005780633644e51514620001425780633659cfe61462000169575b600080fd5b3480156200010d57600080fd5b50620001256200011f36600462001612565b6200031d565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014f57600080fd5b506200015a60cb5481565b60405190815260200162000139565b3480156200017657600080fd5b506200018e62000188366004620016ef565b620004ea565b005b6200018e620001a13660046200170d565b620005d5565b348015620001b457600080fd5b506200015a620006b1565b348015620001cc57600080fd5b506200018e620001de366004620016ef565b62000767565b348015620001f157600080fd5b506200018e620007f3565b3480156200020957600080fd5b5060cc5462000125906001600160a01b031681565b3480156200022b57600080fd5b506200018e6200080b565b3480156200024357600080fd5b506097546001600160a01b031662000125565b3480156200026357600080fd5b50620001256200027536600462001776565b62000a7a565b3480156200028857600080fd5b50620001256200029a36600462001790565b62000aa5565b348015620002ad57600080fd5b506200018e620002bf366004620016ef565b62000bdb565b348015620002d257600080fd5b5060ca5462000125906001600160a01b031681565b348015620002f457600080fd5b506200015a7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b031662000338878762000aa5565b6001600160a01b031614620003945760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc546000906001600160a01b031663055fe41d60e51b33620003b660c95490565b888888604051602401620003cf95949392919062001833565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516200040e90620014ed565b6200041b92919062001892565b604051809103906000f08015801562000438573d6000803e3d6000fd5b5060cd80546001810182556000919091527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0383166001600160a01b031990911681179091559091507f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0620004b660c95490565b8787604051620004c993929190620018c0565b60405180910390a2620004e060c980546001019055565b9695505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005355760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200058060008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620005a95760405162461bcd60e51b81526004016200038b906200193b565b620005b48162000c57565b60408051600080825260208201909252620005d29183919062000c61565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620006205760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200066b60008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620006945760405162461bcd60e51b81526004016200038b906200193b565b6200069f8262000c57565b620006ad8282600162000c61565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620007535760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016200038b565b506000805160206200515783398151915290565b6097546001600160a01b03163314806200078b575060ca546001600160a01b031633145b620007d15760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b60448201526064016200038b565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b620007fd62000dde565b62000809600062000e3a565b565b600054610100900460ff16158080156200082c5750600054600160ff909116105b80620008485750303b15801562000848575060005460ff166001145b620008ad5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200038b565b6000805460ff191660011790558015620008d1576000805461ff0019166101001790555b620008db62000e8c565b60ca80546001600160a01b031916331790556040516200092a907fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465904690602001918252602082015260400190565b60408051601f1981840301815290829052805160209091012060cb556000906200095490620014fb565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50604051620009809062001509565b6001600160a01b039091168152602001604051809103906000f080158015620009ad573d6000803e3d6000fd5b5060405163f2fde38b60e01b81523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b158015620009f357600080fd5b505af115801562000a08573d6000803e3d6000fd5b505060cc80546001600160a01b0319166001600160a01b038516179055505060c980546001019055508015620005d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60cd818154811062000a8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b031662000afa5760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b60448201526064016200038b565b60cb54604080517f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b260208201523391810191909152600091906060016040516020818303038152906040528051906020012060405160200162000b7492919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050600062000bd285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000f049050565b95945050505050565b62000be562000dde565b6001600160a01b03811662000c4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200038b565b620005d28162000e3a565b620005d262000dde565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000c9c5762000c978362000f2c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000cf9575060408051601f3d908101601f1916820190925262000cf69181019062001987565b60015b62000d5e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016200038b565b60008051602062005157833981519152811462000dd05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016200038b565b5062000c9783838362000fcb565b6097546001600160a01b03163314620008095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200038b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1662000ef95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200038b565b620008093362000e3a565b600080600062000f15858562000ffc565b9150915062000f248162001072565b509392505050565b6001600160a01b0381163b62000f9b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200038b565b6000805160206200515783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000fd68362001240565b60008251118062000fe45750805b1562000c975762000ff6838362001282565b50505050565b6000808251604103620010365760208301516040840151606085015160001a620010298782858562001376565b945094505050506200106b565b8251604003620010635760208301516040840151620010578683836200146b565b9350935050506200106b565b506000905060025b9250929050565b6000816004811115620010895762001089620019a1565b03620010925750565b6001816004811115620010a957620010a9620019a1565b03620010f85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016200038b565b60028160048111156200110f576200110f620019a1565b036200115e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016200038b565b6003816004811115620011755762001175620019a1565b03620011cf5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016200038b565b6004816004811115620011e657620011e6620019a1565b03620005d25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016200038b565b6200124b8162000f2c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b620012ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200038b565b600080846001600160a01b031684604051620013099190620019b7565b600060405180830381855af49150503d806000811462001346576040519150601f19603f3d011682016040523d82523d6000602084013e6200134b565b606091505b509150915062000bd282826040518060600160405280602781526020016200517760279139620014a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115620013af575060009050600362001462565b8460ff16601b14158015620013c857508460ff16601c14155b15620013db575060009050600462001462565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801562001430573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200145b5760006001925092505062001462565b9150600090505b94509492505050565b6000806001600160ff1b038316816200148a60ff86901c601b620019d5565b90506200149a8782888562001376565b935093505050935093915050565b60608315620014b9575081620014e6565b825115620014ca5782518084602001fd5b8160405162461bcd60e51b81526004016200038b9190620019fc565b9392505050565b6108fa8062001a1283390190565b612967806200230c83390190565b6104e48062004c7383390190565b60008083601f8401126200152a57600080fd5b50813567ffffffffffffffff8111156200154357600080fd5b6020830191508360208285010111156200106b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200159057620015906200155c565b604051601f8501601f19908116603f01168101908282118183101715620015bb57620015bb6200155c565b81604052809350858152868686011115620015d557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200160157600080fd5b620014e68383356020850162001572565b6000806000806000608086880312156200162b57600080fd5b853567ffffffffffffffff808211156200164457600080fd5b6200165289838a0162001517565b909750955060208801359150808211156200166c57600080fd5b6200167a89838a01620015ef565b945060408801359150808211156200169157600080fd5b6200169f89838a01620015ef565b93506060880135915080821115620016b657600080fd5b50620016c588828901620015ef565b9150509295509295909350565b80356001600160a01b0381168114620016ea57600080fd5b919050565b6000602082840312156200170257600080fd5b620014e682620016d2565b600080604083850312156200172157600080fd5b6200172c83620016d2565b9150602083013567ffffffffffffffff8111156200174957600080fd5b8301601f810185136200175b57600080fd5b6200176c8582356020840162001572565b9150509250929050565b6000602082840312156200178957600080fd5b5035919050565b60008060208385031215620017a457600080fd5b823567ffffffffffffffff811115620017bc57600080fd5b620017ca8582860162001517565b90969095509350505050565b60005b83811015620017f3578181015183820152602001620017d9565b8381111562000ff65750506000910152565b600081518084526200181f816020860160208601620017d6565b601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a0604082015260006200185c60a083018662001805565b828103606084015262001870818662001805565b9050828103608084015262001886818562001805565b98975050505050505050565b6001600160a01b0383168152604060208201819052600090620018b89083018462001805565b949350505050565b838152606060208201526000620018db606083018562001805565b8281036040840152620004e0818562001805565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200199a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008251620019cb818460208701620017d6565b9190910192915050565b60008219821115620019f757634e487b7160e01b600052601160045260246000fd5b500190565b602081526000620014e660208301846200180556fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50612947806100206000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b6235d87ecd225dd61ef3be564a9f4f0c63d4640a663e7e89c1d926d730367c064736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x51D3 PUSH2 0x4C PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4F4 ADD MSTORE DUP2 DUP2 PUSH2 0x537 ADD MSTORE DUP2 DUP2 PUSH2 0x5DF ADD MSTORE DUP2 DUP2 PUSH2 0x622 ADD MSTORE PUSH2 0x6BE ADD MSTORE PUSH2 0x51D3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0xFB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E2EC6D0 GT PUSH3 0x95 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x27B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x2A0 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2C5 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x1FC JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH3 0x21E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x236 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH3 0xD6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x190 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x1A7 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1BF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0x100 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x142 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x169 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x125 PUSH3 0x11F CALLDATASIZE PUSH1 0x4 PUSH3 0x1612 JUMP JUMPDEST PUSH3 0x31D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x15A PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x188 CALLDATASIZE PUSH1 0x4 PUSH3 0x16EF JUMP JUMPDEST PUSH3 0x4EA JUMP JUMPDEST STOP JUMPDEST PUSH3 0x18E PUSH3 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH3 0x170D JUMP JUMPDEST PUSH3 0x5D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x15A PUSH3 0x6B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x1DE CALLDATASIZE PUSH1 0x4 PUSH3 0x16EF JUMP JUMPDEST PUSH3 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x125 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x80B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x125 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x125 PUSH3 0x275 CALLDATASIZE PUSH1 0x4 PUSH3 0x1776 JUMP JUMPDEST PUSH3 0xA7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x125 PUSH3 0x29A CALLDATASIZE PUSH1 0x4 PUSH3 0x1790 JUMP JUMPDEST PUSH3 0xAA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x2BF CALLDATASIZE PUSH1 0x4 PUSH3 0x16EF JUMP JUMPDEST PUSH3 0xBDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x125 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x15A PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x338 DUP8 DUP8 PUSH3 0xAA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x394 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x55FE41D PUSH1 0xE5 SHL CALLER PUSH3 0x3B6 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x3CF SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1833 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH3 0x40E SWAP1 PUSH3 0x14ED JUMP JUMPDEST PUSH3 0x41B SWAP3 SWAP2 SWAP1 PUSH3 0x1892 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x438 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0xCD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x83978B4C69C48DD978AB43FE30F077615294F938FB7F936D9EB340E51EA7DB2E ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP2 POP PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH3 0x4B6 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP8 DUP8 PUSH1 0x40 MLOAD PUSH3 0x4C9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x18C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH3 0x4E0 PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x535 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x18EF JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x580 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x193B JUMP JUMPDEST PUSH3 0x5B4 DUP2 PUSH3 0xC57 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x5D2 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0xC61 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x620 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x18EF JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x66B PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x694 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x193B JUMP JUMPDEST PUSH3 0x69F DUP3 PUSH3 0xC57 JUMP JUMPDEST PUSH3 0x6AD DUP3 DUP3 PUSH1 0x1 PUSH3 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x753 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x78B JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x7D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x7FD PUSH3 0xDDE JUMP JUMPDEST PUSH3 0x809 PUSH1 0x0 PUSH3 0xE3A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH3 0x82C JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH3 0x848 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x848 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH3 0x8AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x8D1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH3 0x8DB PUSH3 0xE8C JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH3 0x92A SWAP1 PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0xCB SSTORE PUSH1 0x0 SWAP1 PUSH3 0x954 SWAP1 PUSH3 0x14FB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x971 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x980 SWAP1 PUSH3 0x1509 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x9AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xF2FDE38B PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xA08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xCC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE POP POP PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP DUP1 ISZERO PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xB74 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0xBD2 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xF04 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0xBE5 PUSH3 0xDDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH3 0x5D2 DUP2 PUSH3 0xE3A JUMP JUMPDEST PUSH3 0x5D2 PUSH3 0xDDE JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0xC9C JUMPI PUSH3 0xC97 DUP4 PUSH3 0xF2C JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xCF9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xCF6 SWAP2 DUP2 ADD SWAP1 PUSH3 0x1987 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xDD0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST POP PUSH3 0xC97 DUP4 DUP4 DUP4 PUSH3 0xFCB JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x809 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH3 0xEF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH3 0x809 CALLER PUSH3 0xE3A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xF15 DUP6 DUP6 PUSH3 0xFFC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xF24 DUP2 PUSH3 0x1072 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xFD6 DUP4 PUSH3 0x1240 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0xFE4 JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0xC97 JUMPI PUSH3 0xFF6 DUP4 DUP4 PUSH3 0x1282 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0x1036 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0x1029 DUP8 DUP3 DUP6 DUP6 PUSH3 0x1376 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0x106B JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0x1063 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0x1057 DUP7 DUP4 DUP4 PUSH3 0x146B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0x106B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1089 JUMPI PUSH3 0x1089 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x1092 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x10A9 JUMPI PUSH3 0x10A9 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x110F JUMPI PUSH3 0x110F PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x115E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1175 JUMPI PUSH3 0x1175 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x11CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x11E6 JUMPI PUSH3 0x11E6 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x5D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH3 0x124B DUP2 PUSH3 0xF2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0x12EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x1309 SWAP2 SWAP1 PUSH3 0x19B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x1346 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x134B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xBD2 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x5177 PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x14A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x13AF JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1462 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x13C8 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x13DB JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x145B JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1462 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x148A PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x19D5 JUMP JUMPDEST SWAP1 POP PUSH3 0x149A DUP8 DUP3 DUP9 DUP6 PUSH3 0x1376 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x14B9 JUMPI POP DUP2 PUSH3 0x14E6 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x14CA JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP2 SWAP1 PUSH3 0x19FC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x1A12 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x2967 DUP1 PUSH3 0x230C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E4 DUP1 PUSH3 0x4C73 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x152A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0x106B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x1590 JUMPI PUSH3 0x1590 PUSH3 0x155C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x15BB JUMPI PUSH3 0x15BB PUSH3 0x155C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x15D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x14E6 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x1572 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x162B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x1644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1652 DUP10 DUP4 DUP11 ADD PUSH3 0x1517 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x166C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x167A DUP10 DUP4 DUP11 ADD PUSH3 0x15EF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x1691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x169F DUP10 DUP4 DUP11 ADD PUSH3 0x15EF JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x16B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x16C5 DUP9 DUP3 DUP10 ADD PUSH3 0x15EF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x16EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x14E6 DUP3 PUSH3 0x16D2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x172C DUP4 PUSH3 0x16D2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x175B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x176C DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x1572 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x17A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x17BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x17CA DUP6 DUP3 DUP7 ADD PUSH3 0x1517 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x17F3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x17D9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xFF6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x181F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x17D6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x185C PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x1805 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x1870 DUP2 DUP7 PUSH3 0x1805 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH3 0x1886 DUP2 DUP6 PUSH3 0x1805 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x18B8 SWAP1 DUP4 ADD DUP5 PUSH3 0x1805 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x18DB PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x1805 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x4E0 DUP2 DUP6 PUSH3 0x1805 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x199A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x19CB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x17D6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x19F7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x14E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x1805 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65646080 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2947 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xBD8616EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD8616EC EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0x74E79189 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3FAFEF29 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x234 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x207F JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x20FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x213C JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x9CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x319 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x395 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH4 0xFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 DUP4 AND PUSH1 0x60 DUP7 ADD MSTORE DUP3 AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x401 PUSH2 0x3FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21F6 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x2231 JUMP JUMPDEST PUSH2 0xB42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xE0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x502 PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x254 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xEE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x55D CALLDATASIZE PUSH1 0x4 PUSH2 0x22F5 JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x57D CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x28C PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x10FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x610 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x63D CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x14E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x2530 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x712 JUMPI POP PUSH2 0x712 DUP3 PUSH2 0x15BC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x753 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7A0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x775 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x783 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 DUP3 PUSH2 0x160C JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP3 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x84E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x86A JUMPI POP PUSH2 0x86A DUP2 CALLER PUSH2 0x67F JUMP JUMPDEST PUSH2 0x8DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x166B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x91F JUMPI PUSH2 0x91F PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x948 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x9B1 JUMPI PUSH2 0x979 DUP2 PUSH2 0xD29 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI PUSH2 0x98B PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0x9AD DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x9BB DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x950 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA28 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x16D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA39 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA43 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA52 CALLER DUP3 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH5 0x100000000 DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP3 SWAP2 PUSH2 0xB0D JUMPI MLOAD SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xB2A DUP4 DUP9 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0x2677 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xBB2 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR DUP2 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP8 DUP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP4 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL MUL SWAP4 SWAP1 SWAP4 AND PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT SWAP5 DUP4 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP3 SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0xC92 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xB3131D7D301F8CAEB40981CFFC627B1FDF324B5E4A23845B61C1A6AD2A25F385 SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG2 PUSH2 0xD06 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1084 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0xE21 PUSH1 0x0 PUSH2 0x1A5B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE57 JUMPI PUSH2 0xE57 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE80 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xED4 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI PUSH2 0xEBB PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0xED0 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xEDE DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE88 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST PUSH2 0xA28 CALLER DUP4 DUP4 PUSH2 0x1AAD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0xF20 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0xF3A JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xFCA DUP5 DUP5 PUSH2 0x1B7B JUMP JUMPDEST PUSH2 0xFD2 PUSH2 0x1BAC JUMP JUMPDEST PUSH2 0xFDB DUP7 PUSH2 0x1508 JUMP JUMPDEST DUP2 PUSH2 0xFE5 DUP7 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF6 SWAP3 SWAP2 SWAP1 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x101A SWAP3 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP PUSH2 0x1029 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1037 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x108E CALLER DUP4 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x10AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x10B6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x10C4 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 AND LT PUSH2 0x11D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE LT ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x12B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x105D58DD1A5BDB881A185CDB89DD081CDD185C9D1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND GT PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1327 CALLER PUSH2 0x1322 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1345 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x136D DUP4 PUSH2 0x26DE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP1 PUSH1 0xCD PUSH1 0x0 PUSH2 0x139A PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x13B5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP5 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1412 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1494 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x14AF SWAP1 PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x14B8 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x279A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14F4 SWAP2 SWAP1 PUSH2 0x27E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1510 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1412 DUP2 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1586 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x15ED JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x712 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x16A0 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x177B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x8E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17F2 DUP4 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1839 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x185D JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1852 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1878 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x193E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1949 PUSH1 0x0 DUP3 PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1972 SWAP1 DUP5 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x19A0 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xA28 DUP3 DUP3 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 PUSH2 0x1E9F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x1C02 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1C2C JUMPI DUP1 PUSH2 0x1C16 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C25 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2677 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x185D JUMPI PUSH2 0x1C86 PUSH1 0x1 DUP4 PUSH2 0x25DD JUMP JUMPDEST SWAP2 POP PUSH2 0x1C93 PUSH1 0xA DUP7 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1C9E SWAP1 PUSH1 0x30 PUSH2 0x26C6 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CB3 JUMPI PUSH2 0x1CB3 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1CD5 PUSH1 0xA DUP7 PUSH2 0x2677 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 JUMP JUMPDEST PUSH2 0x1CE7 DUP5 DUP5 DUP5 PUSH2 0x1865 JUMP JUMPDEST PUSH2 0x1CF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1DF3 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x1E8B SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8E6 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 CALLER PUSH2 0x1A5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1F13 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1F4E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1F4B SWAP2 DUP2 ADD SWAP1 PUSH2 0x28F4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1FAB JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1FA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x185D JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x1FDC SWAP1 PUSH2 0x255E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2017 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2044 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2044 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2029 JUMP JUMPDEST POP PUSH2 0x2050 SWAP3 SWAP2 POP PUSH2 0x2054 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20A6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x20E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x215A DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2184 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21D5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21E5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x222C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x224A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2255 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH2 0x226A PUSH1 0x40 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP4 POP PUSH2 0x2278 PUSH1 0x60 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP3 POP PUSH2 0x2286 PUSH1 0x80 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP2 POP PUSH2 0x2294 PUSH1 0xA0 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2313 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2364 JUMPI PUSH2 0x2364 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x238C JUMPI PUSH2 0x238C PUSH2 0x2333 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x23A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2349 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x23F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2402 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2432 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2454 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2477 DUP9 DUP3 DUP10 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x24A5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x24B5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x24E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24F8 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2349 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2527 PUSH1 0x20 DUP5 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x254E DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2328 DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2572 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2592 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x25D6 JUMPI PUSH2 0x25D6 PUSH2 0x25AE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EF PUSH2 0x25AE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x265C JUMPI PUSH2 0x265C PUSH2 0x25AE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2686 JUMPI PUSH2 0x2686 PUSH2 0x2661 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x269D DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x26B1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x26D9 PUSH2 0x25AE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x26F7 JUMPI PUSH2 0x26F7 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x271B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x273C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2750 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2761 JUMPI PUSH2 0x278E JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x278E JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2786 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x276D JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A6 DUP3 DUP7 PUSH2 0x2701 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x27B6 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x27D3 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27EC DUP3 DUP5 PUSH2 0x2701 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2860 JUMPI PUSH2 0x2860 PUSH2 0x2661 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x28EA SWAP1 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xE4 PUSH1 0xB7 0xEF PUSH16 0x39786F77F92A66849CE602649C95F52 0xED 0xB7 SWAP9 0xCE CALLDATACOPY 0xFB SMOD PUSH30 0xA5FF64736F6C634300080E0033608060405234801561001057600080FD5B POP PUSH1 0x40 MLOAD PUSH2 0x4E4 CODESIZE SUB DUP1 PUSH2 0x4E4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x151 JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x47 JUMP JUMPDEST PUSH2 0x41 DUP2 PUSH2 0x97 JUMP JUMPDEST POP PUSH2 0x181 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xAA DUP2 PUSH2 0x142 PUSH1 0x20 SHL PUSH2 0x1A0 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E206973206E6F74206120636F6E747261637400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x354 DUP1 PUSH2 0x190 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x10E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x122 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xD7 DUP2 PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x116 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x120 PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x194 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19D DUP2 PUSH2 0x29E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH2 0x857C 0xDA 0x49 0xEE CREATE 0xAB PUSH32 0xFBF7C954AD8941A4D6737EA56FBE0BCCB90FD0C5769A64736F6C634300080E00 CALLER CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A2646970667358221220B6 0x23 0x5D DUP8 0xEC 0xD2 0x25 0xDD PUSH2 0xEF3B 0xE5 PUSH5 0xA9F4F0C63D CHAINID BLOCKHASH 0xA6 PUSH4 0xE7E89C1D SWAP3 PUSH14 0x730367C064736F6C634300080E00 CALLER ",
              "sourceMap": "1095:3757:33:-:0;;;1332:4:6;1289:48;;1095:3757:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_5378": {
                  "entryPoint": null,
                  "id": 5378,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@MINTER_TYPEHASH_5371": {
                  "entryPoint": null,
                  "id": 5371,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Ownable_init_unchained_37": {
                  "entryPoint": 3724,
                  "id": 37,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_authorizeUpgrade_5620": {
                  "entryPoint": 3159,
                  "id": 5620,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_checkOwner_68": {
                  "entryPoint": 3550,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_functionDelegateCall_523": {
                  "entryPoint": 4738,
                  "id": 523,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getImplementation_207": {
                  "entryPoint": null,
                  "id": 207,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_231": {
                  "entryPoint": 3884,
                  "id": 231,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_throwError_2588": {
                  "entryPoint": 4210,
                  "id": 2588,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 3642,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeToAndCallUUPS_327": {
                  "entryPoint": 3169,
                  "id": 327,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeToAndCall_274": {
                  "entryPoint": 4043,
                  "id": 274,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeTo_246": {
                  "entryPoint": 4672,
                  "id": 246,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@admin_5376": {
                  "entryPoint": null,
                  "id": 5376,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@artistContracts_5383": {
                  "entryPoint": 2682,
                  "id": 5383,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@beaconAddress_5380": {
                  "entryPoint": null,
                  "id": 5380,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@createArtist_5540": {
                  "entryPoint": 797,
                  "id": 5540,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getAddressSlot_2264": {
                  "entryPoint": null,
                  "id": 2264,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getBooleanSlot_2275": {
                  "entryPoint": null,
                  "id": 2275,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_5586": {
                  "entryPoint": 2725,
                  "id": 5586,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_5456": {
                  "entryPoint": 2059,
                  "id": 5456,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@proxiableUUID_771": {
                  "entryPoint": 1713,
                  "id": 771,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@recover_2680": {
                  "entryPoint": 3844,
                  "id": 2680,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 2035,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setAdmin_5611": {
                  "entryPoint": 1895,
                  "id": 5611,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 3035,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_2653": {
                  "entryPoint": 4092,
                  "id": 2653,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_2727": {
                  "entryPoint": 5227,
                  "id": 2727,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_2838": {
                  "entryPoint": 4982,
                  "id": 2838,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@upgradeToAndCall_814": {
                  "entryPoint": 1493,
                  "id": 814,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@upgradeTo_793": {
                  "entryPoint": 1258,
                  "id": 793,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@verifyCallResult_2121": {
                  "entryPoint": 5288,
                  "id": 2121,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 5842,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 5490,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 5399,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_string": {
                  "entryPoint": 5615,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 5871,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr": {
                  "entryPoint": 5901,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 6535,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 6032,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 5650,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 6006,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 6149,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 6583,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6290,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6195,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6652,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6383,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6459,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6336,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 6613,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 6102,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 6561,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 5468,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:15966:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:46"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:46"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14:347:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "398:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "415:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "422:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "427:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "418:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "418:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "408:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "455:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "458:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "448:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "448:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "448:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "482:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "472:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "472:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "472:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "366:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "573:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "583:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "593:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "587:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "638:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "640:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "640:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "640:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "626:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "623:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "623:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "620:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "669:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "683:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "679:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "673:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "695:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "715:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "709:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "709:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "699:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "727:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "749:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "773:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "781:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "769:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "769:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "786:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "765:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "765:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "791:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "761:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "761:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "757:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "757:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "745:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "745:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "731:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "859:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "861:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "861:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "861:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "818:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "830:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "815:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "815:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "838:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "850:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "812:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "812:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "809:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "897:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "901:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "890:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "890:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "921:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "930:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "952:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "960:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "945:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "945:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "945:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1005:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1014:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1017:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1007:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1007:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1007:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "986:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "991:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "982:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "982:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1000:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "979:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "979:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "976:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1047:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1055:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1043:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1043:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1062:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1067:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1030:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1030:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1030:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1098:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1106:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1094:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1094:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1115:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1090:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1090:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1122:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1083:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1083:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1083:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "542:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "547:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "555:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "563:5:46",
                            "type": ""
                          }
                        ],
                        "src": "498:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1188:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1237:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1246:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1249:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1239:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1239:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1239:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1216:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1224:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1212:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1212:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1208:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1208:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1198:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1262:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1310:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1318:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1306:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1306:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1338:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1325:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1325:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1347:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1271:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1271:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1262:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1162:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1170:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1178:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1135:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1532:861:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1579:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1588:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1591:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1581:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1581:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1581:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1553:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1562:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1549:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1549:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1574:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1545:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1545:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1542:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1604:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1631:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1618:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1618:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1608:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1660:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1705:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1714:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1717:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1707:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1707:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1693:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1701:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1690:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1690:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1687:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1730:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1786:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1797:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1782:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1782:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1806:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1756:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1756:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1734:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1744:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1823:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "1833:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1850:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1860:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1850:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1877:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1910:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1921:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1906:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1906:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1893:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1893:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1881:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1940:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1950:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1937:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1937:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1934:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2011:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2022:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2007:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2033:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1989:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1989:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2050:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2083:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2094:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2079:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2079:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2066:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2066:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2054:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2127:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2136:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2139:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2129:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2129:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2129:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2113:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2123:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2110:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2107:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2152:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2184:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2195:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2180:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2180:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2206:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2162:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2162:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2223:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2267:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2252:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2239:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2239:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2227:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2300:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2309:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2312:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2302:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2302:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2302:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2286:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2296:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2283:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2283:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2280:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2325:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2357:9:46"
                                      },
                                      {
                                        "name": "offset_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2368:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2353:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2353:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2379:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2335:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2335:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2325:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1466:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1477:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1489:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1497:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1505:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1513:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1521:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1362:1031:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2499:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2521:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2532:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2517:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2517:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2551:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2566:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2582:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2587:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2578:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2578:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2591:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2574:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2574:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2562:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2562:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2544:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2544:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2468:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2479:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2490:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2398:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2707:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2717:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2740:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2725:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2717:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2759:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2770:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2752:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2752:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2752:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2676:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2687:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2698:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2606:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2837:124:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2847:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2869:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2856:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2856:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "2847:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2939:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2948:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2951:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2941:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2941:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2941:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2898:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2909:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2924:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2929:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2920:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2920:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2933:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "2916:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2916:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2905:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2905:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2895:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2895:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2888:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2888:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2885:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2816:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2827:5:46",
                            "type": ""
                          }
                        ],
                        "src": "2788:173:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3036:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3082:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3091:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3094:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3084:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3084:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3084:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3057:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3066:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3053:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3078:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3049:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3049:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3046:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3107:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3136:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3117:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3117:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3107:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3002:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3013:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3025:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2966:186:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3253:428:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3299:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3308:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3311:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3301:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3301:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3301:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3274:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3283:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3270:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3270:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3295:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3266:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3266:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3263:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3324:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3353:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3334:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3334:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3324:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3372:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3403:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3414:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3399:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3399:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3386:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3386:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3376:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3461:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3470:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3473:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3463:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3463:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3463:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3433:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3441:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3430:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3430:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3427:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3486:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3500:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3511:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3496:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3496:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3490:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3566:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3575:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3578:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3568:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3568:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3568:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3545:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3549:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3541:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3541:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3556:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3537:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3530:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3530:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3527:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3591:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3640:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3644:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3636:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3636:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3662:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3649:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3649:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3667:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3601:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3591:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3211:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3222:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3234:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3242:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3157:524:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3756:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3802:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3811:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3814:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3804:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3804:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3804:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3777:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3786:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3773:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3773:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3798:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3769:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3769:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3766:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3827:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3850:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3837:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3837:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3827:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3722:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3733:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3745:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3686:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3960:320:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4006:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4015:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4018:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4008:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4008:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4008:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3981:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3990:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3977:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3977:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4002:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3973:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3973:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3970:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4031:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4058:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4045:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4045:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4035:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4111:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4120:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4123:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4113:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4113:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4113:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4083:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4091:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4080:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4080:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4077:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4136:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4192:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4203:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4188:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4162:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4162:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4140:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4150:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4229:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "4239:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4256:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "4266:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4256:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3918:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3929:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3941:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3949:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3871:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4459:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4476:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4487:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4469:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4469:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4469:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4521:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4506:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4526:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4499:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4499:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4549:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4560:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4545:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4545:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4565:33:46",
                                    "type": "",
                                    "value": "invalid authorization signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4538:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4538:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4538:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4608:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4620:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4631:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4616:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4616:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4608:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4436:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4450:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4285:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4698:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4708:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4717:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4712:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4777:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4802:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4807:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4798:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4798:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4821:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4826:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4817:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4817:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4811:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4811:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4791:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4791:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4791:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4738:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4741:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4735:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4735:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4749:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4751:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4760:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4763:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4756:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4756:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4751:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4731:3:46",
                                "statements": []
                              },
                              "src": "4727:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4866:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4879:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "4884:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4875:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4875:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4893:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4868:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4868:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4868:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4855:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4858:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4852:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4852:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4849:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "4676:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "4681:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4686:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4645:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4958:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4968:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4988:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4982:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4982:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4972:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5010:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5015:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5003:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5003:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5003:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5057:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5064:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5053:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5075:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5080:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5071:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5071:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5087:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5031:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5031:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5031:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5103:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5118:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5131:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5139:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5127:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5127:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5148:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "5144:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5144:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5123:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5123:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5114:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5114:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5155:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5110:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5110:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5103:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4935:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4942:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4950:3:46",
                            "type": ""
                          }
                        ],
                        "src": "4908:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5444:444:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5461:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5476:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5492:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5497:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5488:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5488:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5501:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5484:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5484:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5472:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5472:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5454:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5454:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5454:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5525:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5536:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5521:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5521:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5541:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5514:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5514:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5514:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5568:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5579:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5564:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5564:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5584:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5557:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5557:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5557:31:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5597:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5629:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5641:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5652:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5637:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5637:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5611:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5611:46:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5601:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5677:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5688:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5673:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5673:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5697:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5705:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5693:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5693:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5666:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5666:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5666:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5725:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5757:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5765:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5739:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5739:33:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5729:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5792:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5803:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5788:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5788:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5813:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5821:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5809:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5809:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5781:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5781:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5781:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5841:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "5867:6:46"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5875:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5849:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5849:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5841:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5381:9:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5392:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5400:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5408:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5416:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5424:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5435:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5171:717:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6040:168:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6057:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6072:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6088:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6093:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6084:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6084:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6097:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6080:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6080:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6068:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6068:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6050:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6050:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6050:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6121:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6132:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6117:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6117:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6137:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6110:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6110:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6110:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6149:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6175:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6187:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6198:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6183:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6183:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6157:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6157:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6149:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6001:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6012:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6020:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6031:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5893:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6410:257:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6427:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6438:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6420:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6420:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6420:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6465:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6476:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6461:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6461:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6481:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6454:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6454:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6454:30:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6493:59:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6525:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6537:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6548:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6533:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6533:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6507:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6507:45:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6497:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6572:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6583:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6568:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6568:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6592:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6600:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6588:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6588:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6561:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6561:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6561:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6620:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6646:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6654:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6628:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6628:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6620:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6363:9:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6374:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6382:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6390:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6401:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6213:454:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6846:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6863:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6874:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6856:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6856:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6856:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6897:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6908:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6893:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6893:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6913:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6886:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6886:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6886:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6936:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6947:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6932:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6932:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6952:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6925:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6925:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6925:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7007:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7018:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7003:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7003:18:46"
                                  },
                                  {
                                    "hexValue": "64656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7023:14:46",
                                    "type": "",
                                    "value": "delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6996:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6996:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6996:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7047:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7059:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7070:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7055:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7055:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7047:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6823:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6837:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6672:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7259:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7276:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7287:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7269:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7269:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7269:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7310:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7321:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7306:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7306:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7326:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7299:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7299:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7299:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7349:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7360:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7345:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7345:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7365:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7338:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7338:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7338:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7420:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7431:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7416:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7416:18:46"
                                  },
                                  {
                                    "hexValue": "6163746976652070726f7879",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7436:14:46",
                                    "type": "",
                                    "value": "active proxy"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7409:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7409:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7409:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7460:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7483:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7468:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7468:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7460:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7236:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7250:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7085:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7672:246:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7689:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7700:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7682:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7682:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7682:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7723:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7734:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7719:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7719:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7739:2:46",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7712:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7712:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7712:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7762:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7773:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7758:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7758:18:46"
                                  },
                                  {
                                    "hexValue": "555550535570677261646561626c653a206d757374206e6f742062652063616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7778:34:46",
                                    "type": "",
                                    "value": "UUPSUpgradeable: must not be cal"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7751:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7751:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7751:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7844:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7829:18:46"
                                  },
                                  {
                                    "hexValue": "6c6564207468726f7567682064656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7849:26:46",
                                    "type": "",
                                    "value": "led through delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7822:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7822:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7822:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7885:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7897:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7908:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7893:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7893:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7885:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7649:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7663:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7498:420:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8097:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8114:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8125:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8107:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8107:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8107:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8148:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8159:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8144:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8144:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8164:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8137:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8137:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8137:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8187:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8198:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8183:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8183:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8203:23:46",
                                    "type": "",
                                    "value": "invalid authorization"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8176:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8176:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8176:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8236:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8248:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8259:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8244:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8244:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8236:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8074:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8088:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7923:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8447:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8464:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8475:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8457:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8457:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8457:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8498:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8509:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8494:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8494:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8514:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8487:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8487:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8487:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8537:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8548:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8533:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8533:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8553:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8526:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8526:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8526:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8608:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8619:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8604:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8604:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8624:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8597:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8597:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8597:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8650:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8662:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8673:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8658:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8658:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8650:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8424:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8438:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8273:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8817:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8827:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8839:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8850:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8835:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8835:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8827:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8869:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8880:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8862:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8862:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8862:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8907:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8918:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8903:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8903:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8923:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8896:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8896:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8896:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8778:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8789:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8797:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8808:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8688:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9048:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9058:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9070:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9081:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9066:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9066:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9058:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9100:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9115:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9123:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9111:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9111:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9093:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9093:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9093:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9017:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9028:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9039:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8941:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9314:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9331:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9342:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9324:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9324:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9324:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9365:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9376:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9361:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9361:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9381:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9354:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9354:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9354:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9404:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9415:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9400:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9400:18:46"
                                  },
                                  {
                                    "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9420:23:46",
                                    "type": "",
                                    "value": "whitelist not enabled"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9393:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9393:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9453:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9465:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9476:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9461:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9461:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9453:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9291:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9305:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9140:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9619:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9629:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9641:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9652:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9637:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9637:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9629:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9671:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9682:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9664:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9664:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9664:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9709:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9720:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9705:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9705:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9729:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9745:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9750:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "9741:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9741:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9754:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "9737:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9737:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9725:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9725:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9698:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9698:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9698:60:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9580:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9591:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9599:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9610:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9490:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10017:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10034:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10043:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10048:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "10039:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10039:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10027:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10027:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10027:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10074:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10079:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10070:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10070:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10083:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10063:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10063:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10063:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10110:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10115:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10106:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10106:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10120:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10099:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10099:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10099:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10136:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10147:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10152:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10143:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10143:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "10136:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "9985:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9990:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9998:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10009:3:46",
                            "type": ""
                          }
                        ],
                        "src": "9769:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10340:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10357:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10368:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10350:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10350:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10350:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10391:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10402:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10387:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10387:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10407:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10380:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10380:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10380:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10430:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10441:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10426:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10426:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10446:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10419:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10419:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10501:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10512:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10497:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10497:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10517:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10490:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10490:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10490:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10535:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10547:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10558:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10543:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10543:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10535:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10317:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10331:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10166:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10654:103:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10700:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10709:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10712:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10702:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10702:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10702:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10675:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10684:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10671:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10671:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10696:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10667:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10667:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10664:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10725:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10741:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10735:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10735:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10725:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10620:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10631:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10643:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10573:184:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10936:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10953:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10964:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10946:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10946:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10946:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10987:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10998:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10983:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10983:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11003:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10976:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10976:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10976:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11026:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11037:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11022:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11022:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a206e657720696d706c656d656e74617469",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11042:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: new implementati"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11015:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11015:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11097:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11108:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11093:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11093:18:46"
                                  },
                                  {
                                    "hexValue": "6f6e206973206e6f742055555053",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11113:16:46",
                                    "type": "",
                                    "value": "on is not UUPS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11086:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11086:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11086:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11139:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11151:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11162:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11147:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11147:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11139:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10913:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10927:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10762:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11351:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11368:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11379:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11361:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11361:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11361:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11402:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11413:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11398:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11398:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11418:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11391:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11391:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11391:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11441:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11452:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11437:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11437:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f78",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11457:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: unsupported prox"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11430:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11430:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11430:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11512:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11523:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11508:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11508:18:46"
                                  },
                                  {
                                    "hexValue": "6961626c6555554944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11528:11:46",
                                    "type": "",
                                    "value": "iableUUID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11501:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11501:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11501:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11549:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11561:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11572:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11557:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11557:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11549:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11328:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11342:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11177:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11761:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11778:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11789:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11771:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11771:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11771:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11812:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11823:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11808:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11808:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11828:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11801:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11801:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11801:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11851:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11862:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11847:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11847:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11867:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11840:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11840:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11840:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11911:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11923:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11934:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11919:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11919:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11911:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11738:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11752:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11587:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12122:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12139:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12150:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12132:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12132:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12132:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12173:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12184:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12169:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12169:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12189:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12162:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12162:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12162:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12212:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12223:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12208:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12208:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12228:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12201:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12201:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12283:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12294:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12279:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12279:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12299:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12272:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12272:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12272:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12322:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12334:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12345:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12330:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12330:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12322:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12099:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12113:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11948:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12534:235:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12551:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12562:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12544:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12544:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12585:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12596:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12581:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12581:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12601:2:46",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12574:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12574:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12624:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12635:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12620:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12620:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12640:34:46",
                                    "type": "",
                                    "value": "ERC1967: new implementation is n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12613:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12613:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12613:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12695:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12706:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12691:18:46"
                                  },
                                  {
                                    "hexValue": "6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12711:15:46",
                                    "type": "",
                                    "value": "ot a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12684:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12684:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12684:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12736:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12748:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12759:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12744:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12744:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12736:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12511:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12525:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12360:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12806:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12823:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12830:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12835:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12826:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12826:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12816:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12816:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12816:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12863:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12866:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12856:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12856:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12856:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12887:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12890:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12880:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12880:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12880:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12774:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13080:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13097:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13108:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13090:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13090:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13090:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13131:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13142:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13127:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13127:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13147:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13120:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13120:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13120:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13170:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13181:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13166:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13166:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13186:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13159:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13159:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13159:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13222:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13234:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13245:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13230:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13230:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13222:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13057:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13071:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12906:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13433:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13450:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13461:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13443:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13443:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13443:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13484:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13495:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13480:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13480:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13500:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13473:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13473:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13473:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13523:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13534:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13519:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13519:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13539:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13512:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13512:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13512:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13582:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13594:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13605:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13590:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13590:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13582:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13410:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13424:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13259:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13793:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13810:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13821:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13803:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13803:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13803:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13844:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13855:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13840:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13840:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13860:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13833:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13833:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13833:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13883:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13894:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13879:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13879:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13899:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13872:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13872:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13872:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13954:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13965:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13950:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13950:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13970:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13943:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13943:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13943:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13984:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13996:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14007:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13992:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13992:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13984:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13770:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13784:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13619:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14196:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14213:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14224:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14206:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14206:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14206:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14247:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14258:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14243:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14243:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14263:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14236:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14236:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14236:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14286:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14297:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14282:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14282:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14302:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14275:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14275:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14275:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14357:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14368:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14353:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14353:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14373:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14346:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14346:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14346:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14387:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14399:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14410:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14395:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14395:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14387:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14173:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14187:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14022:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14599:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14616:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14627:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14609:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14609:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14609:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14650:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14661:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14646:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14646:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14666:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14639:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14639:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14639:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14689:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14700:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14685:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14685:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14705:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14678:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14678:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14678:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14760:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14771:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14756:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14756:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14776:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14749:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14749:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14749:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14794:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14806:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14817:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14802:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14802:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14794:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14576:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14590:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14425:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14969:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14979:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14999:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14993:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14993:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "14983:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15041:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15049:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15037:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15037:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15056:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15061:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15015:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15015:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15015:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15077:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15088:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15093:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15084:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15084:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "15077:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "14945:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14950:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "14961:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14832:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15292:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15302:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15314:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15325:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15310:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15310:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15302:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15345:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15356:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15338:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15338:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15338:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15383:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15394:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15379:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15379:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15403:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15411:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15399:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15399:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15372:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15372:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15372:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15437:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15448:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15433:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15433:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15453:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15426:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15426:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15426:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15480:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15491:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15476:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15476:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15496:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15469:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15469:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15469:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15237:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15248:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15256:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15264:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15272:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15283:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15111:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15562:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15597:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15618:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15625:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15630:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "15621:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15621:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15611:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15611:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15611:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15662:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15665:4:46",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15655:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15655:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15655:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15690:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15693:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15683:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15683:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15683:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15578:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "15585:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "15581:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15581:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15575:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15575:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15572:136:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15717:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15728:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15731:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15724:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15724:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "15717:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15545:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15548:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "15554:3:46",
                            "type": ""
                          }
                        ],
                        "src": "15514:225:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15865:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15882:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15893:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15875:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15875:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15875:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15905:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15931:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15943:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15954:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15939:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15939:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "15913:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15913:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15905:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15834:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15845:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15856:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15744:220:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_3), dataEnd)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"invalid authorization signature\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_string(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_string(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"active proxy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n        mstore(add(headStart, 96), \"led through delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"invalid authorization\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"whitelist not enabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n        mstore(add(headStart, 96), \"on is not UUPS\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n        mstore(add(headStart, 96), \"iableUUID\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n        mstore(add(headStart, 96), \"ot a contract\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "721": [
                  {
                    "length": 32,
                    "start": 1268
                  },
                  {
                    "length": 32,
                    "start": 1335
                  },
                  {
                    "length": 32,
                    "start": 1503
                  },
                  {
                    "length": 32,
                    "start": 1570
                  },
                  {
                    "length": 32,
                    "start": 1726
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405260043610620000fb5760003560e01c80637e2ec6d01162000095578063e6adabfd1162000060578063e6adabfd146200027b578063f2fde38b14620002a0578063f851a44014620002c5578063fa4d280c14620002e757600080fd5b80637e2ec6d014620001fc5780638129fc1c146200021e5780638da5cb5b1462000236578063b16a43f0146200025657600080fd5b80634f1ef28611620000d65780634f1ef286146200019057806352d1902d14620001a7578063704b6c0214620001bf578063715018a614620001e457600080fd5b8063233654eb14620001005780633644e51514620001425780633659cfe61462000169575b600080fd5b3480156200010d57600080fd5b50620001256200011f36600462001612565b6200031d565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014f57600080fd5b506200015a60cb5481565b60405190815260200162000139565b3480156200017657600080fd5b506200018e62000188366004620016ef565b620004ea565b005b6200018e620001a13660046200170d565b620005d5565b348015620001b457600080fd5b506200015a620006b1565b348015620001cc57600080fd5b506200018e620001de366004620016ef565b62000767565b348015620001f157600080fd5b506200018e620007f3565b3480156200020957600080fd5b5060cc5462000125906001600160a01b031681565b3480156200022b57600080fd5b506200018e6200080b565b3480156200024357600080fd5b506097546001600160a01b031662000125565b3480156200026357600080fd5b50620001256200027536600462001776565b62000a7a565b3480156200028857600080fd5b50620001256200029a36600462001790565b62000aa5565b348015620002ad57600080fd5b506200018e620002bf366004620016ef565b62000bdb565b348015620002d257600080fd5b5060ca5462000125906001600160a01b031681565b348015620002f457600080fd5b506200015a7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b031662000338878762000aa5565b6001600160a01b031614620003945760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc546000906001600160a01b031663055fe41d60e51b33620003b660c95490565b888888604051602401620003cf95949392919062001833565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516200040e90620014ed565b6200041b92919062001892565b604051809103906000f08015801562000438573d6000803e3d6000fd5b5060cd80546001810182556000919091527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0383166001600160a01b031990911681179091559091507f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0620004b660c95490565b8787604051620004c993929190620018c0565b60405180910390a2620004e060c980546001019055565b9695505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005355760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200058060008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620005a95760405162461bcd60e51b81526004016200038b906200193b565b620005b48162000c57565b60408051600080825260208201909252620005d29183919062000c61565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620006205760405162461bcd60e51b81526004016200038b90620018ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200066b60008051602062005157833981519152546001600160a01b031690565b6001600160a01b031614620006945760405162461bcd60e51b81526004016200038b906200193b565b6200069f8262000c57565b620006ad8282600162000c61565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620007535760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016200038b565b506000805160206200515783398151915290565b6097546001600160a01b03163314806200078b575060ca546001600160a01b031633145b620007d15760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b60448201526064016200038b565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b620007fd62000dde565b62000809600062000e3a565b565b600054610100900460ff16158080156200082c5750600054600160ff909116105b80620008485750303b15801562000848575060005460ff166001145b620008ad5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200038b565b6000805460ff191660011790558015620008d1576000805461ff0019166101001790555b620008db62000e8c565b60ca80546001600160a01b031916331790556040516200092a907fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465904690602001918252602082015260400190565b60408051601f1981840301815290829052805160209091012060cb556000906200095490620014fb565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50604051620009809062001509565b6001600160a01b039091168152602001604051809103906000f080158015620009ad573d6000803e3d6000fd5b5060405163f2fde38b60e01b81523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b158015620009f357600080fd5b505af115801562000a08573d6000803e3d6000fd5b505060cc80546001600160a01b0319166001600160a01b038516179055505060c980546001019055508015620005d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60cd818154811062000a8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b031662000afa5760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b60448201526064016200038b565b60cb54604080517f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b260208201523391810191909152600091906060016040516020818303038152906040528051906020012060405160200162000b7492919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050600062000bd285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000f049050565b95945050505050565b62000be562000dde565b6001600160a01b03811662000c4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200038b565b620005d28162000e3a565b620005d262000dde565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000c9c5762000c978362000f2c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000cf9575060408051601f3d908101601f1916820190925262000cf69181019062001987565b60015b62000d5e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016200038b565b60008051602062005157833981519152811462000dd05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016200038b565b5062000c9783838362000fcb565b6097546001600160a01b03163314620008095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200038b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1662000ef95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200038b565b620008093362000e3a565b600080600062000f15858562000ffc565b9150915062000f248162001072565b509392505050565b6001600160a01b0381163b62000f9b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200038b565b6000805160206200515783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000fd68362001240565b60008251118062000fe45750805b1562000c975762000ff6838362001282565b50505050565b6000808251604103620010365760208301516040840151606085015160001a620010298782858562001376565b945094505050506200106b565b8251604003620010635760208301516040840151620010578683836200146b565b9350935050506200106b565b506000905060025b9250929050565b6000816004811115620010895762001089620019a1565b03620010925750565b6001816004811115620010a957620010a9620019a1565b03620010f85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016200038b565b60028160048111156200110f576200110f620019a1565b036200115e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016200038b565b6003816004811115620011755762001175620019a1565b03620011cf5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016200038b565b6004816004811115620011e657620011e6620019a1565b03620005d25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016200038b565b6200124b8162000f2c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b620012ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200038b565b600080846001600160a01b031684604051620013099190620019b7565b600060405180830381855af49150503d806000811462001346576040519150601f19603f3d011682016040523d82523d6000602084013e6200134b565b606091505b509150915062000bd282826040518060600160405280602781526020016200517760279139620014a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115620013af575060009050600362001462565b8460ff16601b14158015620013c857508460ff16601c14155b15620013db575060009050600462001462565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801562001430573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200145b5760006001925092505062001462565b9150600090505b94509492505050565b6000806001600160ff1b038316816200148a60ff86901c601b620019d5565b90506200149a8782888562001376565b935093505050935093915050565b60608315620014b9575081620014e6565b825115620014ca5782518084602001fd5b8160405162461bcd60e51b81526004016200038b9190620019fc565b9392505050565b6108fa8062001a1283390190565b612967806200230c83390190565b6104e48062004c7383390190565b60008083601f8401126200152a57600080fd5b50813567ffffffffffffffff8111156200154357600080fd5b6020830191508360208285010111156200106b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200159057620015906200155c565b604051601f8501601f19908116603f01168101908282118183101715620015bb57620015bb6200155c565b81604052809350858152868686011115620015d557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200160157600080fd5b620014e68383356020850162001572565b6000806000806000608086880312156200162b57600080fd5b853567ffffffffffffffff808211156200164457600080fd5b6200165289838a0162001517565b909750955060208801359150808211156200166c57600080fd5b6200167a89838a01620015ef565b945060408801359150808211156200169157600080fd5b6200169f89838a01620015ef565b93506060880135915080821115620016b657600080fd5b50620016c588828901620015ef565b9150509295509295909350565b80356001600160a01b0381168114620016ea57600080fd5b919050565b6000602082840312156200170257600080fd5b620014e682620016d2565b600080604083850312156200172157600080fd5b6200172c83620016d2565b9150602083013567ffffffffffffffff8111156200174957600080fd5b8301601f810185136200175b57600080fd5b6200176c8582356020840162001572565b9150509250929050565b6000602082840312156200178957600080fd5b5035919050565b60008060208385031215620017a457600080fd5b823567ffffffffffffffff811115620017bc57600080fd5b620017ca8582860162001517565b90969095509350505050565b60005b83811015620017f3578181015183820152602001620017d9565b8381111562000ff65750506000910152565b600081518084526200181f816020860160208601620017d6565b601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a0604082015260006200185c60a083018662001805565b828103606084015262001870818662001805565b9050828103608084015262001886818562001805565b98975050505050505050565b6001600160a01b0383168152604060208201819052600090620018b89083018462001805565b949350505050565b838152606060208201526000620018db606083018562001805565b8281036040840152620004e0818562001805565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200199a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008251620019cb818460208701620017d6565b9190910192915050565b60008219821115620019f757634e487b7160e01b600052601160045260246000fd5b500190565b602081526000620014e660208301846200180556fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50612947806100206000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b6235d87ecd225dd61ef3be564a9f4f0c63d4640a663e7e89c1d926d730367c064736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0xFB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E2EC6D0 GT PUSH3 0x95 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x27B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x2A0 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2C5 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x1FC JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH3 0x21E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x236 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH3 0xD6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x190 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x1A7 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1BF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0x100 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x142 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x169 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x125 PUSH3 0x11F CALLDATASIZE PUSH1 0x4 PUSH3 0x1612 JUMP JUMPDEST PUSH3 0x31D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x15A PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x188 CALLDATASIZE PUSH1 0x4 PUSH3 0x16EF JUMP JUMPDEST PUSH3 0x4EA JUMP JUMPDEST STOP JUMPDEST PUSH3 0x18E PUSH3 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH3 0x170D JUMP JUMPDEST PUSH3 0x5D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x15A PUSH3 0x6B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x1DE CALLDATASIZE PUSH1 0x4 PUSH3 0x16EF JUMP JUMPDEST PUSH3 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x125 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x80B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x125 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x125 PUSH3 0x275 CALLDATASIZE PUSH1 0x4 PUSH3 0x1776 JUMP JUMPDEST PUSH3 0xA7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x125 PUSH3 0x29A CALLDATASIZE PUSH1 0x4 PUSH3 0x1790 JUMP JUMPDEST PUSH3 0xAA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x18E PUSH3 0x2BF CALLDATASIZE PUSH1 0x4 PUSH3 0x16EF JUMP JUMPDEST PUSH3 0xBDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x125 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x15A PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x338 DUP8 DUP8 PUSH3 0xAA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x394 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x55FE41D PUSH1 0xE5 SHL CALLER PUSH3 0x3B6 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x3CF SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1833 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH3 0x40E SWAP1 PUSH3 0x14ED JUMP JUMPDEST PUSH3 0x41B SWAP3 SWAP2 SWAP1 PUSH3 0x1892 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x438 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0xCD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x83978B4C69C48DD978AB43FE30F077615294F938FB7F936D9EB340E51EA7DB2E ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP2 POP PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH3 0x4B6 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP8 DUP8 PUSH1 0x40 MLOAD PUSH3 0x4C9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x18C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH3 0x4E0 PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x535 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x18EF JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x580 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x193B JUMP JUMPDEST PUSH3 0x5B4 DUP2 PUSH3 0xC57 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x5D2 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0xC61 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x620 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x18EF JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x66B PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x694 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP1 PUSH3 0x193B JUMP JUMPDEST PUSH3 0x69F DUP3 PUSH3 0xC57 JUMP JUMPDEST PUSH3 0x6AD DUP3 DUP3 PUSH1 0x1 PUSH3 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x753 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x78B JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x7D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x7FD PUSH3 0xDDE JUMP JUMPDEST PUSH3 0x809 PUSH1 0x0 PUSH3 0xE3A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH3 0x82C JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH3 0x848 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x848 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH3 0x8AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x8D1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH3 0x8DB PUSH3 0xE8C JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH3 0x92A SWAP1 PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0xCB SSTORE PUSH1 0x0 SWAP1 PUSH3 0x954 SWAP1 PUSH3 0x14FB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x971 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x980 SWAP1 PUSH3 0x1509 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x9AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xF2FDE38B PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xA08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xCC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE POP POP PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP DUP1 ISZERO PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xB74 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0xBD2 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xF04 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0xBE5 PUSH3 0xDDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH3 0x5D2 DUP2 PUSH3 0xE3A JUMP JUMPDEST PUSH3 0x5D2 PUSH3 0xDDE JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0xC9C JUMPI PUSH3 0xC97 DUP4 PUSH3 0xF2C JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xCF9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xCF6 SWAP2 DUP2 ADD SWAP1 PUSH3 0x1987 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xDD0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST POP PUSH3 0xC97 DUP4 DUP4 DUP4 PUSH3 0xFCB JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x809 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH3 0xEF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH3 0x809 CALLER PUSH3 0xE3A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xF15 DUP6 DUP6 PUSH3 0xFFC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xF24 DUP2 PUSH3 0x1072 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x5157 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xFD6 DUP4 PUSH3 0x1240 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0xFE4 JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0xC97 JUMPI PUSH3 0xFF6 DUP4 DUP4 PUSH3 0x1282 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0x1036 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0x1029 DUP8 DUP3 DUP6 DUP6 PUSH3 0x1376 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0x106B JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0x1063 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0x1057 DUP7 DUP4 DUP4 PUSH3 0x146B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0x106B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1089 JUMPI PUSH3 0x1089 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x1092 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x10A9 JUMPI PUSH3 0x10A9 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x110F JUMPI PUSH3 0x110F PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x115E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1175 JUMPI PUSH3 0x1175 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x11CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x11E6 JUMPI PUSH3 0x11E6 PUSH3 0x19A1 JUMP JUMPDEST SUB PUSH3 0x5D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH3 0x124B DUP2 PUSH3 0xF2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0x12EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x1309 SWAP2 SWAP1 PUSH3 0x19B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x1346 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x134B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xBD2 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x5177 PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x14A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x13AF JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1462 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x13C8 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x13DB JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x145B JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1462 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x148A PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x19D5 JUMP JUMPDEST SWAP1 POP PUSH3 0x149A DUP8 DUP3 DUP9 DUP6 PUSH3 0x1376 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x14B9 JUMPI POP DUP2 PUSH3 0x14E6 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x14CA JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP2 SWAP1 PUSH3 0x19FC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x1A12 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x2967 DUP1 PUSH3 0x230C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E4 DUP1 PUSH3 0x4C73 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x152A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0x106B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x1590 JUMPI PUSH3 0x1590 PUSH3 0x155C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x15BB JUMPI PUSH3 0x15BB PUSH3 0x155C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x15D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x14E6 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x1572 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x162B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x1644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1652 DUP10 DUP4 DUP11 ADD PUSH3 0x1517 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x166C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x167A DUP10 DUP4 DUP11 ADD PUSH3 0x15EF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x1691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x169F DUP10 DUP4 DUP11 ADD PUSH3 0x15EF JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x16B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x16C5 DUP9 DUP3 DUP10 ADD PUSH3 0x15EF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x16EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x14E6 DUP3 PUSH3 0x16D2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x172C DUP4 PUSH3 0x16D2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x175B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x176C DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x1572 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x17A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x17BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x17CA DUP6 DUP3 DUP7 ADD PUSH3 0x1517 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x17F3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x17D9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xFF6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x181F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x17D6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x185C PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x1805 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x1870 DUP2 DUP7 PUSH3 0x1805 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH3 0x1886 DUP2 DUP6 PUSH3 0x1805 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x18B8 SWAP1 DUP4 ADD DUP5 PUSH3 0x1805 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x18DB PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x1805 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x4E0 DUP2 DUP6 PUSH3 0x1805 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x199A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x19CB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x17D6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x19F7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x14E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x1805 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65646080 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2947 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xBD8616EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD8616EC EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0x74E79189 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3FAFEF29 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x234 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x207F JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x20FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x213C JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x9CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x319 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x395 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH4 0xFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 DUP4 AND PUSH1 0x60 DUP7 ADD MSTORE DUP3 AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x401 PUSH2 0x3FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21F6 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x2231 JUMP JUMPDEST PUSH2 0xB42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xE0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x502 PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x254 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xEE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x55D CALLDATASIZE PUSH1 0x4 PUSH2 0x22F5 JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x57D CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x28C PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x10FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x610 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x63D CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x14E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x2530 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x712 JUMPI POP PUSH2 0x712 DUP3 PUSH2 0x15BC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x753 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7A0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x775 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x783 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 DUP3 PUSH2 0x160C JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP3 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x84E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x86A JUMPI POP PUSH2 0x86A DUP2 CALLER PUSH2 0x67F JUMP JUMPDEST PUSH2 0x8DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x166B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x91F JUMPI PUSH2 0x91F PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x948 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x9B1 JUMPI PUSH2 0x979 DUP2 PUSH2 0xD29 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI PUSH2 0x98B PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0x9AD DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x9BB DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x950 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA28 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x16D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA39 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA43 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA52 CALLER DUP3 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH5 0x100000000 DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP3 SWAP2 PUSH2 0xB0D JUMPI MLOAD SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xB2A DUP4 DUP9 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0x2677 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xBB2 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR DUP2 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP8 DUP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP4 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL MUL SWAP4 SWAP1 SWAP4 AND PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT SWAP5 DUP4 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP3 SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0xC92 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xB3131D7D301F8CAEB40981CFFC627B1FDF324B5E4A23845B61C1A6AD2A25F385 SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG2 PUSH2 0xD06 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1084 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0xE21 PUSH1 0x0 PUSH2 0x1A5B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE57 JUMPI PUSH2 0xE57 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE80 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xED4 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI PUSH2 0xEBB PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0xED0 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xEDE DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE88 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST PUSH2 0xA28 CALLER DUP4 DUP4 PUSH2 0x1AAD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0xF20 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0xF3A JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xFCA DUP5 DUP5 PUSH2 0x1B7B JUMP JUMPDEST PUSH2 0xFD2 PUSH2 0x1BAC JUMP JUMPDEST PUSH2 0xFDB DUP7 PUSH2 0x1508 JUMP JUMPDEST DUP2 PUSH2 0xFE5 DUP7 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF6 SWAP3 SWAP2 SWAP1 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x101A SWAP3 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP PUSH2 0x1029 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1037 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x108E CALLER DUP4 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x10AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x10B6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x10C4 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 AND LT PUSH2 0x11D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE LT ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x12B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x105D58DD1A5BDB881A185CDB89DD081CDD185C9D1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND GT PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1327 CALLER PUSH2 0x1322 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1345 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x136D DUP4 PUSH2 0x26DE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP1 PUSH1 0xCD PUSH1 0x0 PUSH2 0x139A PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x13B5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP5 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1412 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1494 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x14AF SWAP1 PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x14B8 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x279A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14F4 SWAP2 SWAP1 PUSH2 0x27E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1510 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1412 DUP2 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1586 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x15ED JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x712 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x16A0 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x177B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x8E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17F2 DUP4 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1839 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x185D JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1852 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1878 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x193E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1949 PUSH1 0x0 DUP3 PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1972 SWAP1 DUP5 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x19A0 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xA28 DUP3 DUP3 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 PUSH2 0x1E9F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x1C02 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1C2C JUMPI DUP1 PUSH2 0x1C16 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C25 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2677 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x185D JUMPI PUSH2 0x1C86 PUSH1 0x1 DUP4 PUSH2 0x25DD JUMP JUMPDEST SWAP2 POP PUSH2 0x1C93 PUSH1 0xA DUP7 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1C9E SWAP1 PUSH1 0x30 PUSH2 0x26C6 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CB3 JUMPI PUSH2 0x1CB3 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1CD5 PUSH1 0xA DUP7 PUSH2 0x2677 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 JUMP JUMPDEST PUSH2 0x1CE7 DUP5 DUP5 DUP5 PUSH2 0x1865 JUMP JUMPDEST PUSH2 0x1CF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1DF3 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x1E8B SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8E6 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 CALLER PUSH2 0x1A5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1F13 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1F4E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1F4B SWAP2 DUP2 ADD SWAP1 PUSH2 0x28F4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1FAB JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1FA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x185D JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x1FDC SWAP1 PUSH2 0x255E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2017 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2044 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2044 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2029 JUMP JUMPDEST POP PUSH2 0x2050 SWAP3 SWAP2 POP PUSH2 0x2054 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20A6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x20E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x215A DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2184 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21D5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21E5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x222C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x224A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2255 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH2 0x226A PUSH1 0x40 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP4 POP PUSH2 0x2278 PUSH1 0x60 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP3 POP PUSH2 0x2286 PUSH1 0x80 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP2 POP PUSH2 0x2294 PUSH1 0xA0 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2313 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2364 JUMPI PUSH2 0x2364 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x238C JUMPI PUSH2 0x238C PUSH2 0x2333 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x23A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2349 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x23F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2402 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2432 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2454 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2477 DUP9 DUP3 DUP10 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x24A5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x24B5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x24E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24F8 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2349 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2527 PUSH1 0x20 DUP5 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x254E DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2328 DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2572 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2592 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x25D6 JUMPI PUSH2 0x25D6 PUSH2 0x25AE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EF PUSH2 0x25AE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x265C JUMPI PUSH2 0x265C PUSH2 0x25AE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2686 JUMPI PUSH2 0x2686 PUSH2 0x2661 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x269D DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x26B1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x26D9 PUSH2 0x25AE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x26F7 JUMPI PUSH2 0x26F7 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x271B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x273C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2750 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2761 JUMPI PUSH2 0x278E JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x278E JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2786 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x276D JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A6 DUP3 DUP7 PUSH2 0x2701 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x27B6 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x27D3 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27EC DUP3 DUP5 PUSH2 0x2701 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2860 JUMPI PUSH2 0x2860 PUSH2 0x2661 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x28EA SWAP1 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xE4 PUSH1 0xB7 0xEF PUSH16 0x39786F77F92A66849CE602649C95F52 0xED 0xB7 SWAP9 0xCE CALLDATACOPY 0xFB SMOD PUSH30 0xA5FF64736F6C634300080E0033608060405234801561001057600080FD5B POP PUSH1 0x40 MLOAD PUSH2 0x4E4 CODESIZE SUB DUP1 PUSH2 0x4E4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x151 JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x47 JUMP JUMPDEST PUSH2 0x41 DUP2 PUSH2 0x97 JUMP JUMPDEST POP PUSH2 0x181 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xAA DUP2 PUSH2 0x142 PUSH1 0x20 SHL PUSH2 0x1A0 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E206973206E6F74206120636F6E747261637400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x354 DUP1 PUSH2 0x190 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x10E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x122 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xD7 DUP2 PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x116 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x120 PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x194 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19D DUP2 PUSH2 0x29E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH2 0x857C 0xDA 0x49 0xEE CREATE 0xAB PUSH32 0xFBF7C954AD8941A4D6737EA56FBE0BCCB90FD0C5769A64736F6C634300080E00 CALLER CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A2646970667358221220B6 0x23 0x5D DUP8 0xEC 0xD2 0x25 0xDD PUSH2 0xEF3B 0xE5 PUSH5 0xA9F4F0C63D CHAINID BLOCKHASH 0xA6 PUSH4 0xE7E89C1D SWAP3 PUSH14 0x730367C064736F6C634300080E00 CALLER ",
              "sourceMap": "1095:3757:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2787:822;;;;;;;;;;-1:-1:-1;2787:822:33;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2562:32:46;;;2544:51;;2532:2;2517:18;2787:822:33;;;;;;;;1561:31;;;;;;;;;;;;;;;;;;;2752:25:46;;;2740:2;2725:18;1561:31:33;2606:177:46;3315:197:6;;;;;;;;;;-1:-1:-1;3315:197:6;;;;;:::i;:::-;;:::i;:::-;;3761:222;;;;;;:::i;:::-;;:::i;3004:131::-;;;;;;;;;;;;;:::i;4606:172:33:-;;;;;;;;;;-1:-1:-1;4606:172:33;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;1598:28:33:-;;;;;;;;;;-1:-1:-1;1598:28:33;;;;-1:-1:-1;;;;;1598:28:33;;;1966:583;;;;;;;;;;;;;:::i;1441:85:0:-;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;1669:32:33;;;;;;;;;;-1:-1:-1;1669:32:33;;;;;:::i;:::-;;:::i;3655:842::-;;;;;;;;;;-1:-1:-1;3655:842:33;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;1535:20:33:-;;;;;;;;;;-1:-1:-1;1535:20:33;;;;-1:-1:-1;;;;;1535:20:33;;;1324:85;;;;;;;;;;;;1366:43;1324:85;;2787:822;3009:5;;2957:7;;-1:-1:-1;;;;;3009:5:33;2985:20;2995:9;;2985;:20::i;:::-;-1:-1:-1;;;;;2985:29:33;;2976:75;;;;-1:-1:-1;;;2976:75:33;;4487:2:46;2976:75:33;;;4469:21:46;4526:2;4506:18;;;4499:30;4565:33;4545:18;;;4538:61;4616:18;;2976:75:33;;;;;;;;;3111:13;;3062:17;;-1:-1:-1;;;;;3111:13:33;-1:-1:-1;;;3234:10:33;3262:20;:10;929:14:13;;838:112;3262:20:33;3300:5;3323:7;3348:8;3138:232;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3138:232:33;;;;;;;;;;;;;;-1:-1:-1;;;;;3138:232:33;-1:-1:-1;;;;;;3138:232:33;;;;;;;;;;3082:298;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3418:15:33;:36;;;;;;;-1:-1:-1;3418:36:33;;;;;;;;-1:-1:-1;;;;;3418:36:33;;-1:-1:-1;;;;;;3418:36:33;;;;;;;;3062:318;;-1:-1:-1;3470:67:33;3484:20;:10;929:14:13;;838:112;3484:20:33;3506:5;3513:7;3470:67;;;;;;;;:::i;:::-;;;;;;;;3548:22;:10;1043:19:13;;1061:1;1043:19;;;956:123;3548:22:33;3596:5;2787:822;-1:-1:-1;;;;;;2787:822:33:o;3315:197:6:-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3398:36:::1;3416:17;3398;:36::i;:::-;3485:12;::::0;;3495:1:::1;3485:12:::0;;;::::1;::::0;::::1;::::0;;;3444:61:::1;::::0;3466:17;;3485:12;3444:21:::1;:61::i;:::-;3315:197:::0;:::o;3761:222::-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3878:36:::1;3896:17;3878;:36::i;:::-;3924:52;3946:17;3965:4;3971;3924:21;:52::i;:::-;3761:222:::0;;:::o;3004:131::-;3082:7;2324:4;-1:-1:-1;;;;;2333:6:6;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:6;;7700:2:46;2308:92:6;;;7682:21:46;7739:2;7719:18;;;7712:30;7778:34;7758:18;;;7751:62;7849:26;7829:18;;;7822:54;7893:19;;2308:92:6;7498:420:46;2308:92:6;-1:-1:-1;;;;;;;;;;;;3004:131:6;:::o;4606:172:33:-;1513:6:0;;-1:-1:-1;;;;;1513:6:0;929:10:12;4670:23:33;;:48;;-1:-1:-1;4697:5:33;;-1:-1:-1;;;;;4697:5:33;929:10:12;4697:21:33;4670:48;4662:82;;;;-1:-1:-1;;;4662:82:33;;8125:2:46;4662:82:33;;;8107:21:46;8164:2;8144:18;;;8137:30;-1:-1:-1;;;8183:18:46;;;8176:51;8244:18;;4662:82:33;7923:345:46;4662:82:33;4754:5;:17;;-1:-1:-1;;;;;;4754:17:33;-1:-1:-1;;;;;4754:17:33;;;;;;;;;;4606:172::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;1966:583:33:-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;8475:2:46;3157:201:5;;;8457:21:46;8514:2;8494:18;;;8487:30;8553:34;8533:18;;;8526:62;-1:-1:-1;;;8604:18:46;;;8597:44;8658:19;;3157:201:5;8273:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;2017:26:33::1;:24;:26::i;:::-;2111:5;:18:::0;;-1:-1:-1;;;;;;2111:18:33::1;2119:10;2111:18;::::0;;2168:69:::1;::::0;::::1;::::0;2179:42:::1;::::0;2223:13:::1;::::0;2168:69:::1;;8862:25:46::0;;;8918:2;8903:18;;8896:34;8850:2;8835:18;;8688:248;2168:69:33::1;;::::0;;-1:-1:-1;;2168:69:33;;::::1;::::0;;;;;;;2158:80;;2168:69:::1;2158:80:::0;;::::1;::::0;2139:16:::1;:99:::0;2303:25:::1;::::0;2361:12:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2331:44;;;;;:::i;:::-;-1:-1:-1::0;;;;;2562:32:46;;;2544:51;;2532:2;2517:18;2331:44:33::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2385:37:33::1;::::0;-1:-1:-1;;;2385:37:33;;2411:10:::1;2385:37;::::0;::::1;2544:51:46::0;2303:72:33;;-1:-1:-1;;;;;;2385:25:33;::::1;::::0;::::1;::::0;2517:18:46;;2385:37:33::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2432:13:33::1;:32:::0;;-1:-1:-1;;;;;;2432:32:33::1;-1:-1:-1::0;;;;;2432:32:33;::::1;;::::0;;-1:-1:-1;;2520:10:33::1;1043:19:13::0;;-1:-1:-1;1043:19:13;;;2007:542:33::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;9093:36:46;;3553:14:5;;9081:2:46;9066:18;3553:14:5;;;;;;;3101:483;1966:583:33:o;1669:32::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1669:32:33;;-1:-1:-1;1669:32:33;:::o;3655:842::-;3748:5;;3721:7;;-1:-1:-1;;;;;3748:5:33;3740:53;;;;-1:-1:-1;;;3740:53:33;;9342:2:46;3740:53:33;;;9324:21:46;9381:2;9361:18;;;9354:30;-1:-1:-1;;;9400:18:46;;;9393:51;9461:18;;3740:53:33;9140:345:46;3740:53:33;4082:16;;4110:39;;;1366:43;4110:39;;;9664:25:46;4138:10:33;9705:18:46;;;9698:60;;;;4013:14:33;;4082:16;9637:18:46;;4110:39:33;;;;;;;;;;;;4100:50;;;;;;4053:98;;;;;;;;-1:-1:-1;;;10027:27:46;;10079:1;10070:11;;10063:27;;;;10115:2;10106:12;;10099:28;10152:2;10143:12;;9769:392;4053:98:33;;;;;;;;;;;;;4030:131;;;;;;4013:148;;4405:24;4432:25;4447:9;;4432:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4432:6:33;;:25;-1:-1:-1;;4432:14:33;:25;-1:-1:-1;4432:25:33:i;:::-;4405:52;3655:842;-1:-1:-1;;;;;3655:842:33:o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;10368:2:46;2401:73:0::1;::::0;::::1;10350:21:46::0;10407:2;10387:18;;;10380:30;10446:34;10426:18;;;10419:62;-1:-1:-1;;;10497:18:46;;;10490:36;10543:19;;2401:73:0::1;10166:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;4784:66:33:-:0;1334:13:0;:11;:13::i;2938:974:3:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;:::-;2938:974;;;:::o;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:3;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:3;;;;;;;;-1:-1:-1;;3531:63:3;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:3;;10964:2:46;3758:56:3;;;10946:21:46;11003:2;10983:18;;;10976:30;11042:34;11022:18;;;11015:62;-1:-1:-1;;;11093:18:46;;;11086:44;11147:19;;3758:56:3;10762:410:46;3527:302:3;-1:-1:-1;;;;;;;;;;;3644:28:3;;3636:82;;;;-1:-1:-1;;;3636:82:3;;11379:2:46;3636:82:3;;;11361:21:46;11418:2;11398:18;;;11391:30;11457:34;11437:18;;;11430:62;-1:-1:-1;;;11508:18:46;;;11501:39;11557:19;;3636:82:3;11177:405:46;3636:82:3;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;11789:2:46;1654:68:0;;;11771:21:46;;;11808:18;;;11801:30;11867:34;11847:18;;;11840:62;11919:18;;1654:68:0;11587:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1104:111::-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;12150:2:46;4902:69:5;;;12132:21:46;12189:2;12169:18;;;12162:30;12228:34;12208:18;;;12201:62;-1:-1:-1;;;12279:18:46;;;12272:41;12330:19;;4902:69:5;11948:407:46;4902:69:5;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;4424:227:16:-:0;4502:7;4522:17;4541:18;4563:27;4574:4;4580:9;4563:10;:27::i;:::-;4521:69;;;;4600:18;4612:5;4600:11;:18::i;:::-;-1:-1:-1;4635:9:16;4424:227;-1:-1:-1;;;4424:227:16:o;1805:281:3:-;-1:-1:-1;;;;;1476:19:11;;;1878:106:3;;;;-1:-1:-1;;;1878:106:3;;12562:2:46;1878:106:3;;;12544:21:46;12601:2;12581:18;;;12574:30;12640:34;12620:18;;;12613:62;-1:-1:-1;;;12691:18:46;;;12684:43;12744:19;;1878:106:3;12360:409:46;1878:106:3;-1:-1:-1;;;;;;;;;;;1994:85:3;;-1:-1:-1;;;;;;1994:85:3;-1:-1:-1;;;;;1994:85:3;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;2265:1373:16:-;2346:7;2355:12;2576:9;:16;2596:2;2576:22;2572:1060;;2912:4;2897:20;;2891:27;2961:4;2946:20;;2940:27;3018:4;3003:20;;2997:27;2614:9;2989:36;3059:25;3070:4;2989:36;2891:27;2940;3059:10;:25::i;:::-;3052:32;;;;;;;;;2572:1060;3105:9;:16;3125:2;3105:22;3101:531;;3421:4;3406:20;;3400:27;3471:4;3456:20;;3450:27;3511:23;3522:4;3400:27;3450;3511:10;:23::i;:::-;3504:30;;;;;;;;3101:531;-1:-1:-1;3581:1:16;;-1:-1:-1;3585:35:16;3101:531;2265:1373;;;;;:::o;570:631::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:561;;570:631;:::o;634:561::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:465;;788:34;;-1:-1:-1;;;788:34:16;;13108:2:46;788:34:16;;;13090:21:46;13147:2;13127:18;;;13120:30;13186:26;13166:18;;;13159:54;13230:18;;788:34:16;12906:348:46;730:465:16;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:356;;903:41;;-1:-1:-1;;;903:41:16;;13461:2:46;903:41:16;;;13443:21:46;13500:2;13480:18;;;13473:30;13539:33;13519:18;;;13512:61;13590:18;;903:41:16;13259:355:46;839:356:16;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:234;;1020:44;;-1:-1:-1;;;1020:44:16;;13821:2:46;1020:44:16;;;13803:21:46;13860:2;13840:18;;;13833:30;13899:34;13879:18;;;13872:62;-1:-1:-1;;;13950:18:46;;;13943:32;13992:19;;1020:44:16;13619:398:46;961:234:16;1094:30;1085:5;:39;;;;;;;;:::i;:::-;;1081:114;;1140:44;;-1:-1:-1;;;1140:44:16;;14224:2:46;1140:44:16;;;14206:21:46;14263:2;14243:18;;;14236:30;14302:34;14282:18;;;14275:62;-1:-1:-1;;;14353:18:46;;;14346:32;14395:19;;1140:44:16;14022:398:46;2192:152:3;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:3;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:11;;;7195:88:3;;;;-1:-1:-1;;;7195:88:3;;14627:2:46;7195:88:3;;;14609:21:46;14666:2;14646:18;;;14639:30;14705:34;14685:18;;;14678:62;-1:-1:-1;;;14756:18:46;;;14749:36;14802:19;;7195:88:3;14425:402:46;7195:88:3;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:3;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;5832:1603:16:-;5958:7;;6882:66;6869:79;;6865:161;;;-1:-1:-1;6980:1:16;;-1:-1:-1;6984:30:16;6964:51;;6865:161;7039:1;:7;;7044:2;7039:7;;:18;;;;;7050:1;:7;;7055:2;7050:7;;7039:18;7035:100;;;-1:-1:-1;7089:1:16;;-1:-1:-1;7093:30:16;7073:51;;7035:100;7246:24;;;7229:14;7246:24;;;;;;;;;15338:25:46;;;15411:4;15399:17;;15379:18;;;15372:45;;;;15433:18;;;15426:34;;;15476:18;;;15469:34;;;7246:24:16;;15310:19:46;;7246:24:16;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7246:24:16;;-1:-1:-1;;7246:24:16;;;-1:-1:-1;;;;;;;7284:20:16;;7280:101;;7336:1;7340:29;7320:50;;;;;;;7280:101;7399:6;-1:-1:-1;7407:20:16;;-1:-1:-1;5832:1603:16;;;;;;;;:::o;4905:336::-;5015:7;;-1:-1:-1;;;;;5060:80:16;;5015:7;5166:25;5182:3;5167:18;;;5189:2;5166:25;:::i;:::-;5150:42;;5209:25;5220:4;5226:1;5229;5232;5209:10;:25::i;:::-;5202:32;;;;;;4905:336;;;;;;:::o;6622:742:11:-;6768:12;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;6933:415::-;6622:742;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:347:46:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:46;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;366:127;427:10;422:3;418:20;415:1;408:31;458:4;455:1;448:15;482:4;479:1;472:15;498:632;563:5;593:18;634:2;626:6;623:14;620:40;;;640:18;;:::i;:::-;715:2;709:9;683:2;769:15;;-1:-1:-1;;765:24:46;;;791:2;761:33;757:42;745:55;;;815:18;;;835:22;;;812:46;809:72;;;861:18;;:::i;:::-;901:10;897:2;890:22;930:6;921:15;;960:6;952;945:22;1000:3;991:6;986:3;982:16;979:25;976:45;;;1017:1;1014;1007:12;976:45;1067:6;1062:3;1055:4;1047:6;1043:17;1030:44;1122:1;1115:4;1106:6;1098;1094:19;1090:30;1083:41;;;;498:632;;;;;:::o;1135:222::-;1178:5;1231:3;1224:4;1216:6;1212:17;1208:27;1198:55;;1249:1;1246;1239:12;1198:55;1271:80;1347:3;1338:6;1325:20;1318:4;1310:6;1306:17;1271:80;:::i;1362:1031::-;1489:6;1497;1505;1513;1521;1574:3;1562:9;1553:7;1549:23;1545:33;1542:53;;;1591:1;1588;1581:12;1542:53;1631:9;1618:23;1660:18;1701:2;1693:6;1690:14;1687:34;;;1717:1;1714;1707:12;1687:34;1756:58;1806:7;1797:6;1786:9;1782:22;1756:58;:::i;:::-;1833:8;;-1:-1:-1;1730:84:46;-1:-1:-1;1921:2:46;1906:18;;1893:32;;-1:-1:-1;1937:16:46;;;1934:36;;;1966:1;1963;1956:12;1934:36;1989:52;2033:7;2022:8;2011:9;2007:24;1989:52;:::i;:::-;1979:62;;2094:2;2083:9;2079:18;2066:32;2050:48;;2123:2;2113:8;2110:16;2107:36;;;2139:1;2136;2129:12;2107:36;2162:52;2206:7;2195:8;2184:9;2180:24;2162:52;:::i;:::-;2152:62;;2267:2;2256:9;2252:18;2239:32;2223:48;;2296:2;2286:8;2283:16;2280:36;;;2312:1;2309;2302:12;2280:36;;2335:52;2379:7;2368:8;2357:9;2353:24;2335:52;:::i;:::-;2325:62;;;1362:1031;;;;;;;;:::o;2788:173::-;2856:20;;-1:-1:-1;;;;;2905:31:46;;2895:42;;2885:70;;2951:1;2948;2941:12;2885:70;2788:173;;;:::o;2966:186::-;3025:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:52;;;3094:1;3091;3084:12;3046:52;3117:29;3136:9;3117:29;:::i;3157:524::-;3234:6;3242;3295:2;3283:9;3274:7;3270:23;3266:32;3263:52;;;3311:1;3308;3301:12;3263:52;3334:29;3353:9;3334:29;:::i;:::-;3324:39;;3414:2;3403:9;3399:18;3386:32;3441:18;3433:6;3430:30;3427:50;;;3473:1;3470;3463:12;3427:50;3496:22;;3549:4;3541:13;;3537:27;-1:-1:-1;3527:55:46;;3578:1;3575;3568:12;3527:55;3601:74;3667:7;3662:2;3649:16;3644:2;3640;3636:11;3601:74;:::i;:::-;3591:84;;;3157:524;;;;;:::o;3686:180::-;3745:6;3798:2;3786:9;3777:7;3773:23;3769:32;3766:52;;;3814:1;3811;3804:12;3766:52;-1:-1:-1;3837:23:46;;3686:180;-1:-1:-1;3686:180:46:o;3871:409::-;3941:6;3949;4002:2;3990:9;3981:7;3977:23;3973:32;3970:52;;;4018:1;4015;4008:12;3970:52;4058:9;4045:23;4091:18;4083:6;4080:30;4077:50;;;4123:1;4120;4113:12;4077:50;4162:58;4212:7;4203:6;4192:9;4188:22;4162:58;:::i;:::-;4239:8;;4136:84;;-1:-1:-1;3871:409:46;-1:-1:-1;;;;3871:409:46:o;4645:258::-;4717:1;4727:113;4741:6;4738:1;4735:13;4727:113;;;4817:11;;;4811:18;4798:11;;;4791:39;4763:2;4756:10;4727:113;;;4858:6;4855:1;4852:13;4849:48;;;-1:-1:-1;;4893:1:46;4875:16;;4868:27;4645:258::o;4908:::-;4950:3;4988:5;4982:12;5015:6;5010:3;5003:19;5031:63;5087:6;5080:4;5075:3;5071:14;5064:4;5057:5;5053:16;5031:63;:::i;:::-;5148:2;5127:15;-1:-1:-1;;5123:29:46;5114:39;;;;5155:4;5110:50;;4908:258;-1:-1:-1;;4908:258:46:o;5171:717::-;5501:1;5497;5492:3;5488:11;5484:19;5476:6;5472:32;5461:9;5454:51;5541:6;5536:2;5525:9;5521:18;5514:34;5584:3;5579:2;5568:9;5564:18;5557:31;5435:4;5611:46;5652:3;5641:9;5637:19;5629:6;5611:46;:::i;:::-;5705:9;5697:6;5693:22;5688:2;5677:9;5673:18;5666:50;5739:33;5765:6;5757;5739:33;:::i;:::-;5725:47;;5821:9;5813:6;5809:22;5803:3;5792:9;5788:19;5781:51;5849:33;5875:6;5867;5849:33;:::i;:::-;5841:41;5171:717;-1:-1:-1;;;;;;;;5171:717:46:o;5893:315::-;-1:-1:-1;;;;;6068:32:46;;6050:51;;6137:2;6132;6117:18;;6110:30;;;-1:-1:-1;;6157:45:46;;6183:18;;6175:6;6157:45;:::i;:::-;6149:53;5893:315;-1:-1:-1;;;;5893:315:46:o;6213:454::-;6438:6;6427:9;6420:25;6481:2;6476;6465:9;6461:18;6454:30;6401:4;6507:45;6548:2;6537:9;6533:18;6525:6;6507:45;:::i;:::-;6600:9;6592:6;6588:22;6583:2;6572:9;6568:18;6561:50;6628:33;6654:6;6646;6628:33;:::i;6672:408::-;6874:2;6856:21;;;6913:2;6893:18;;;6886:30;6952:34;6947:2;6932:18;;6925:62;-1:-1:-1;;;7018:2:46;7003:18;;6996:42;7070:3;7055:19;;6672:408::o;7085:::-;7287:2;7269:21;;;7326:2;7306:18;;;7299:30;7365:34;7360:2;7345:18;;7338:62;-1:-1:-1;;;7431:2:46;7416:18;;7409:42;7483:3;7468:19;;7085:408::o;10573:184::-;10643:6;10696:2;10684:9;10675:7;10671:23;10667:32;10664:52;;;10712:1;10709;10702:12;10664:52;-1:-1:-1;10735:16:46;;10573:184;-1:-1:-1;10573:184:46:o;12774:127::-;12835:10;12830:3;12826:20;12823:1;12816:31;12866:4;12863:1;12856:15;12890:4;12887:1;12880:15;14832:274;14961:3;14999:6;14993:13;15015:53;15061:6;15056:3;15049:4;15041:6;15037:17;15015:53;:::i;:::-;15084:16;;;;;14832:274;-1:-1:-1;;14832:274:46:o;15514:225::-;15554:3;15585:1;15581:6;15578:1;15575:13;15572:136;;;15630:10;15625:3;15621:20;15618:1;15611:31;15665:4;15662:1;15655:15;15693:4;15690:1;15683:15;15572:136;-1:-1:-1;15724:9:46;;15514:225::o;15744:220::-;15893:2;15882:9;15875:21;15856:4;15913:45;15954:2;15943:9;15939:18;15931:6;15913:45;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4189400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "2341",
                "MINTER_TYPEHASH()": "283",
                "admin()": "2392",
                "artistContracts(uint256)": "4692",
                "beaconAddress()": "2349",
                "createArtist(bytes,string,string,string)": "infinite",
                "getSigner(bytes)": "infinite",
                "initialize()": "infinite",
                "owner()": "2387",
                "proxiableUUID()": "infinite",
                "renounceOwnership()": "infinite",
                "setAdmin(address)": "28923",
                "transferOwnership(address)": "28380",
                "upgradeTo(address)": "infinite",
                "upgradeToAndCall(address,bytes)": "infinite"
              },
              "internal": {
                "_authorizeUpgrade(address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "MINTER_TYPEHASH()": "fa4d280c",
              "admin()": "f851a440",
              "artistContracts(uint256)": "b16a43f0",
              "beaconAddress()": "7e2ec6d0",
              "createArtist(bytes,string,string,string)": "233654eb",
              "getSigner(bytes)": "e6adabfd",
              "initialize()": "8129fc1c",
              "owner()": "8da5cb5b",
              "proxiableUUID()": "52d1902d",
              "renounceOwnership()": "715018a6",
              "setAdmin(address)": "704b6c02",
              "transferOwnership(address)": "f2fde38b",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"artistId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"artistAddress\",\"type\":\"address\"}],\"name\":\"CreatedArtist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artistContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createArtist\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"params\":{\"_name\":\"Name of the artist\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAdmin(address)\":{\"params\":{\"_newAdmin\":\"address of new admin\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"events\":{\"CreatedArtist(uint256,string,string,address)\":{\"notice\":\"Emitted when an Artist is created\"}},\"kind\":\"user\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"notice\":\"Creates a new artist contract as a factory with a deterministic address Important: None of these fields (except the Url fields with the same hash) can be changed after calling\"},\"getSigner(bytes)\":{\"notice\":\"Get signer address of signature\"},\"initialize()\":{\"notice\":\"Initializes factory\"},\"setAdmin(address)\":{\"notice\":\"Sets the admin for authorizing artist deployment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistCreator.sol\":\"ArtistCreator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n        require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n        return _IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeTo} and {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"../ERC1967/ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\\n *\\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\\n * conflict with the storage layout of the implementation behind the proxy.\\n *\\n * _Available since v3.4._\\n */\\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the proxy with `beacon`.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\\n     * constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract with the interface {IBeacon}.\\n     */\\n    constructor(address beacon, bytes memory data) payable {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current beacon address.\\n     */\\n    function _beacon() internal view virtual returns (address) {\\n        return _getBeacon();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address of the associated beacon.\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return IBeacon(_getBeacon()).implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract.\\n     * - The implementation returned by `beacon` must be a contract.\\n     */\\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n}\\n\",\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../../access/Ownable.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\\n * implementation contract, which is where they will delegate all function calls.\\n *\\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\\n */\\ncontract UpgradeableBeacon is IBeacon, Ownable {\\n    address private _implementation;\\n\\n    /**\\n     * @dev Emitted when the implementation returned by the beacon is changed.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\\n     * beacon.\\n     */\\n    constructor(address implementation_) {\\n        _setImplementation(implementation_);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function implementation() public view virtual override returns (address) {\\n        return _implementation;\\n    }\\n\\n    /**\\n     * @dev Upgrades the beacon to a new implementation.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * Requirements:\\n     *\\n     * - msg.sender must be the owner of the contract.\\n     * - `newImplementation` must be a contract.\\n     */\\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Sets the implementation contract address for this beacon\\n     *\\n     * Requirements:\\n     *\\n     * - `newImplementation` must be a contract.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"UpgradeableBeacon: implementation is not a contract\\\");\\n        _implementation = newImplementation;\\n    }\\n}\\n\",\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"contracts/Artist.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\n\\n// This contract is a combination of Mirror.xyz's Editions.sol and Zora's SingleEditionMintable.sol\\n\\n/**\\n * @title Artist\\n * @author SoundXYZ\\n */\\ncontract Artist is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // todo (optimization): link Strings as a deployed library\\n    using Strings for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n    }\\n\\n    // ============ Storage ============\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId;\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n\\n    // ============ Events ============\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer\\n    );\\n\\n    // ============ Methods ============\\n\\n    /**\\n      @param _owner Owner of edition\\n      @param _name Name of artist\\n    */\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set token id start to be 1 not 0\\n        atTokenId.increment();\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime\\n    ) external onlyOwner {\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    function buyEdition(uint256 _editionId) external payable {\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(editions[_editionId].quantity > 0, 'Edition does not exist');\\n        // Check that there are still tokens available to purchase.\\n        require(editions[_editionId].numSold < editions[_editionId].quantity, 'This edition is already sold out.');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= editions[_editionId].price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases before the start time\\n        require(editions[_editionId].startTime < block.timestamp, \\\"Auction hasn't started\\\");\\n        // Don't allow purchases after the end time\\n        require(editions[_editionId].endTime > block.timestamp, 'Auction has ended');\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, atTokenId.current());\\n        // Update the deposited total for the edition\\n        depositedForEdition[_editionId] += msg.value;\\n        // Increment the number of tokens sold for this edition.\\n        editions[_editionId].numSold++;\\n        // Store the mapping of token id to the edition being purchased.\\n        tokenToEdition[atTokenId.current()] = _editionId;\\n\\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\\n\\n        atTokenId.increment();\\n    }\\n\\n    // ============ Operational Methods ============\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n    }\\n\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n    }\\n\\n    // ============ NFT Methods ============\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\\n    }\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    // ============ Extensions =================\\n\\n    /**\\n        @dev Get token ids for a given edition id\\n        @param _editionId edition id\\n     */\\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                tokenIdsOfEdition[index] = id;\\n                index++;\\n            }\\n        }\\n        return tokenIdsOfEdition;\\n    }\\n\\n    /**\\n        @dev Get owners of a given edition id\\n        @param _editionId edition id\\n     */\\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\\n                index++;\\n            }\\n        }\\n        return ownersOfEdition;\\n    }\\n\\n    /**\\n        @dev Get royalty information for token\\n        @param _editionId edition id\\n        @param _salePrice Sale price for the token\\n     */\\n    function royaltyInfo(uint256 _editionId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        Edition memory edition = editions[_editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    function totalSupply() external view returns (uint256) {\\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\\n    }\\n\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    // ============ Private Methods ============\\n\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n}\\n\",\"keccak256\":\"0x275df23e9824418bb46b4643f2cee3b4871481f1a4be57f357af6753b485aab0\",\"license\":\"GPL-3.0-or-later\"},\"contracts/ArtistCreator.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';\\nimport './Artist.sol';\\n\\ncontract ArtistCreator is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSAUpgradeable for bytes32;\\n\\n    // ============ Storage ============\\n\\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\\n    CountersUpgradeable.Counter private atArtistId;\\n    // address used for signature verification, changeable by owner\\n    address public admin;\\n    bytes32 public DOMAIN_SEPARATOR;\\n    address public beaconAddress;\\n    // registry of created contracts\\n    address[] public artistContracts;\\n\\n    // ============ Events ============\\n\\n    /// Emitted when an Artist is created\\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\\n\\n    // ============ Functions ============\\n\\n    /// Initializes factory\\n    function initialize() public initializer {\\n        __Ownable_init_unchained();\\n\\n        // set admin for artist deployment authorization\\n        admin = msg.sender;\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n\\n        // set up beacon with msg.sender as the owner\\n        UpgradeableBeacon _beacon = new UpgradeableBeacon(address(new Artist()));\\n        _beacon.transferOwnership(msg.sender);\\n        beaconAddress = address(_beacon);\\n\\n        // Set artist id start to be 1 not 0\\n        atArtistId.increment();\\n    }\\n\\n    /// Creates a new artist contract as a factory with a deterministic address\\n    /// Important: None of these fields (except the Url fields with the same hash) can be changed after calling\\n    /// @param _name Name of the artist\\n    function createArtist(\\n        bytes calldata signature,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public returns (address) {\\n        require((getSigner(signature) == admin), 'invalid authorization signature');\\n\\n        BeaconProxy proxy = new BeaconProxy(\\n            beaconAddress,\\n            abi.encodeWithSelector(\\n                Artist(address(0)).initialize.selector,\\n                msg.sender,\\n                atArtistId.current(),\\n                _name,\\n                _symbol,\\n                _baseURI\\n            )\\n        );\\n\\n        // add to registry\\n        artistContracts.push(address(proxy));\\n\\n        emit CreatedArtist(atArtistId.current(), _name, _symbol, address(proxy));\\n\\n        atArtistId.increment();\\n\\n        return address(proxy);\\n    }\\n\\n    /// Get signer address of signature\\n    function getSigner(bytes calldata signature) public view returns (address) {\\n        require(admin != address(0), 'whitelist not enabled');\\n        // Verify EIP-712 signature by recreating the data structure\\n        // that we signed on the client side, and then using that to recover\\n        // the address that signed the signature for this data.\\n        bytes32 digest = keccak256(\\n            abi.encodePacked('\\\\x19\\\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, msg.sender)))\\n        );\\n        // Use the recover method to see what address was used to create\\n        // the signature on this data.\\n        // Note that if the digest doesn't exactly match what was signed we'll\\n        // get a random recovered address.\\n        address recoveredAddress = digest.recover(signature);\\n        return recoveredAddress;\\n    }\\n\\n    /// Sets the admin for authorizing artist deployment\\n    /// @param _newAdmin address of new admin\\n    function setAdmin(address _newAdmin) external {\\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\\n        admin = _newAdmin;\\n    }\\n\\n    function _authorizeUpgrade(address) internal override onlyOwner {}\\n}\\n\",\"keccak256\":\"0x57b84dba37d2e931d2566252fbe738ad57cb6369f050ac83dd8eed7168e21196\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 528,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 825,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "__gap",
                "offset": 0,
                "slot": "101",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 5374,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "atArtistId",
                "offset": 0,
                "slot": "201",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 5376,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "admin",
                "offset": 0,
                "slot": "202",
                "type": "t_address"
              },
              {
                "astId": 5378,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "DOMAIN_SEPARATOR",
                "offset": 0,
                "slot": "203",
                "type": "t_bytes32"
              },
              {
                "astId": 5380,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "beaconAddress",
                "offset": 0,
                "slot": "204",
                "type": "t_address"
              },
              {
                "astId": 5383,
                "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                "label": "artistContracts",
                "offset": 0,
                "slot": "205",
                "type": "t_array(t_address)dyn_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistCreator.sol:ArtistCreator",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "events": {
              "CreatedArtist(uint256,string,string,address)": {
                "notice": "Emitted when an Artist is created"
              }
            },
            "kind": "user",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "notice": "Creates a new artist contract as a factory with a deterministic address Important: None of these fields (except the Url fields with the same hash) can be changed after calling"
              },
              "getSigner(bytes)": {
                "notice": "Get signer address of signature"
              },
              "initialize()": {
                "notice": "Initializes factory"
              },
              "setAdmin(address)": {
                "notice": "Sets the admin for authorizing artist deployment"
              }
            },
            "version": 1
          }
        }
      },
      "contracts/ArtistCreatorProxy.sol": {
        "ArtistCreatorProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_3134": {
                  "entryPoint": null,
                  "id": 3134,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_5640": {
                  "entryPoint": null,
                  "id": 5640,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_setImplementation_3203": {
                  "entryPoint": 220,
                  "id": 3203,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeToAndCall_3248": {
                  "entryPoint": 58,
                  "id": 3248,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeTo_3218": {
                  "entryPoint": 112,
                  "id": 3218,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@functionDelegateCall_3896": {
                  "entryPoint": 176,
                  "id": 3896,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3931": {
                  "entryPoint": 430,
                  "id": 3931,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_4011": {
                  "entryPoint": 667,
                  "id": 4011,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3686": {
                  "entryPoint": 652,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3962": {
                  "entryPoint": 670,
                  "id": 3962,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 727,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 821,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1029,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1057,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 777,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 755,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3134:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "228:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "245:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "252:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "257:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "248:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "248:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "238:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "238:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "238:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "285:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "288:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "278:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "309:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "312:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "302:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "302:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "196:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "381:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "391:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "400:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "395:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "460:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "490:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "481:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "481:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "504:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "509:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "500:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "500:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "494:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "494:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "474:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "474:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "474:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "421:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "424:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "418:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "418:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "432:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "434:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "446:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "439:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "439:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "434:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "414:3:46",
                                "statements": []
                              },
                              "src": "410:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "549:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "562:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "567:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "558:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "558:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "576:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "551:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "551:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "551:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "541:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "535:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "535:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "532:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "359:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "364:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "369:6:46",
                            "type": ""
                          }
                        ],
                        "src": "328:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "715:929:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "761:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "770:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "773:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "763:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "763:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "763:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "736:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "745:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "732:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "732:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "757:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "728:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "728:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "725:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "786:50:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "826:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "796:29:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "796:40:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "786:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "845:59:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "889:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "900:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "885:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "885:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "855:29:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "855:49:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "845:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "913:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "937:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "948:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "933:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "933:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "927:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "927:25:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "917:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "961:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "979:2:46",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "983:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "975:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "975:10:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "987:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "971:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "971:18:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "965:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1016:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1025:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1028:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1018:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1018:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1018:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1004:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1012:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1001:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1001:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "998:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1041:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1055:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1066:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1051:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1051:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1045:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1121:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1130:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1133:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1123:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1123:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1123:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1100:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1104:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1096:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1096:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1111:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1092:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1092:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1085:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1085:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1082:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1146:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1162:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1156:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1156:9:46"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1150:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1188:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1190:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1190:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1190:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1180:2:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1184:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1177:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1177:10:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1174:36:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1219:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1233:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1229:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1223:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1245:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1265:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1259:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1259:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1249:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1277:71:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1299:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1323:2:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1327:4:46",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1319:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1319:13:46"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1334:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1315:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1315:22:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1339:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1311:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1311:31:46"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1344:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1307:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1307:40:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1295:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1295:53:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1281:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1407:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1409:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1409:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1409:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1366:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1378:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1363:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1363:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1386:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1398:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1383:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1383:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1360:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1360:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1357:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1445:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1449:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1438:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1438:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1438:22:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1476:6:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1484:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1469:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1469:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1469:18:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1533:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1542:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1545:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1535:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1535:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1535:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1510:2:46"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1514:2:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1506:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1506:11:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1519:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1502:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1502:20:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1524:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1499:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1499:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1496:53:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1584:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1588:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1580:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1580:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1597:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1605:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1593:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1593:15:46"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1610:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1558:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1558:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1558:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1622:16:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1632:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1622:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "665:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "676:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "688:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "696:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "704:6:46",
                            "type": ""
                          }
                        ],
                        "src": "591:1053:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1823:235:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1840:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1851:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1833:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1833:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1833:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1874:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1885:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1870:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1870:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1890:2:46",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1863:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1863:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1863:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1913:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1924:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1909:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1909:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1929:34:46",
                                    "type": "",
                                    "value": "ERC1967: new implementation is n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1902:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1902:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1902:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1984:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1995:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1980:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1980:18:46"
                                  },
                                  {
                                    "hexValue": "6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2000:15:46",
                                    "type": "",
                                    "value": "ot a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1973:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1973:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1973:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2025:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2037:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2048:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2033:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2033:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2025:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1800:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1814:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1649:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2237:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2254:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2265:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2247:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2247:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2247:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2288:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2299:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2284:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2284:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2304:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2277:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2277:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2277:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2327:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2338:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2323:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2323:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2343:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2316:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2316:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2316:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2398:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2409:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2394:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2414:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2387:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2387:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2432:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2444:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2455:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2440:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2440:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2432:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2214:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2228:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2063:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2607:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2617:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2637:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2631:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2631:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2621:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2679:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2687:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2675:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2675:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2694:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2699:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2653:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2653:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2653:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2715:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2726:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2731:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2722:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2722:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2715:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2583:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2588:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2599:3:46",
                            "type": ""
                          }
                        ],
                        "src": "2470:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2870:262:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2887:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2898:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2880:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2880:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2880:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2910:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2930:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2924:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2924:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2914:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2957:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2968:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2953:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2953:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2973:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2946:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2946:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2946:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3015:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3011:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3011:15:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3032:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3043:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3028:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3028:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3048:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2989:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2989:66:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2989:66:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3064:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3080:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3099:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3107:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3095:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3095:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3116:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3112:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3112:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3091:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3091:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3076:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3076:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3123:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3072:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3072:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3064:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2839:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2850:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2861:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2749:383:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        let offset := mload(add(headStart, 64))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value2 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n        mstore(add(headStart, 96), \"ot a contract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405260405161074438038061074483398101604081905261002291610335565b82816100308282600061003a565b5050505050610454565b61004383610070565b6000825111806100505750805b1561006b5761006983836100b060201b6100291760201c565b505b505050565b610079816100dc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d5838360405180606001604052806027815260200161071d602791396101ae565b9392505050565b6100ef8161028c60201b6100551760201c565b6101565760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b8061018d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029b60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102165760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161014d565b600080856001600160a01b0316856040516102319190610405565b600060405180830381855af49150503d806000811461026c576040519150601f19603f3d011682016040523d82523d6000602084013e610271565b606091505b50909250905061028282828661029e565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102ad5750816100d5565b8251156102bd5782518084602001fd5b8160405162461bcd60e51b815260040161014d9190610421565b80516001600160a01b03811681146102ee57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561032457818101518382015260200161030c565b838111156100695750506000910152565b60008060006060848603121561034a57600080fd5b610353846102d7565b9250610361602085016102d7565b60408501519092506001600160401b038082111561037e57600080fd5b818601915086601f83011261039257600080fd5b8151818111156103a4576103a46102f3565b604051601f8201601f19908116603f011681019083821181831017156103cc576103cc6102f3565b816040528281528960208487010111156103e557600080fd5b6103f6836020830160208801610309565b80955050505050509250925092565b60008251610417818460208701610309565b9190910192915050565b6020815260008251806020840152610440816040850160208701610309565b601f01601f19169190910160400192915050565b6102ba806104636000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204d4446e8bf8e4fdc408a2ce563ade263daa446b1ddaeb7099c7710de6e17838864736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x744 CODESIZE SUB DUP1 PUSH2 0x744 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x335 JUMP JUMPDEST DUP3 DUP2 PUSH2 0x30 DUP3 DUP3 PUSH1 0x0 PUSH2 0x3A JUMP JUMPDEST POP POP POP POP POP PUSH2 0x454 JUMP JUMPDEST PUSH2 0x43 DUP4 PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x50 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x6B JUMPI PUSH2 0x69 DUP4 DUP4 PUSH2 0xB0 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x79 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x71D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1AE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEF DUP2 PUSH2 0x28C PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x156 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x18D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x29B PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x14D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x271 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x282 DUP3 DUP3 DUP7 PUSH2 0x29E JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2AD JUMPI POP DUP2 PUSH2 0xD5 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x2BD JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14D SWAP2 SWAP1 PUSH2 0x421 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x324 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x30C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x69 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x353 DUP5 PUSH2 0x2D7 JUMP JUMPDEST SWAP3 POP PUSH2 0x361 PUSH1 0x20 DUP6 ADD PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH2 0x3A4 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3CC JUMPI PUSH2 0x3CC PUSH2 0x2F3 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP10 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F6 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x309 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x417 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x309 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x440 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x309 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2BA DUP1 PUSH2 0x463 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x130 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x14B SWAP2 SWAP1 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x19B DUP3 DUP3 DUP7 PUSH2 0x1A5 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1B4 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1C4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x22A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E1 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x220 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x249 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212204D4446 0xE8 0xBF DUP15 0x4F 0xDC BLOCKHASH DUP11 0x2C 0xE5 PUSH4 0xADE263DA LOG4 CHAINID 0xB1 0xDD 0xAE 0xB7 MULMOD SWAP13 PUSH24 0x10DE6E17838864736F6C634300080E003341646472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65640000 ",
              "sourceMap": "434:177:34:-:0;;;484:125;;;;;;;;;;;;;;;;;;:::i;:::-;592:6;600:5;1024:39:21;592:6:34;600:5;1057::21;1024:17;:39::i;:::-;958:112;;484:125:34;;;434:177;;2183:295:22;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;;;;;:53;;:::i;:::-;;2360:112;2183:295;;;:::o;1897:152::-;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:22;;;;;;;;1897:152;:::o;6570:198:27:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:27:o;1532:259:22:-;1613:37;1632:17;1613:18;;;;;:37;;:::i;:::-;1605:95;;;;-1:-1:-1;;;1605:95:22;;1851:2:46;1605:95:22;;;1833:21:46;1890:2;1870:18;;;1863:30;1929:34;1909:18;;;1902:62;-1:-1:-1;;;1980:18:46;;;1973:43;2033:19;;1605:95:22;;;;;;;;;1767:17;1710:48;1030:66;1737:20;;1710:26;;;;;:48;;:::i;:::-;:74;;-1:-1:-1;;;;;;1710:74:22;-1:-1:-1;;;;;1710:74:22;;;;;;;;;;-1:-1:-1;1532:259:22:o;6954:387:27:-;7095:12;-1:-1:-1;;;;;1465:19:27;;;7119:69;;;;-1:-1:-1;;;7119:69:27;;2265:2:46;7119:69:27;;;2247:21:46;2304:2;2284:18;;;2277:30;2343:34;2323:18;;;2316:62;-1:-1:-1;;;2394:18:46;;;2387:36;2440:19;;7119:69:27;2063:402:46;7119:69:27;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:27;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:27;;-1:-1:-1;7199:67:27;-1:-1:-1;7283:51:27;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:27:o;1175:320::-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;1614:190:29:-;1784:4;1614:190::o;7561:742:27:-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:27;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:27;;;;;;;;:::i;14:177:46:-;93:13;;-1:-1:-1;;;;;135:31:46;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:258;400:1;410:113;424:6;421:1;418:13;410:113;;;500:11;;;494:18;481:11;;;474:39;446:2;439:10;410:113;;;541:6;538:1;535:13;532:48;;;-1:-1:-1;;576:1:46;558:16;;551:27;328:258::o;591:1053::-;688:6;696;704;757:2;745:9;736:7;732:23;728:32;725:52;;;773:1;770;763:12;725:52;796:40;826:9;796:40;:::i;:::-;786:50;;855:49;900:2;889:9;885:18;855:49;:::i;:::-;948:2;933:18;;927:25;845:59;;-1:-1:-1;;;;;;1001:14:46;;;998:34;;;1028:1;1025;1018:12;998:34;1066:6;1055:9;1051:22;1041:32;;1111:7;1104:4;1100:2;1096:13;1092:27;1082:55;;1133:1;1130;1123:12;1082:55;1162:2;1156:9;1184:2;1180;1177:10;1174:36;;;1190:18;;:::i;:::-;1265:2;1259:9;1233:2;1319:13;;-1:-1:-1;;1315:22:46;;;1339:2;1311:31;1307:40;1295:53;;;1363:18;;;1383:22;;;1360:46;1357:72;;;1409:18;;:::i;:::-;1449:10;1445:2;1438:22;1484:2;1476:6;1469:18;1524:7;1519:2;1514;1510;1506:11;1502:20;1499:33;1496:53;;;1545:1;1542;1535:12;1496:53;1558:55;1610:2;1605;1597:6;1593:15;1588:2;1584;1580:11;1558:55;:::i;:::-;1632:6;1622:16;;;;;;;591:1053;;;;;:::o;2470:274::-;2599:3;2637:6;2631:13;2653:53;2699:6;2694:3;2687:4;2679:6;2675:17;2653:53;:::i;:::-;2722:16;;;;;2470:274;-1:-1:-1;;2470:274:46:o;2749:383::-;2898:2;2887:9;2880:21;2861:4;2930:6;2924:13;2973:6;2968:2;2957:9;2953:18;2946:34;2989:66;3048:6;3043:2;3032:9;3028:18;3023:2;3015:6;3011:15;2989:66;:::i;:::-;3116:2;3095:15;-1:-1:-1;;3091:29:46;3076:45;;;;3123:2;3072:54;;2749:383;-1:-1:-1;;2749:383:46:o;:::-;434:177:34;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_3503": {
                  "entryPoint": null,
                  "id": 3503,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_3511": {
                  "entryPoint": null,
                  "id": 3511,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_beforeFallback_3516": {
                  "entryPoint": null,
                  "id": 3516,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_delegate_3476": {
                  "entryPoint": 159,
                  "id": 3476,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_fallback_3495": {
                  "entryPoint": 23,
                  "id": 3495,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getImplementation_3179": {
                  "entryPoint": null,
                  "id": 3179,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_implementation_3146": {
                  "entryPoint": 103,
                  "id": 3146,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3896": {
                  "entryPoint": 41,
                  "id": 3896,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3931": {
                  "entryPoint": 195,
                  "id": 3931,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_4011": {
                  "entryPoint": 100,
                  "id": 4011,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3686": {
                  "entryPoint": 85,
                  "id": 3686,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3962": {
                  "entryPoint": 421,
                  "id": 3962,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 526,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 554,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 478,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1348:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "188:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "216:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "198:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "198:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "198:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "239:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "250:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "235:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "235:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "255:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "228:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "228:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "228:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "278:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "289:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "274:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "274:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "294:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "267:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "267:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "267:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "349:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "360:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "345:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "345:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "365:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "338:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "338:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "338:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "383:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "395:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "406:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "391:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "391:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "383:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "165:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "179:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "474:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "484:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "493:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "488:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "553:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "578:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "583:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "574:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "574:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "597:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "602:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "593:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "593:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "587:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "587:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "567:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "567:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "567:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "514:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "511:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "511:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "525:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "527:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "536:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "539:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "532:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "532:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "527:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "507:3:46",
                                "statements": []
                              },
                              "src": "503:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "642:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "655:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "660:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "651:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "651:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "669:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "644:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "644:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "628:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "628:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "625:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "452:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "457:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "462:6:46",
                            "type": ""
                          }
                        ],
                        "src": "421:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "821:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "831:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "851:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "845:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "845:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "835:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "893:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "901:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "889:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "908:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "913:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "867:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "867:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "867:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "929:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "940:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "945:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "936:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "936:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "797:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "802:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "813:3:46",
                            "type": ""
                          }
                        ],
                        "src": "684:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1084:262:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1101:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1112:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1094:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1094:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1094:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1124:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1144:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1138:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1138:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1128:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1171:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1182:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1167:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1167:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1187:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1160:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1160:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1160:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1229:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1225:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1225:15:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1246:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1257:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1242:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1242:18:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1262:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1203:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1203:66:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1203:66:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1278:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1294:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1313:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1321:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1309:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1309:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1330:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1326:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1326:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1305:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1305:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1290:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1290:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1337:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1286:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1286:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1278:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1053:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1064:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1075:4:46",
                            "type": ""
                          }
                        ],
                        "src": "963:383:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204d4446e8bf8e4fdc408a2ce563ade263daa446b1ddaeb7099c7710de6e17838864736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x130 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x14B SWAP2 SWAP1 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x19B DUP3 DUP3 DUP7 PUSH2 0x1A5 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1B4 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1C4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x22A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E1 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x220 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x249 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212204D4446 0xE8 0xBF DUP15 0x4F 0xDC BLOCKHASH DUP11 0x2C 0xE5 PUSH4 0xADE263DA LOG4 CHAINID 0xB1 0xDD 0xAE 0xB7 MULMOD SWAP13 PUSH24 0x10DE6E17838864736F6C634300080E003300000000000000 ",
              "sourceMap": "434:177:34:-:0;;;;;;2898:11:23;:9;:11::i;:::-;434:177:34;;2675:11:23;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:27:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:27:o;1175:320::-;-1:-1:-1;;;;;1465:19:27;;:23;;;1175:320::o;1614:190:29:-;1784:4;1614:190::o;1148:140:21:-;1215:12;1246:35;1030:66:22;1380:54;-1:-1:-1;;;;;1380:54:22;;1301:140;1246:35:21;1239:42;;1148:140;:::o;948:895:23:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:27;7095:12;-1:-1:-1;;;;;1465:19:27;;;7119:69;;;;-1:-1:-1;;;7119:69:27;;216:2:46;7119:69:27;;;198:21:46;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:46;;;338:36;391:19;;7119:69:27;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:27;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:27:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:27;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:27;;;;;;;;:::i;421:258:46:-;493:1;503:113;517:6;514:1;511:13;503:113;;;593:11;;;587:18;574:11;;;567:39;539:2;532:10;503:113;;;634:6;631:1;628:13;625:48;;;669:1;660:6;655:3;651:16;644:27;625:48;;421:258;;;:::o;684:274::-;813:3;851:6;845:13;867:53;913:6;908:3;901:4;893:6;889:17;867:53;:::i;:::-;936:16;;;;;684:274;-1:-1:-1;;684:274:46:o;963:383::-;1112:2;1101:9;1094:21;1075:4;1144:6;1138:13;1187:6;1182:2;1171:9;1167:18;1160:34;1203:66;1262:6;1257:2;1246:9;1242:18;1237:2;1229:6;1225:15;1203:66;:::i;:::-;1330:2;1309:15;-1:-1:-1;;1305:29:46;1290:45;;;;1337:2;1286:54;;963:383;-1:-1:-1;;963:383:46:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "139600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistCreatorProxy.sol\":\"ArtistCreatorProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n     * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n     */\\n    constructor(address _logic, bytes memory _data) payable {\\n        _upgradeToAndCall(_logic, _data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _implementation() internal view virtual override returns (address impl) {\\n        return ERC1967Upgrade._getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"},\"contracts/ArtistCreatorProxy.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\nimport '@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol';\\n\\n// This contract doesn't change the bytecode of ERC1967Proxy. It exists solely to make it compatible with hardhat-deploy plugin.\\n// https://github.com/wighawag/hardhat-deploy/issues/146#issuecomment-907755963\\n\\n// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins.\\ncontract ArtistCreatorProxy is ERC1967Proxy {\\n    constructor(\\n        address _logic,\\n        address,\\n        bytes memory _data\\n    ) payable ERC1967Proxy(_logic, _data) {}\\n}\\n\",\"keccak256\":\"0x5e48e4fa0f5ab487344f39abfd191a231941c06c2a53c045535ea96908e7e538\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/ArtistCreatorV2.sol": {
        "ArtistCreatorV2": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "artistId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "artistAddress",
                  "type": "address"
                }
              ],
              "name": "CreatedArtist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MINTER_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "artistContracts",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "beaconAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "createArtist",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "getSigner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Sound.xyz - @gigamesh & @vigneshka",
            "kind": "dev",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "params": {
                  "_name": "Name of the artist"
                }
              },
              "getSigner(bytes)": {
                "params": {
                  "signature": "Signature of the message"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "proxiableUUID()": {
                "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "setAdmin(address)": {
                "params": {
                  "_newAdmin": "address of new admin"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "upgradeTo(address)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              },
              "upgradeToAndCall(address,bytes)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              }
            },
            "title": "The Artist Creator factory contract",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60a06040523060805234801561001457600080fd5b5060805161201861004c6000396000818161046b015281816104ae0152818161055601528181610599015261063501526120186000f3fe608060405260043610620000ef5760003560e01c80637e2ec6d01162000089578063e6adabfd1162000060578063e6adabfd1462000257578063f2fde38b146200027c578063f851a44014620002a1578063fa4d280c14620002c357600080fd5b80637e2ec6d014620001f05780638da5cb5b1462000212578063b16a43f0146200023257600080fd5b80634f1ef28611620000ca5780634f1ef286146200018457806352d1902d146200019b578063704b6c0214620001b3578063715018a614620001d857600080fd5b8063233654eb14620000f45780633644e51514620001365780633659cfe6146200015d575b600080fd5b3480156200010157600080fd5b5062000119620001133660046200129c565b620002f9565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014357600080fd5b506200014e60cb5481565b6040519081526020016200012d565b3480156200016a57600080fd5b50620001826200017c36600462001379565b62000461565b005b620001826200019536600462001397565b6200054c565b348015620001a857600080fd5b506200014e62000628565b348015620001c057600080fd5b5062000182620001d236600462001379565b620006de565b348015620001e557600080fd5b50620001826200076a565b348015620001fd57600080fd5b5060cc5462000119906001600160a01b031681565b3480156200021f57600080fd5b506097546001600160a01b031662000119565b3480156200023f57600080fd5b50620001196200025136600462001400565b62000782565b3480156200026457600080fd5b5062000119620002763660046200141a565b620007ad565b3480156200028957600080fd5b50620001826200029b36600462001379565b620008f9565b348015620002ae57600080fd5b5060ca5462000119906001600160a01b031681565b348015620002d057600080fd5b506200014e7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b0316620003148787620007ad565b6001600160a01b031614620003705760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc54604051339160009183916001600160a01b031690635f1e6f6d90620003a39084908b908b908b90602401620014bd565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051620003dd9062001193565b620003ea92919062001518565b8190604051809103906000f59050801580156200040b573d6000803e3d6000fd5b509050806001600160a01b03167f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0600088886040516200044e9392919062001546565b60405180910390a2979650505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620004ac5760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620004f760008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b031614620005205760405162461bcd60e51b81526004016200036790620015cb565b6200052b8162000975565b6040805160008082526020820190925262000549918391906200097f565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005975760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620005e260008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b0316146200060b5760405162461bcd60e51b81526004016200036790620015cb565b620006168262000975565b62000624828260016200097f565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620006ca5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840162000367565b5060008051602062001f9c83398151915290565b6097546001600160a01b031633148062000702575060ca546001600160a01b031633145b620007485760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b604482015260640162000367565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6200077462000afc565b62000780600062000b58565b565b60cd81815481106200079357600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b0316620008025760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b604482015260640162000367565b600060cb547f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2620008303390565b604051602001620008549291909182526001600160a01b0316602082015260400190565b604051602081830303815290604052805190602001206040516020016200089292919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090506000620008f085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000baa9050565b95945050505050565b6200090362000afc565b6001600160a01b0381166200096a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000367565b620005498162000b58565b6200054962000afc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620009ba57620009b58362000bd2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000a17575060408051601f3d908101601f1916820190925262000a149181019062001617565b60015b62000a7c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000367565b60008051602062001f9c833981519152811462000aee5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000367565b50620009b583838362000c71565b6097546001600160a01b03163314620007805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000367565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080600062000bbb858562000ca2565b9150915062000bca8162000d18565b509392505050565b6001600160a01b0381163b62000c415760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000367565b60008051602062001f9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000c7c8362000ee6565b60008251118062000c8a5750805b15620009b55762000c9c838362000f28565b50505050565b600080825160410362000cdc5760208301516040840151606085015160001a62000ccf878285856200101c565b9450945050505062000d11565b825160400362000d09576020830151604084015162000cfd86838362001111565b93509350505062000d11565b506000905060025b9250929050565b600081600481111562000d2f5762000d2f62001631565b0362000d385750565b600181600481111562000d4f5762000d4f62001631565b0362000d9e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640162000367565b600281600481111562000db55762000db562001631565b0362000e045760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640162000367565b600381600481111562000e1b5762000e1b62001631565b0362000e755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840162000367565b600481600481111562000e8c5762000e8c62001631565b03620005495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840162000367565b62000ef18162000bd2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b62000f925760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000367565b600080846001600160a01b03168460405162000faf919062001647565b600060405180830381855af49150503d806000811462000fec576040519150601f19603f3d011682016040523d82523d6000602084013e62000ff1565b606091505b5091509150620008f0828260405180606001604052806027815260200162001fbc602791396200114e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111562001055575060009050600362001108565b8460ff16601b141580156200106e57508460ff16601c14155b1562001081575060009050600462001108565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015620010d6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620011015760006001925092505062001108565b9150600090505b94509492505050565b6000806001600160ff1b038316816200113060ff86901c601b62001665565b905062001140878288856200101c565b935093505050935093915050565b606083156200115f5750816200118c565b825115620011705782518084602001fd5b8160405162461bcd60e51b81526004016200036791906200168c565b9392505050565b6108fa80620016a283390190565b60008083601f840112620011b457600080fd5b50813567ffffffffffffffff811115620011cd57600080fd5b60208301915083602082850101111562000d1157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200121a576200121a620011e6565b604051601f8501601f19908116603f01168101908282118183101715620012455762001245620011e6565b816040528093508581528686860111156200125f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200128b57600080fd5b6200118c83833560208501620011fc565b600080600080600060808688031215620012b557600080fd5b853567ffffffffffffffff80821115620012ce57600080fd5b620012dc89838a01620011a1565b90975095506020880135915080821115620012f657600080fd5b6200130489838a0162001279565b945060408801359150808211156200131b57600080fd5b6200132989838a0162001279565b935060608801359150808211156200134057600080fd5b506200134f8882890162001279565b9150509295509295909350565b80356001600160a01b03811681146200137457600080fd5b919050565b6000602082840312156200138c57600080fd5b6200118c826200135c565b60008060408385031215620013ab57600080fd5b620013b6836200135c565b9150602083013567ffffffffffffffff811115620013d357600080fd5b8301601f81018513620013e557600080fd5b620013f685823560208401620011fc565b9150509250929050565b6000602082840312156200141357600080fd5b5035919050565b600080602083850312156200142e57600080fd5b823567ffffffffffffffff8111156200144657600080fd5b6200145485828601620011a1565b90969095509350505050565b60005b838110156200147d57818101518382015260200162001463565b8381111562000c9c5750506000910152565b60008151808452620014a981602086016020860162001460565b601f01601f19169290920160200192915050565b6001600160a01b0385168152608060208201819052600090620014e3908301866200148f565b8281036040840152620014f781866200148f565b905082810360608401526200150d81856200148f565b979650505050505050565b6001600160a01b03831681526040602082018190526000906200153e908301846200148f565b949350505050565b8381526060602082015260006200156160608301856200148f565b82810360408401526200157581856200148f565b9695505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200162a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600082516200165b81846020870162001460565b9190910192915050565b600082198211156200168757634e487b7160e01b600052601160045260246000fd5b500190565b6020815260006200118c60208301846200148f56fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204bef241dc17cc230667cfbb2e0cecfac72e0dfd528208b58dc9a3da443aedc6e64736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x2018 PUSH2 0x4C PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x46B ADD MSTORE DUP2 DUP2 PUSH2 0x4AE ADD MSTORE DUP2 DUP2 PUSH2 0x556 ADD MSTORE DUP2 DUP2 PUSH2 0x599 ADD MSTORE PUSH2 0x635 ADD MSTORE PUSH2 0x2018 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0xEF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E2EC6D0 GT PUSH3 0x89 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x257 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x27C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2A1 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x1F0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x212 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH3 0xCA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x184 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x19B JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1B3 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0xF4 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x136 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x15D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x113 CALLDATASIZE PUSH1 0x4 PUSH3 0x129C JUMP JUMPDEST PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x12D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x17C CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x461 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x182 PUSH3 0x195 CALLDATASIZE PUSH1 0x4 PUSH3 0x1397 JUMP JUMPDEST PUSH3 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH3 0x628 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x1D2 CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x6DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x76A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x251 CALLDATASIZE PUSH1 0x4 PUSH3 0x1400 JUMP JUMPDEST PUSH3 0x782 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x276 CALLDATASIZE PUSH1 0x4 PUSH3 0x141A JUMP JUMPDEST PUSH3 0x7AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x29B CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x8F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x314 DUP8 DUP8 PUSH3 0x7AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x40 MLOAD CALLER SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x5F1E6F6D SWAP1 PUSH3 0x3A3 SWAP1 DUP5 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x24 ADD PUSH3 0x14BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x3DD SWAP1 PUSH3 0x1193 JUMP JUMPDEST PUSH3 0x3EA SWAP3 SWAP2 SWAP1 PUSH3 0x1518 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH1 0x0 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH3 0x44E SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x4AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x4F7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x520 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x52B DUP2 PUSH3 0x975 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x549 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0x97F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x597 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x5E2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x60B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x616 DUP3 PUSH3 0x975 JUMP JUMPDEST PUSH3 0x624 DUP3 DUP3 PUSH1 0x1 PUSH3 0x97F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x702 JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x748 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x774 PUSH3 0xAFC JUMP JUMPDEST PUSH3 0x780 PUSH1 0x0 PUSH3 0xB58 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x802 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xCB SLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH3 0x830 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x854 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x892 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x8F0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xBAA SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x903 PUSH3 0xAFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x96A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0x549 DUP2 PUSH3 0xB58 JUMP JUMPDEST PUSH3 0x549 PUSH3 0xAFC JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0x9BA JUMPI PUSH3 0x9B5 DUP4 PUSH3 0xBD2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xA17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xA14 SWAP2 DUP2 ADD SWAP1 PUSH3 0x1617 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xA7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH3 0x9B5 DUP4 DUP4 DUP4 PUSH3 0xC71 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xBBB DUP6 DUP6 PUSH3 0xCA2 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xBCA DUP2 PUSH3 0xD18 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xC41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xC7C DUP4 PUSH3 0xEE6 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0xC8A JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0x9B5 JUMPI PUSH3 0xC9C DUP4 DUP4 PUSH3 0xF28 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0xCDC JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0xCCF DUP8 DUP3 DUP6 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0xD11 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0xD09 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0xCFD DUP7 DUP4 DUP4 PUSH3 0x1111 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0xD11 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD2F JUMPI PUSH3 0xD2F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD38 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD4F JUMPI PUSH3 0xD4F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD9E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xDB5 JUMPI PUSH3 0xDB5 PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE1B JUMPI PUSH3 0xE1B PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE75 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE8C JUMPI PUSH3 0xE8C PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0xEF1 DUP2 PUSH3 0xBD2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0xF92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xFAF SWAP2 SWAP1 PUSH3 0x1647 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0xFEC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xFF1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x8F0 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1FBC PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x114E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x1055 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1108 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x106E JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x1081 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1108 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x1101 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1108 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x1130 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x1665 JUMP JUMPDEST SWAP1 POP PUSH3 0x1140 DUP8 DUP3 DUP9 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x115F JUMPI POP DUP2 PUSH3 0x118C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x1170 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP2 SWAP1 PUSH3 0x168C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x16A2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x11B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x11CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x121A JUMPI PUSH3 0x121A PUSH3 0x11E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x1245 JUMPI PUSH3 0x1245 PUSH3 0x11E6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x11FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x12B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x12CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12DC DUP10 DUP4 DUP11 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x12F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1304 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x131B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1329 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x1340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x134F DUP9 DUP3 DUP10 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP3 PUSH3 0x135C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x13AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13B6 DUP4 PUSH3 0x135C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x13D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13F6 DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x11FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1454 DUP6 DUP3 DUP7 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x147D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x1463 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xC9C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x14A9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x1460 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x14E3 SWAP1 DUP4 ADD DUP7 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x14F7 DUP2 DUP7 PUSH3 0x148F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x150D DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x153E SWAP1 DUP4 ADD DUP5 PUSH3 0x148F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x1561 PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x1575 DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x162A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x165B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x1460 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x1687 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x118C PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x148F JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65643608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A26469706673582212204B 0xEF 0x24 SAR 0xC1 PUSH29 0xC230667CFBB2E0CECFAC72E0DFD528208B58DC9A3DA443AEDC6E64736F PUSH13 0x634300080E0033000000000000 ",
              "sourceMap": "2089:3575:35:-:0;;;1332:4:6;1289:48;;2089:3575:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_5675": {
                  "entryPoint": null,
                  "id": 5675,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@MINTER_TYPEHASH_5668": {
                  "entryPoint": null,
                  "id": 5668,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_authorizeUpgrade_5846": {
                  "entryPoint": 2421,
                  "id": 5846,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_checkOwner_68": {
                  "entryPoint": 2812,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_functionDelegateCall_523": {
                  "entryPoint": 3880,
                  "id": 523,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getImplementation_207": {
                  "entryPoint": null,
                  "id": 207,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_231": {
                  "entryPoint": 3026,
                  "id": 231,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_throwError_2588": {
                  "entryPoint": 3352,
                  "id": 2588,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 2904,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeToAndCallUUPS_327": {
                  "entryPoint": 2431,
                  "id": 327,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeToAndCall_274": {
                  "entryPoint": 3185,
                  "id": 274,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeTo_246": {
                  "entryPoint": 3814,
                  "id": 246,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@admin_5673": {
                  "entryPoint": null,
                  "id": 5673,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@artistContracts_5680": {
                  "entryPoint": 1922,
                  "id": 5680,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@beaconAddress_5677": {
                  "entryPoint": null,
                  "id": 5677,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@createArtist_5765": {
                  "entryPoint": 761,
                  "id": 5765,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@getAddressSlot_2264": {
                  "entryPoint": null,
                  "id": 2264,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getBooleanSlot_2275": {
                  "entryPoint": null,
                  "id": 2275,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_5811": {
                  "entryPoint": 1965,
                  "id": 5811,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@proxiableUUID_771": {
                  "entryPoint": 1576,
                  "id": 771,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@recover_2680": {
                  "entryPoint": 2986,
                  "id": 2680,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 1898,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setAdmin_5836": {
                  "entryPoint": 1758,
                  "id": 5836,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 2297,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_2653": {
                  "entryPoint": 3234,
                  "id": 2653,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_2727": {
                  "entryPoint": 4369,
                  "id": 2727,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_2838": {
                  "entryPoint": 4124,
                  "id": 2838,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@upgradeToAndCall_814": {
                  "entryPoint": 1356,
                  "id": 814,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@upgradeTo_793": {
                  "entryPoint": 1121,
                  "id": 793,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@verifyCallResult_2121": {
                  "entryPoint": 4430,
                  "id": 2121,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 4956,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 4604,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 4513,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_string": {
                  "entryPoint": 4729,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 4985,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr": {
                  "entryPoint": 5015,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 5655,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 5146,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 4764,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 5120,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 5263,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 5703,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5400,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5309,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_0_by_1_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5446,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5772,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5503,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5579,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 5733,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 5216,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 5681,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 4582,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:14623:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:46"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:46"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14:347:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "398:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "415:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "422:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "427:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "418:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "418:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "408:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "455:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "458:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "448:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "448:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "448:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "482:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "472:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "472:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "472:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "366:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "573:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "583:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "593:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "587:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "638:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "640:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "640:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "640:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "626:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "623:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "623:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "620:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "669:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "683:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "679:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "673:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "695:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "715:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "709:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "709:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "699:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "727:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "749:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "773:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "781:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "769:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "769:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "786:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "765:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "765:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "791:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "761:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "761:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "757:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "757:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "745:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "745:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "731:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "859:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "861:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "861:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "861:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "818:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "830:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "815:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "815:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "838:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "850:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "812:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "812:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "809:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "897:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "901:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "890:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "890:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "921:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "930:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "952:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "960:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "945:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "945:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "945:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1005:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1014:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1017:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1007:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1007:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1007:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "986:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "991:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "982:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "982:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1000:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "979:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "979:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "976:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1047:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1055:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1043:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1043:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1062:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1067:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1030:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1030:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1030:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1098:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1106:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1094:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1094:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1115:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1090:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1090:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1122:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1083:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1083:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1083:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "542:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "547:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "555:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "563:5:46",
                            "type": ""
                          }
                        ],
                        "src": "498:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1188:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1237:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1246:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1249:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1239:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1239:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1239:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1216:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1224:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1212:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1212:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1208:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1208:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1198:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1262:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1310:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1318:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1306:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1306:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1338:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1325:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1325:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1347:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1271:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1271:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1262:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1162:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1170:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1178:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1135:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1532:861:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1579:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1588:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1591:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1581:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1581:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1581:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1553:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1562:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1549:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1549:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1574:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1545:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1545:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1542:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1604:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1631:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1618:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1618:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1608:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1660:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1705:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1714:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1717:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1707:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1707:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1693:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1701:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1690:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1690:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1687:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1730:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1786:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1797:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1782:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1782:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1806:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1756:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1756:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1734:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1744:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1823:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "1833:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1850:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1860:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1850:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1877:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1910:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1921:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1906:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1906:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1893:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1893:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1881:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1940:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1950:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1937:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1937:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1934:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2011:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2022:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2007:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2033:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1989:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1989:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2050:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2083:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2094:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2079:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2079:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2066:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2066:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2054:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2127:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2136:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2139:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2129:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2129:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2129:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2113:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2123:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2110:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2107:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2152:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2184:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2195:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2180:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2180:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2206:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2162:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2162:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2223:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2267:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2252:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2239:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2239:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2227:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2300:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2309:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2312:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2302:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2302:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2302:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2286:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2296:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2283:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2283:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2280:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2325:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2357:9:46"
                                      },
                                      {
                                        "name": "offset_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2368:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2353:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2353:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2379:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2335:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2335:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2325:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1466:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1477:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1489:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1497:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1505:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1513:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1521:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1362:1031:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2499:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2521:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2532:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2517:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2517:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2551:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2566:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2582:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2587:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2578:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2578:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2591:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2574:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2574:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2562:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2562:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2544:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2544:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2468:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2479:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2490:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2398:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2707:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2717:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2740:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2725:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2717:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2759:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2770:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2752:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2752:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2752:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2676:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2687:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2698:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2606:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2837:124:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2847:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2869:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2856:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2856:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "2847:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2939:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2948:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2951:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2941:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2941:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2941:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2898:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2909:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2924:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2929:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2920:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2920:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2933:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "2916:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2916:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2905:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2905:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2895:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2895:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2888:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2888:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2885:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2816:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2827:5:46",
                            "type": ""
                          }
                        ],
                        "src": "2788:173:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3036:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3082:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3091:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3094:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3084:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3084:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3084:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3057:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3066:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3053:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3078:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3049:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3049:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3046:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3107:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3136:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3117:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3117:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3107:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3002:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3013:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3025:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2966:186:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3253:428:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3299:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3308:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3311:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3301:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3301:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3301:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3274:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3283:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3270:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3270:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3295:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3266:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3266:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3263:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3324:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3353:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3334:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3334:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3324:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3372:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3403:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3414:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3399:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3399:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3386:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3386:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3376:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3461:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3470:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3473:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3463:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3463:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3463:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3433:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3441:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3430:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3430:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3427:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3486:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3500:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3511:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3496:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3496:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3490:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3566:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3575:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3578:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3568:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3568:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3568:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3545:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3549:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3541:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3541:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3556:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3537:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3530:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3530:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3527:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3591:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3640:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3644:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3636:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3636:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3662:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3649:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3649:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3667:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3601:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3591:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3211:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3222:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3234:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3242:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3157:524:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3756:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3802:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3811:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3814:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3804:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3804:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3804:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3777:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3786:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3773:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3773:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3798:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3769:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3769:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3766:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3827:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3850:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3837:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3837:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3827:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3722:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3733:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3745:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3686:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3960:320:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4006:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4015:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4018:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4008:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4008:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4008:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3981:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3990:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3977:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3977:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4002:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3973:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3973:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3970:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4031:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4058:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4045:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4045:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4035:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4111:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4120:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4123:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4113:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4113:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4113:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4083:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4091:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4080:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4080:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4077:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4136:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4192:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4203:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4188:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4162:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4162:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4140:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4150:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4229:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "4239:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4256:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "4266:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4256:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3918:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3929:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3941:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3949:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3871:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4459:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4476:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4487:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4469:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4469:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4469:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4521:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4506:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4526:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4499:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4499:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4549:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4560:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4545:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4545:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4565:33:46",
                                    "type": "",
                                    "value": "invalid authorization signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4538:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4538:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4538:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4608:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4620:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4631:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4616:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4616:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4608:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4436:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4450:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4285:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4698:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4708:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4717:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4712:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4777:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4802:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4807:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4798:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4798:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4821:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4826:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4817:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4817:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4811:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4811:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4791:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4791:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4791:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4738:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4741:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4735:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4735:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4749:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4751:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4760:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4763:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4756:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4756:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4751:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4731:3:46",
                                "statements": []
                              },
                              "src": "4727:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4866:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4879:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "4884:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4875:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4875:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4893:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4868:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4868:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4868:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4855:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4858:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4852:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4852:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4849:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "4676:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "4681:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4686:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4645:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4958:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4968:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4988:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4982:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4982:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4972:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5010:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5015:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5003:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5003:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5003:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5057:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5064:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5053:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5075:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5080:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5071:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5071:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5087:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5031:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5031:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5031:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5103:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5118:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5131:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5139:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5127:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5127:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5148:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "5144:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5144:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5123:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5123:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5114:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5114:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5155:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5110:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5110:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5103:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4935:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4942:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4950:3:46",
                            "type": ""
                          }
                        ],
                        "src": "4908:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5416:400:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5433:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5448:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5464:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5469:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5460:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5460:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5473:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5456:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5456:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5444:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5444:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5426:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5426:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5426:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5497:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5508:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5493:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5493:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5513:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5486:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5486:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5486:31:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5526:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5558:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5570:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5581:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5566:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5566:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5540:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5540:46:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5530:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5606:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5617:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5602:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5602:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5626:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5634:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5622:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5622:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5595:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5595:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5595:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5654:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5686:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5694:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5668:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5668:33:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5658:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5721:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5732:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5717:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5717:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5741:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5749:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5737:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5710:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5710:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5710:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5769:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5795:6:46"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5803:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5777:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5777:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5769:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5361:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5372:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5380:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5388:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5396:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5407:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5171:645:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5968:168:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5985:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6000:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6016:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6021:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6012:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6012:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6025:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6008:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6008:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5996:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5996:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5978:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5978:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5978:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6049:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6060:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6045:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6045:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6065:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6038:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6038:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6038:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6077:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6103:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6115:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6126:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6111:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6111:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6085:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6085:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6077:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5929:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5940:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5948:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5959:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5821:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6346:257:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6363:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6374:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6356:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6356:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6356:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6401:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6412:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6397:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6397:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6417:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6390:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6390:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6390:30:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6429:59:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6461:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6484:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6469:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6443:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6443:45:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6433:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6508:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6519:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6504:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6504:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6528:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6536:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6524:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6524:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6497:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6497:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6497:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6556:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6582:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6590:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6564:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6564:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6556:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_0_by_1_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6299:9:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6310:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6318:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6326:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6337:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6141:462:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6782:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6799:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6810:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6792:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6792:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6792:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6833:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6844:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6829:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6849:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6822:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6822:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6822:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6872:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6883:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6868:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6868:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6888:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6861:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6861:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6861:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6943:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6954:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6939:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6939:18:46"
                                  },
                                  {
                                    "hexValue": "64656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6959:14:46",
                                    "type": "",
                                    "value": "delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6932:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6932:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6932:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6983:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6995:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7006:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6991:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6991:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6983:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6759:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6773:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6608:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7195:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7212:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7223:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7205:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7205:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7205:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7246:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7257:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7242:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7242:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7262:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7235:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7235:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7235:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7285:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7296:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7281:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7281:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7301:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7274:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7274:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7274:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7356:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7367:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7352:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7352:18:46"
                                  },
                                  {
                                    "hexValue": "6163746976652070726f7879",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7372:14:46",
                                    "type": "",
                                    "value": "active proxy"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7345:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7345:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7345:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7396:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7408:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7419:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7404:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7404:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7396:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7172:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7186:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7021:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7608:246:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7625:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7636:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7618:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7618:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7618:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7659:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7670:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7655:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7655:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7675:2:46",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7648:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7648:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7648:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7698:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7709:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7694:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7694:18:46"
                                  },
                                  {
                                    "hexValue": "555550535570677261646561626c653a206d757374206e6f742062652063616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7714:34:46",
                                    "type": "",
                                    "value": "UUPSUpgradeable: must not be cal"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7687:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7687:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7687:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7769:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7780:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7765:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7765:18:46"
                                  },
                                  {
                                    "hexValue": "6c6564207468726f7567682064656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7785:26:46",
                                    "type": "",
                                    "value": "led through delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7758:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7758:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7758:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7821:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7833:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7844:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7829:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7829:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7821:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7585:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7599:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7434:420:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8033:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8050:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8061:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8043:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8043:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8043:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8084:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8095:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8080:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8080:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8100:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8073:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8073:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8073:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8123:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8134:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8119:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8119:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8139:23:46",
                                    "type": "",
                                    "value": "invalid authorization"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8112:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8112:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8112:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8172:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8184:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8195:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8180:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8180:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8172:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8010:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8024:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7859:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8383:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8400:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8411:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8393:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8393:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8434:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8445:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8430:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8430:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8450:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8423:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8423:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8423:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8484:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8469:18:46"
                                  },
                                  {
                                    "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8489:23:46",
                                    "type": "",
                                    "value": "whitelist not enabled"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8462:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8462:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8462:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8522:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8534:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8545:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8530:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8530:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8522:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8360:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8374:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8209:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8688:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8698:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8710:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8721:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8706:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8706:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8698:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8740:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8751:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8733:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8733:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8733:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8778:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8789:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8774:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8774:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8798:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8814:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8819:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "8810:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8810:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8823:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "8806:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8806:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8794:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8794:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8767:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8767:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8767:60:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8649:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8660:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8668:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8679:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8559:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9086:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9103:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9112:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9117:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "9108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9108:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9096:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9096:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9096:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9143:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9148:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9139:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9139:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9152:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9132:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9132:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9132:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9179:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9184:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9175:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9175:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9189:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9168:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9168:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9168:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9205:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9216:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9221:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9212:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9212:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "9205:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "9054:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9059:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9067:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9078:3:46",
                            "type": ""
                          }
                        ],
                        "src": "8838:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9409:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9426:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9437:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9419:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9419:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9460:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9471:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9456:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9456:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9476:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9449:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9449:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9449:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9499:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9510:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9495:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9495:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9515:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9488:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9488:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9488:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9570:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9581:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9566:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9566:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9586:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9559:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9559:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9559:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9604:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9616:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9627:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9612:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9612:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9604:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9386:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9400:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9235:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9723:103:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9769:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9778:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9781:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9771:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9771:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9771:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9744:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9753:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9740:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9740:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9765:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9736:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9736:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9733:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9794:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9810:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9804:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9804:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9794:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9689:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9700:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9712:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9642:184:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10005:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10022:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10033:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10015:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10015:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10056:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10067:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10052:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10052:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10072:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10045:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10045:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10045:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10095:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10106:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10091:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10091:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a206e657720696d706c656d656e74617469",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10111:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: new implementati"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10084:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10084:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10084:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10166:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10177:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10162:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10162:18:46"
                                  },
                                  {
                                    "hexValue": "6f6e206973206e6f742055555053",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10182:16:46",
                                    "type": "",
                                    "value": "on is not UUPS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10155:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10155:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10155:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10208:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10220:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10231:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10216:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10216:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10208:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9982:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9996:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9831:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10420:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10437:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10448:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10430:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10430:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10430:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10471:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10482:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10467:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10467:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10487:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10460:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10460:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10460:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10521:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10506:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f78",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10526:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: unsupported prox"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10499:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10499:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10581:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10592:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10577:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10577:18:46"
                                  },
                                  {
                                    "hexValue": "6961626c6555554944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10597:11:46",
                                    "type": "",
                                    "value": "iableUUID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10570:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10570:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10570:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10618:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10630:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10641:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10626:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10626:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10618:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10397:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10411:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10246:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10830:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10847:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10858:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10840:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10840:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10840:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10881:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10892:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10877:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10877:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10897:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10870:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10870:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10870:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10920:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10931:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10916:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10916:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10936:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10909:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10909:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10909:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10980:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10992:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11003:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10988:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10988:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10980:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10807:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10821:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10656:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11191:235:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11208:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11219:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11201:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11201:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11242:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11253:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11238:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11238:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11258:2:46",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11231:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11231:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11231:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11281:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11292:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11277:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11277:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11297:34:46",
                                    "type": "",
                                    "value": "ERC1967: new implementation is n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11270:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11270:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11270:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11352:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11363:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11348:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11348:18:46"
                                  },
                                  {
                                    "hexValue": "6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11368:15:46",
                                    "type": "",
                                    "value": "ot a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11341:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11341:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11341:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11393:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11405:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11416:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11401:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11401:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11393:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11168:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11182:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11017:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11463:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11480:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11487:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11492:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "11483:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11483:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11473:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11473:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11473:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11520:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11523:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11513:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11513:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11513:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11544:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11547:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11537:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11537:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11537:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11431:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11737:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11754:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11765:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11747:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11747:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11788:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11799:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11784:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11784:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11804:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11777:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11777:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11777:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11827:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11838:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11823:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11823:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11843:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11816:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11816:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11816:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11879:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11891:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11902:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11887:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11887:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11879:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11714:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11728:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11563:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12090:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12107:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12118:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12100:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12100:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12100:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12141:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12152:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12137:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12137:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12157:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12130:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12130:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12130:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12180:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12191:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12176:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12176:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12196:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12169:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12169:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12169:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12239:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12251:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12262:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12247:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12247:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12239:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12067:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12081:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11916:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12450:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12467:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12478:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12460:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12460:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12460:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12501:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12512:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12497:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12497:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12517:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12490:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12490:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12490:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12540:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12551:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12536:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12536:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12556:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12529:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12529:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12529:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12611:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12622:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12607:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12607:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12627:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12600:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12600:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12600:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12641:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12653:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12664:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12649:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12649:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12641:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12427:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12441:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12276:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12853:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12870:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12881:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12863:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12863:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12863:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12904:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12915:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12900:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12900:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12920:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12893:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12893:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12893:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12943:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12954:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12939:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12939:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12959:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12932:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12932:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12932:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13014:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13025:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13010:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13010:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13030:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13003:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13003:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13003:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13044:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13056:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13067:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13052:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13052:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13044:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12830:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12844:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12679:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13256:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13273:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13284:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13266:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13266:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13266:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13307:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13318:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13303:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13303:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13323:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13296:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13296:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13296:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13346:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13357:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13342:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13342:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13362:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13335:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13335:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13335:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13417:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13428:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13413:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13413:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13433:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13406:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13406:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13406:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13451:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13463:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13474:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13459:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13459:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13451:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13233:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13247:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13082:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13626:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13636:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13656:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13650:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13650:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "13640:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13698:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13706:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13694:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13694:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13713:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13718:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13672:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13672:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13672:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13734:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13745:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13750:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13741:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13741:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13734:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "13602:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13607:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "13618:3:46",
                            "type": ""
                          }
                        ],
                        "src": "13489:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13949:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13959:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13971:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13982:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13967:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13967:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13959:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14002:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14013:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13995:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13995:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13995:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14040:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14051:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14036:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14036:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14060:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14068:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14056:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14056:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14029:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14029:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14029:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14094:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14105:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14090:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14090:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14110:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14083:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14083:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14083:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14137:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14148:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14133:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14133:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14153:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14126:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14126:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14126:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13894:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13905:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13913:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13921:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13929:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13940:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13768:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14219:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14254:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14275:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14282:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14287:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "14278:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14278:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14268:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14268:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14268:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14319:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14322:4:46",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14312:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14312:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14312:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14347:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14350:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14340:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14340:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14235:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "14242:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "14238:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14238:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14232:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14232:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14229:136:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14374:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14385:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14388:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14381:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14381:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "14374:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14202:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14205:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "14211:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14171:225:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14522:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14539:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14550:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14532:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14532:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14532:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14562:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14588:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14600:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14611:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14596:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14596:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "14570:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14570:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14562:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14491:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14502:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14513:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14401:220:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_3), dataEnd)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"invalid authorization signature\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 128)\n        let tail_1 := abi_encode_string(value1, add(headStart, 128))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string(value2, tail_1)\n        mstore(add(headStart, 96), sub(tail_2, headStart))\n        tail := abi_encode_string(value3, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_rational_0_by_1_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"active proxy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n        mstore(add(headStart, 96), \"led through delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"invalid authorization\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"whitelist not enabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n        mstore(add(headStart, 96), \"on is not UUPS\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n        mstore(add(headStart, 96), \"iableUUID\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n        mstore(add(headStart, 96), \"ot a contract\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "721": [
                  {
                    "length": 32,
                    "start": 1131
                  },
                  {
                    "length": 32,
                    "start": 1198
                  },
                  {
                    "length": 32,
                    "start": 1366
                  },
                  {
                    "length": 32,
                    "start": 1433
                  },
                  {
                    "length": 32,
                    "start": 1589
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405260043610620000ef5760003560e01c80637e2ec6d01162000089578063e6adabfd1162000060578063e6adabfd1462000257578063f2fde38b146200027c578063f851a44014620002a1578063fa4d280c14620002c357600080fd5b80637e2ec6d014620001f05780638da5cb5b1462000212578063b16a43f0146200023257600080fd5b80634f1ef28611620000ca5780634f1ef286146200018457806352d1902d146200019b578063704b6c0214620001b3578063715018a614620001d857600080fd5b8063233654eb14620000f45780633644e51514620001365780633659cfe6146200015d575b600080fd5b3480156200010157600080fd5b5062000119620001133660046200129c565b620002f9565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014357600080fd5b506200014e60cb5481565b6040519081526020016200012d565b3480156200016a57600080fd5b50620001826200017c36600462001379565b62000461565b005b620001826200019536600462001397565b6200054c565b348015620001a857600080fd5b506200014e62000628565b348015620001c057600080fd5b5062000182620001d236600462001379565b620006de565b348015620001e557600080fd5b50620001826200076a565b348015620001fd57600080fd5b5060cc5462000119906001600160a01b031681565b3480156200021f57600080fd5b506097546001600160a01b031662000119565b3480156200023f57600080fd5b50620001196200025136600462001400565b62000782565b3480156200026457600080fd5b5062000119620002763660046200141a565b620007ad565b3480156200028957600080fd5b50620001826200029b36600462001379565b620008f9565b348015620002ae57600080fd5b5060ca5462000119906001600160a01b031681565b348015620002d057600080fd5b506200014e7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b0316620003148787620007ad565b6001600160a01b031614620003705760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc54604051339160009183916001600160a01b031690635f1e6f6d90620003a39084908b908b908b90602401620014bd565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051620003dd9062001193565b620003ea92919062001518565b8190604051809103906000f59050801580156200040b573d6000803e3d6000fd5b509050806001600160a01b03167f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0600088886040516200044e9392919062001546565b60405180910390a2979650505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620004ac5760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620004f760008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b031614620005205760405162461bcd60e51b81526004016200036790620015cb565b6200052b8162000975565b6040805160008082526020820190925262000549918391906200097f565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005975760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620005e260008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b0316146200060b5760405162461bcd60e51b81526004016200036790620015cb565b620006168262000975565b62000624828260016200097f565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620006ca5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840162000367565b5060008051602062001f9c83398151915290565b6097546001600160a01b031633148062000702575060ca546001600160a01b031633145b620007485760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b604482015260640162000367565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6200077462000afc565b62000780600062000b58565b565b60cd81815481106200079357600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b0316620008025760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b604482015260640162000367565b600060cb547f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2620008303390565b604051602001620008549291909182526001600160a01b0316602082015260400190565b604051602081830303815290604052805190602001206040516020016200089292919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090506000620008f085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000baa9050565b95945050505050565b6200090362000afc565b6001600160a01b0381166200096a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000367565b620005498162000b58565b6200054962000afc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620009ba57620009b58362000bd2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000a17575060408051601f3d908101601f1916820190925262000a149181019062001617565b60015b62000a7c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000367565b60008051602062001f9c833981519152811462000aee5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000367565b50620009b583838362000c71565b6097546001600160a01b03163314620007805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000367565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080600062000bbb858562000ca2565b9150915062000bca8162000d18565b509392505050565b6001600160a01b0381163b62000c415760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000367565b60008051602062001f9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000c7c8362000ee6565b60008251118062000c8a5750805b15620009b55762000c9c838362000f28565b50505050565b600080825160410362000cdc5760208301516040840151606085015160001a62000ccf878285856200101c565b9450945050505062000d11565b825160400362000d09576020830151604084015162000cfd86838362001111565b93509350505062000d11565b506000905060025b9250929050565b600081600481111562000d2f5762000d2f62001631565b0362000d385750565b600181600481111562000d4f5762000d4f62001631565b0362000d9e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640162000367565b600281600481111562000db55762000db562001631565b0362000e045760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640162000367565b600381600481111562000e1b5762000e1b62001631565b0362000e755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840162000367565b600481600481111562000e8c5762000e8c62001631565b03620005495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840162000367565b62000ef18162000bd2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b62000f925760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000367565b600080846001600160a01b03168460405162000faf919062001647565b600060405180830381855af49150503d806000811462000fec576040519150601f19603f3d011682016040523d82523d6000602084013e62000ff1565b606091505b5091509150620008f0828260405180606001604052806027815260200162001fbc602791396200114e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111562001055575060009050600362001108565b8460ff16601b141580156200106e57508460ff16601c14155b1562001081575060009050600462001108565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015620010d6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620011015760006001925092505062001108565b9150600090505b94509492505050565b6000806001600160ff1b038316816200113060ff86901c601b62001665565b905062001140878288856200101c565b935093505050935093915050565b606083156200115f5750816200118c565b825115620011705782518084602001fd5b8160405162461bcd60e51b81526004016200036791906200168c565b9392505050565b6108fa80620016a283390190565b60008083601f840112620011b457600080fd5b50813567ffffffffffffffff811115620011cd57600080fd5b60208301915083602082850101111562000d1157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200121a576200121a620011e6565b604051601f8501601f19908116603f01168101908282118183101715620012455762001245620011e6565b816040528093508581528686860111156200125f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200128b57600080fd5b6200118c83833560208501620011fc565b600080600080600060808688031215620012b557600080fd5b853567ffffffffffffffff80821115620012ce57600080fd5b620012dc89838a01620011a1565b90975095506020880135915080821115620012f657600080fd5b6200130489838a0162001279565b945060408801359150808211156200131b57600080fd5b6200132989838a0162001279565b935060608801359150808211156200134057600080fd5b506200134f8882890162001279565b9150509295509295909350565b80356001600160a01b03811681146200137457600080fd5b919050565b6000602082840312156200138c57600080fd5b6200118c826200135c565b60008060408385031215620013ab57600080fd5b620013b6836200135c565b9150602083013567ffffffffffffffff811115620013d357600080fd5b8301601f81018513620013e557600080fd5b620013f685823560208401620011fc565b9150509250929050565b6000602082840312156200141357600080fd5b5035919050565b600080602083850312156200142e57600080fd5b823567ffffffffffffffff8111156200144657600080fd5b6200145485828601620011a1565b90969095509350505050565b60005b838110156200147d57818101518382015260200162001463565b8381111562000c9c5750506000910152565b60008151808452620014a981602086016020860162001460565b601f01601f19169290920160200192915050565b6001600160a01b0385168152608060208201819052600090620014e3908301866200148f565b8281036040840152620014f781866200148f565b905082810360608401526200150d81856200148f565b979650505050505050565b6001600160a01b03831681526040602082018190526000906200153e908301846200148f565b949350505050565b8381526060602082015260006200156160608301856200148f565b82810360408401526200157581856200148f565b9695505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200162a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600082516200165b81846020870162001460565b9190910192915050565b600082198211156200168757634e487b7160e01b600052601160045260246000fd5b500190565b6020815260006200118c60208301846200148f56fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204bef241dc17cc230667cfbb2e0cecfac72e0dfd528208b58dc9a3da443aedc6e64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0xEF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E2EC6D0 GT PUSH3 0x89 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x257 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x27C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2A1 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x1F0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x212 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH3 0xCA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x184 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x19B JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1B3 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0xF4 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x136 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x15D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x113 CALLDATASIZE PUSH1 0x4 PUSH3 0x129C JUMP JUMPDEST PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x12D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x17C CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x461 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x182 PUSH3 0x195 CALLDATASIZE PUSH1 0x4 PUSH3 0x1397 JUMP JUMPDEST PUSH3 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH3 0x628 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x1D2 CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x6DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x76A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x251 CALLDATASIZE PUSH1 0x4 PUSH3 0x1400 JUMP JUMPDEST PUSH3 0x782 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x276 CALLDATASIZE PUSH1 0x4 PUSH3 0x141A JUMP JUMPDEST PUSH3 0x7AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x29B CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x8F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x314 DUP8 DUP8 PUSH3 0x7AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x40 MLOAD CALLER SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x5F1E6F6D SWAP1 PUSH3 0x3A3 SWAP1 DUP5 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x24 ADD PUSH3 0x14BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x3DD SWAP1 PUSH3 0x1193 JUMP JUMPDEST PUSH3 0x3EA SWAP3 SWAP2 SWAP1 PUSH3 0x1518 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH1 0x0 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH3 0x44E SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x4AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x4F7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x520 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x52B DUP2 PUSH3 0x975 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x549 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0x97F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x597 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x5E2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x60B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x616 DUP3 PUSH3 0x975 JUMP JUMPDEST PUSH3 0x624 DUP3 DUP3 PUSH1 0x1 PUSH3 0x97F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x702 JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x748 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x774 PUSH3 0xAFC JUMP JUMPDEST PUSH3 0x780 PUSH1 0x0 PUSH3 0xB58 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x802 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xCB SLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH3 0x830 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x854 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x892 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x8F0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xBAA SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x903 PUSH3 0xAFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x96A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0x549 DUP2 PUSH3 0xB58 JUMP JUMPDEST PUSH3 0x549 PUSH3 0xAFC JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0x9BA JUMPI PUSH3 0x9B5 DUP4 PUSH3 0xBD2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xA17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xA14 SWAP2 DUP2 ADD SWAP1 PUSH3 0x1617 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xA7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH3 0x9B5 DUP4 DUP4 DUP4 PUSH3 0xC71 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xBBB DUP6 DUP6 PUSH3 0xCA2 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xBCA DUP2 PUSH3 0xD18 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xC41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xC7C DUP4 PUSH3 0xEE6 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0xC8A JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0x9B5 JUMPI PUSH3 0xC9C DUP4 DUP4 PUSH3 0xF28 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0xCDC JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0xCCF DUP8 DUP3 DUP6 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0xD11 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0xD09 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0xCFD DUP7 DUP4 DUP4 PUSH3 0x1111 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0xD11 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD2F JUMPI PUSH3 0xD2F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD38 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD4F JUMPI PUSH3 0xD4F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD9E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xDB5 JUMPI PUSH3 0xDB5 PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE1B JUMPI PUSH3 0xE1B PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE75 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE8C JUMPI PUSH3 0xE8C PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0xEF1 DUP2 PUSH3 0xBD2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0xF92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xFAF SWAP2 SWAP1 PUSH3 0x1647 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0xFEC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xFF1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x8F0 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1FBC PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x114E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x1055 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1108 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x106E JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x1081 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1108 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x1101 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1108 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x1130 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x1665 JUMP JUMPDEST SWAP1 POP PUSH3 0x1140 DUP8 DUP3 DUP9 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x115F JUMPI POP DUP2 PUSH3 0x118C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x1170 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP2 SWAP1 PUSH3 0x168C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x16A2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x11B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x11CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x121A JUMPI PUSH3 0x121A PUSH3 0x11E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x1245 JUMPI PUSH3 0x1245 PUSH3 0x11E6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x11FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x12B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x12CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12DC DUP10 DUP4 DUP11 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x12F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1304 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x131B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1329 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x1340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x134F DUP9 DUP3 DUP10 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP3 PUSH3 0x135C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x13AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13B6 DUP4 PUSH3 0x135C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x13D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13F6 DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x11FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1454 DUP6 DUP3 DUP7 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x147D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x1463 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xC9C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x14A9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x1460 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x14E3 SWAP1 DUP4 ADD DUP7 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x14F7 DUP2 DUP7 PUSH3 0x148F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x150D DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x153E SWAP1 DUP4 ADD DUP5 PUSH3 0x148F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x1561 PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x1575 DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x162A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x165B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x1460 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x1687 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x118C PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x148F JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65643608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A26469706673582212204B 0xEF 0x24 SAR 0xC1 PUSH29 0xC230667CFBB2E0CECFAC72E0DFD528208B58DC9A3DA443AEDC6E64736F PUSH13 0x634300080E0033000000000000 ",
              "sourceMap": "2089:3575:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3428:860;;;;;;;;;;-1:-1:-1;3428:860:35;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2562:32:46;;;2544:51;;2532:2;2517:18;3428:860:35;;;;;;;;2784:31;;;;;;;;;;;;;;;;;;;2752:25:46;;;2740:2;2725:18;2784:31:35;2606:177:46;3315:197:6;;;;;;;;;;-1:-1:-1;3315:197:6;;;;;:::i;:::-;;:::i;:::-;;3761:222;;;;;;:::i;:::-;;:::i;3004:131::-;;;;;;;;;;;;;:::i;5354:172:35:-;;;;;;;;;;-1:-1:-1;5354:172:35;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;2929:28:35:-;;;;;;;;;;-1:-1:-1;2929:28:35;;;;-1:-1:-1;;;;;2929:28:35;;;1441:85:0;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;3031:32:35;;;;;;;;;;-1:-1:-1;3031:32:35;;;;;:::i;:::-;;:::i;4393:844::-;;;;;;;;;;-1:-1:-1;4393:844:35;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;2659:20:35:-;;;;;;;;;;-1:-1:-1;2659:20:35;;;;-1:-1:-1;;;;;2659:20:35;;;2383:85;;;;;;;;;;;;2425:43;2383:85;;3428:860;3650:5;;3598:7;;-1:-1:-1;;;;;3650:5:35;3626:20;3636:9;;3626;:20::i;:::-;-1:-1:-1;;;;;3626:29:35;;3617:75;;;;-1:-1:-1;;;3617:75:35;;4487:2:46;3617:75:35;;;4469:21:46;4526:2;4506:18;;;4499:30;4565:33;4545:18;;;4538:61;4616:18;;3617:75:35;;;;;;;;;3879:13;;4045:74;;929:10:12;;3703:12:35;;929:10:12;;-1:-1:-1;;;;;3879:13:35;;4068:10;;4045:74;;929:10:12;;4094:5:35;;4101:7;;4110:8;;4045:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4045:74:35;;;;;;;;;;;3838:291;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;3818:311;;4242:5;-1:-1:-1;;;;;4201:48:35;;4215:1;4218:5;4225:7;4201:48;;;;;;;;:::i;:::-;;;;;;;;4275:5;3428:860;-1:-1:-1;;;;;;;3428:860:35:o;3315:197:6:-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3398:36:::1;3416:17;3398;:36::i;:::-;3485:12;::::0;;3495:1:::1;3485:12:::0;;;::::1;::::0;::::1;::::0;;;3444:61:::1;::::0;3466:17;;3485:12;3444:21:::1;:61::i;:::-;3315:197:::0;:::o;3761:222::-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3878:36:::1;3896:17;3878;:36::i;:::-;3924:52;3946:17;3965:4;3971;3924:21;:52::i;:::-;3761:222:::0;;:::o;3004:131::-;3082:7;2324:4;-1:-1:-1;;;;;2333:6:6;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:6;;7636:2:46;2308:92:6;;;7618:21:46;7675:2;7655:18;;;7648:30;7714:34;7694:18;;;7687:62;7785:26;7765:18;;;7758:54;7829:19;;2308:92:6;7434:420:46;2308:92:6;-1:-1:-1;;;;;;;;;;;;3004:131:6;:::o;5354:172:35:-;1513:6:0;;-1:-1:-1;;;;;1513:6:0;929:10:12;5418:23:35;;:48;;-1:-1:-1;5445:5:35;;-1:-1:-1;;;;;5445:5:35;929:10:12;5445:21:35;5418:48;5410:82;;;;-1:-1:-1;;;5410:82:35;;8061:2:46;5410:82:35;;;8043:21:46;8100:2;8080:18;;;8073:30;-1:-1:-1;;;8119:18:46;;;8112:51;8180:18;;5410:82:35;7859:345:46;5410:82:35;5502:5;:17;;-1:-1:-1;;;;;;5502:17:35;-1:-1:-1;;;;;5502:17:35;;;;;;;;;;5354:172::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;3031:32:35:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3031:32:35;;-1:-1:-1;3031:32:35;:::o;4393:844::-;4486:5;;4459:7;;-1:-1:-1;;;;;4486:5:35;4478:53;;;;-1:-1:-1;;;4478:53:35;;8411:2:46;4478:53:35;;;8393:21:46;8450:2;8430:18;;;8423:30;-1:-1:-1;;;8469:18:46;;;8462:51;8530:18;;4478:53:35;8209:345:46;4478:53:35;4751:14;4820:16;;2425:43;4876:12;929:10:12;;850:96;4876:12:35;4848:41;;;;;;;;8733:25:46;;;-1:-1:-1;;;;;8794:32:46;8789:2;8774:18;;8767:60;8721:2;8706:18;;8559:274;4848:41:35;;;;;;;;;;;;;4838:52;;;;;;4791:100;;;;;;;;-1:-1:-1;;;9096:27:46;;9148:1;9139:11;;9132:27;;;;9184:2;9175:12;;9168:28;9221:2;9212:12;;8838:392;4791:100:35;;;;;;;;;;;;;4768:133;;;;;;4751:150;;5145:24;5172:25;5187:9;;5172:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5172:6:35;;:25;-1:-1:-1;;5172:14:35;:25;-1:-1:-1;5172:25:35:i;:::-;5145:52;4393:844;-1:-1:-1;;;;;4393:844:35:o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;9437:2:46;2401:73:0::1;::::0;::::1;9419:21:46::0;9476:2;9456:18;;;9449:30;9515:34;9495:18;;;9488:62;-1:-1:-1;;;9566:18:46;;;9559:36;9612:19;;2401:73:0::1;9235:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;5596:66:35:-:0;1334:13:0;:11;:13::i;2938:974:3:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;:::-;2938:974;;;:::o;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:3;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:3;;;;;;;;-1:-1:-1;;3531:63:3;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:3;;10033:2:46;3758:56:3;;;10015:21:46;10072:2;10052:18;;;10045:30;10111:34;10091:18;;;10084:62;-1:-1:-1;;;10162:18:46;;;10155:44;10216:19;;3758:56:3;9831:410:46;3527:302:3;-1:-1:-1;;;;;;;;;;;3644:28:3;;3636:82;;;;-1:-1:-1;;;3636:82:3;;10448:2:46;3636:82:3;;;10430:21:46;10487:2;10467:18;;;10460:30;10526:34;10506:18;;;10499:62;-1:-1:-1;;;10577:18:46;;;10570:39;10626:19;;3636:82:3;10246:405:46;3636:82:3;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;10858:2:46;1654:68:0;;;10840:21:46;;;10877:18;;;10870:30;10936:34;10916:18;;;10909:62;10988:18;;1654:68:0;10656:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;4424:227:16:-;4502:7;4522:17;4541:18;4563:27;4574:4;4580:9;4563:10;:27::i;:::-;4521:69;;;;4600:18;4612:5;4600:11;:18::i;:::-;-1:-1:-1;4635:9:16;4424:227;-1:-1:-1;;;4424:227:16:o;1805:281:3:-;-1:-1:-1;;;;;1476:19:11;;;1878:106:3;;;;-1:-1:-1;;;1878:106:3;;11219:2:46;1878:106:3;;;11201:21:46;11258:2;11238:18;;;11231:30;11297:34;11277:18;;;11270:62;-1:-1:-1;;;11348:18:46;;;11341:43;11401:19;;1878:106:3;11017:409:46;1878:106:3;-1:-1:-1;;;;;;;;;;;1994:85:3;;-1:-1:-1;;;;;;1994:85:3;-1:-1:-1;;;;;1994:85:3;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;2265:1373:16:-;2346:7;2355:12;2576:9;:16;2596:2;2576:22;2572:1060;;2912:4;2897:20;;2891:27;2961:4;2946:20;;2940:27;3018:4;3003:20;;2997:27;2614:9;2989:36;3059:25;3070:4;2989:36;2891:27;2940;3059:10;:25::i;:::-;3052:32;;;;;;;;;2572:1060;3105:9;:16;3125:2;3105:22;3101:531;;3421:4;3406:20;;3400:27;3471:4;3456:20;;3450:27;3511:23;3522:4;3400:27;3450;3511:10;:23::i;:::-;3504:30;;;;;;;;3101:531;-1:-1:-1;3581:1:16;;-1:-1:-1;3585:35:16;3101:531;2265:1373;;;;;:::o;570:631::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:561;;570:631;:::o;634:561::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:465;;788:34;;-1:-1:-1;;;788:34:16;;11765:2:46;788:34:16;;;11747:21:46;11804:2;11784:18;;;11777:30;11843:26;11823:18;;;11816:54;11887:18;;788:34:16;11563:348:46;730:465:16;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:356;;903:41;;-1:-1:-1;;;903:41:16;;12118:2:46;903:41:16;;;12100:21:46;12157:2;12137:18;;;12130:30;12196:33;12176:18;;;12169:61;12247:18;;903:41:16;11916:355:46;839:356:16;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:234;;1020:44;;-1:-1:-1;;;1020:44:16;;12478:2:46;1020:44:16;;;12460:21:46;12517:2;12497:18;;;12490:30;12556:34;12536:18;;;12529:62;-1:-1:-1;;;12607:18:46;;;12600:32;12649:19;;1020:44:16;12276:398:46;961:234:16;1094:30;1085:5;:39;;;;;;;;:::i;:::-;;1081:114;;1140:44;;-1:-1:-1;;;1140:44:16;;12881:2:46;1140:44:16;;;12863:21:46;12920:2;12900:18;;;12893:30;12959:34;12939:18;;;12932:62;-1:-1:-1;;;13010:18:46;;;13003:32;13052:19;;1140:44:16;12679:398:46;2192:152:3;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:3;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:11;;;7195:88:3;;;;-1:-1:-1;;;7195:88:3;;13284:2:46;7195:88:3;;;13266:21:46;13323:2;13303:18;;;13296:30;13362:34;13342:18;;;13335:62;-1:-1:-1;;;13413:18:46;;;13406:36;13459:19;;7195:88:3;13082:402:46;7195:88:3;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:3;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;5832:1603:16:-;5958:7;;6882:66;6869:79;;6865:161;;;-1:-1:-1;6980:1:16;;-1:-1:-1;6984:30:16;6964:51;;6865:161;7039:1;:7;;7044:2;7039:7;;:18;;;;;7050:1;:7;;7055:2;7050:7;;7039:18;7035:100;;;-1:-1:-1;7089:1:16;;-1:-1:-1;7093:30:16;7073:51;;7035:100;7246:24;;;7229:14;7246:24;;;;;;;;;13995:25:46;;;14068:4;14056:17;;14036:18;;;14029:45;;;;14090:18;;;14083:34;;;14133:18;;;14126:34;;;7246:24:16;;13967:19:46;;7246:24:16;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7246:24:16;;-1:-1:-1;;7246:24:16;;;-1:-1:-1;;;;;;;7284:20:16;;7280:101;;7336:1;7340:29;7320:50;;;;;;;7280:101;7399:6;-1:-1:-1;7407:20:16;;-1:-1:-1;5832:1603:16;;;;;;;;:::o;4905:336::-;5015:7;;-1:-1:-1;;;;;5060:80:16;;5015:7;5166:25;5182:3;5167:18;;;5189:2;5166:25;:::i;:::-;5150:42;;5209:25;5220:4;5226:1;5229;5232;5209:10;:25::i;:::-;5202:32;;;;;;4905:336;;;;;;:::o;6622:742:11:-;6768:12;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;6933:415::-;6622:742;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:347:46:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:46;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;366:127;427:10;422:3;418:20;415:1;408:31;458:4;455:1;448:15;482:4;479:1;472:15;498:632;563:5;593:18;634:2;626:6;623:14;620:40;;;640:18;;:::i;:::-;715:2;709:9;683:2;769:15;;-1:-1:-1;;765:24:46;;;791:2;761:33;757:42;745:55;;;815:18;;;835:22;;;812:46;809:72;;;861:18;;:::i;:::-;901:10;897:2;890:22;930:6;921:15;;960:6;952;945:22;1000:3;991:6;986:3;982:16;979:25;976:45;;;1017:1;1014;1007:12;976:45;1067:6;1062:3;1055:4;1047:6;1043:17;1030:44;1122:1;1115:4;1106:6;1098;1094:19;1090:30;1083:41;;;;498:632;;;;;:::o;1135:222::-;1178:5;1231:3;1224:4;1216:6;1212:17;1208:27;1198:55;;1249:1;1246;1239:12;1198:55;1271:80;1347:3;1338:6;1325:20;1318:4;1310:6;1306:17;1271:80;:::i;1362:1031::-;1489:6;1497;1505;1513;1521;1574:3;1562:9;1553:7;1549:23;1545:33;1542:53;;;1591:1;1588;1581:12;1542:53;1631:9;1618:23;1660:18;1701:2;1693:6;1690:14;1687:34;;;1717:1;1714;1707:12;1687:34;1756:58;1806:7;1797:6;1786:9;1782:22;1756:58;:::i;:::-;1833:8;;-1:-1:-1;1730:84:46;-1:-1:-1;1921:2:46;1906:18;;1893:32;;-1:-1:-1;1937:16:46;;;1934:36;;;1966:1;1963;1956:12;1934:36;1989:52;2033:7;2022:8;2011:9;2007:24;1989:52;:::i;:::-;1979:62;;2094:2;2083:9;2079:18;2066:32;2050:48;;2123:2;2113:8;2110:16;2107:36;;;2139:1;2136;2129:12;2107:36;2162:52;2206:7;2195:8;2184:9;2180:24;2162:52;:::i;:::-;2152:62;;2267:2;2256:9;2252:18;2239:32;2223:48;;2296:2;2286:8;2283:16;2280:36;;;2312:1;2309;2302:12;2280:36;;2335:52;2379:7;2368:8;2357:9;2353:24;2335:52;:::i;:::-;2325:62;;;1362:1031;;;;;;;;:::o;2788:173::-;2856:20;;-1:-1:-1;;;;;2905:31:46;;2895:42;;2885:70;;2951:1;2948;2941:12;2885:70;2788:173;;;:::o;2966:186::-;3025:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:52;;;3094:1;3091;3084:12;3046:52;3117:29;3136:9;3117:29;:::i;3157:524::-;3234:6;3242;3295:2;3283:9;3274:7;3270:23;3266:32;3263:52;;;3311:1;3308;3301:12;3263:52;3334:29;3353:9;3334:29;:::i;:::-;3324:39;;3414:2;3403:9;3399:18;3386:32;3441:18;3433:6;3430:30;3427:50;;;3473:1;3470;3463:12;3427:50;3496:22;;3549:4;3541:13;;3537:27;-1:-1:-1;3527:55:46;;3578:1;3575;3568:12;3527:55;3601:74;3667:7;3662:2;3649:16;3644:2;3640;3636:11;3601:74;:::i;:::-;3591:84;;;3157:524;;;;;:::o;3686:180::-;3745:6;3798:2;3786:9;3777:7;3773:23;3769:32;3766:52;;;3814:1;3811;3804:12;3766:52;-1:-1:-1;3837:23:46;;3686:180;-1:-1:-1;3686:180:46:o;3871:409::-;3941:6;3949;4002:2;3990:9;3981:7;3977:23;3973:32;3970:52;;;4018:1;4015;4008:12;3970:52;4058:9;4045:23;4091:18;4083:6;4080:30;4077:50;;;4123:1;4120;4113:12;4077:50;4162:58;4212:7;4203:6;4192:9;4188:22;4162:58;:::i;:::-;4239:8;;4136:84;;-1:-1:-1;3871:409:46;-1:-1:-1;;;;3871:409:46:o;4645:258::-;4717:1;4727:113;4741:6;4738:1;4735:13;4727:113;;;4817:11;;;4811:18;4798:11;;;4791:39;4763:2;4756:10;4727:113;;;4858:6;4855:1;4852:13;4849:48;;;-1:-1:-1;;4893:1:46;4875:16;;4868:27;4645:258::o;4908:::-;4950:3;4988:5;4982:12;5015:6;5010:3;5003:19;5031:63;5087:6;5080:4;5075:3;5071:14;5064:4;5057:5;5053:16;5031:63;:::i;:::-;5148:2;5127:15;-1:-1:-1;;5123:29:46;5114:39;;;;5155:4;5110:50;;4908:258;-1:-1:-1;;4908:258:46:o;5171:645::-;-1:-1:-1;;;;;5444:32:46;;5426:51;;5513:3;5508:2;5493:18;;5486:31;;;-1:-1:-1;;5540:46:46;;5566:19;;5558:6;5540:46;:::i;:::-;5634:9;5626:6;5622:22;5617:2;5606:9;5602:18;5595:50;5668:33;5694:6;5686;5668:33;:::i;:::-;5654:47;;5749:9;5741:6;5737:22;5732:2;5721:9;5717:18;5710:50;5777:33;5803:6;5795;5777:33;:::i;:::-;5769:41;5171:645;-1:-1:-1;;;;;;;5171:645:46:o;5821:315::-;-1:-1:-1;;;;;5996:32:46;;5978:51;;6065:2;6060;6045:18;;6038:30;;;-1:-1:-1;;6085:45:46;;6111:18;;6103:6;6085:45;:::i;:::-;6077:53;5821:315;-1:-1:-1;;;;5821:315:46:o;6141:462::-;6374:6;6363:9;6356:25;6417:2;6412;6401:9;6397:18;6390:30;6337:4;6443:45;6484:2;6473:9;6469:18;6461:6;6443:45;:::i;:::-;6536:9;6528:6;6524:22;6519:2;6508:9;6504:18;6497:50;6564:33;6590:6;6582;6564:33;:::i;:::-;6556:41;6141:462;-1:-1:-1;;;;;;6141:462:46:o;6608:408::-;6810:2;6792:21;;;6849:2;6829:18;;;6822:30;6888:34;6883:2;6868:18;;6861:62;-1:-1:-1;;;6954:2:46;6939:18;;6932:42;7006:3;6991:19;;6608:408::o;7021:::-;7223:2;7205:21;;;7262:2;7242:18;;;7235:30;7301:34;7296:2;7281:18;;7274:62;-1:-1:-1;;;7367:2:46;7352:18;;7345:42;7419:3;7404:19;;7021:408::o;9642:184::-;9712:6;9765:2;9753:9;9744:7;9740:23;9736:32;9733:52;;;9781:1;9778;9771:12;9733:52;-1:-1:-1;9804:16:46;;9642:184;-1:-1:-1;9642:184:46:o;11431:127::-;11492:10;11487:3;11483:20;11480:1;11473:31;11523:4;11520:1;11513:15;11547:4;11544:1;11537:15;13489:274;13618:3;13656:6;13650:13;13672:53;13718:6;13713:3;13706:4;13698:6;13694:17;13672:53;:::i;:::-;13741:16;;;;;13489:274;-1:-1:-1;;13489:274:46:o;14171:225::-;14211:3;14242:1;14238:6;14235:1;14232:13;14229:136;;;14287:10;14282:3;14278:20;14275:1;14268:31;14322:4;14319:1;14312:15;14350:4;14347:1;14340:15;14229:136;-1:-1:-1;14381:9:46;;14171:225::o;14401:220::-;14550:2;14539:9;14532:21;14513:4;14570:45;14611:2;14600:9;14596:18;14588:6;14570:45;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1643200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "2341",
                "MINTER_TYPEHASH()": "283",
                "admin()": "2392",
                "artistContracts(uint256)": "4670",
                "beaconAddress()": "2349",
                "createArtist(bytes,string,string,string)": "infinite",
                "getSigner(bytes)": "infinite",
                "owner()": "2365",
                "proxiableUUID()": "infinite",
                "renounceOwnership()": "infinite",
                "setAdmin(address)": "28923",
                "transferOwnership(address)": "28380",
                "upgradeTo(address)": "infinite",
                "upgradeToAndCall(address,bytes)": "infinite"
              },
              "internal": {
                "_authorizeUpgrade(address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "MINTER_TYPEHASH()": "fa4d280c",
              "admin()": "f851a440",
              "artistContracts(uint256)": "b16a43f0",
              "beaconAddress()": "7e2ec6d0",
              "createArtist(bytes,string,string,string)": "233654eb",
              "getSigner(bytes)": "e6adabfd",
              "owner()": "8da5cb5b",
              "proxiableUUID()": "52d1902d",
              "renounceOwnership()": "715018a6",
              "setAdmin(address)": "704b6c02",
              "transferOwnership(address)": "f2fde38b",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"artistId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"artistAddress\",\"type\":\"address\"}],\"name\":\"CreatedArtist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artistContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createArtist\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Sound.xyz - @gigamesh & @vigneshka\",\"kind\":\"dev\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"params\":{\"_name\":\"Name of the artist\"}},\"getSigner(bytes)\":{\"params\":{\"signature\":\"Signature of the message\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAdmin(address)\":{\"params\":{\"_newAdmin\":\"address of new admin\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"The Artist Creator factory contract\",\"version\":1},\"userdoc\":{\"events\":{\"CreatedArtist(uint256,string,string,address)\":{\"notice\":\"Emitted when an Artist is created\"}},\"kind\":\"user\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"notice\":\"Creates a new artist contract as a factory with a deterministic address\"},\"getSigner(bytes)\":{\"notice\":\"Gets signer address of signature\"},\"setAdmin(address)\":{\"notice\":\"Sets the admin for authorizing artist deployment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistCreatorV2.sol\":\"ArtistCreatorV2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n        require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n        return _IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeTo} and {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"../ERC1967/ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\\n *\\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\\n * conflict with the storage layout of the implementation behind the proxy.\\n *\\n * _Available since v3.4._\\n */\\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the proxy with `beacon`.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\\n     * constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract with the interface {IBeacon}.\\n     */\\n    constructor(address beacon, bytes memory data) payable {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current beacon address.\\n     */\\n    function _beacon() internal view virtual returns (address) {\\n        return _getBeacon();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address of the associated beacon.\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return IBeacon(_getBeacon()).implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract.\\n     * - The implementation returned by `beacon` must be a contract.\\n     */\\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n}\\n\",\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"},\"contracts/ArtistCreatorV2.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.14;\\n\\n/*\\n               ^###############################################&5               \\n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \\n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \\n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \\n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \\n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \\n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \\n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \\n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \\n\\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\\n\\n/// @title The Artist Creator factory contract\\n/// @author Sound.xyz - @gigamesh & @vigneshka\\ncontract ArtistCreatorV2 is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSAUpgradeable for bytes32;\\n\\n    // ============ Storage ============\\n\\n    // Typehash of the signed message provided to createArtist\\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\\n    // ID for each Artist proxy // DEPRECATED in ArtistCreatorV2\\n    CountersUpgradeable.Counter private atArtistId;\\n    // Address used for signature verification, changeable by owner\\n    address public admin;\\n    // Domain separator is used to prevent replay attacks using signatures from different networks\\n    bytes32 public DOMAIN_SEPARATOR;\\n    // The address of UpgradeableBeacon, which was deployed in the initialize function of ArtistCreator.sol\\n    address public beaconAddress;\\n    // Array of the Artist proxies // DEPRECATED in ArtistCreatorV2\\n    address[] public artistContracts;\\n\\n    // ============ Events ============\\n\\n    /// Emitted when an Artist is created\\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\\n\\n    // ============ Functions ============\\n\\n    /// @notice Creates a new artist contract as a factory with a deterministic address\\n    /// @param _name Name of the artist\\n    function createArtist(\\n        bytes calldata signature,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public returns (address) {\\n        require((getSigner(signature) == admin), 'invalid authorization signature');\\n\\n        bytes32 salt = bytes32(uint256(uint160(_msgSender())));\\n\\n        // salted contract creation using create2\\n        BeaconProxy proxy = new BeaconProxy{salt: salt}(\\n            beaconAddress,\\n            // 0x5f1e6f6d is the initialize function selector on ArtistV5 (hash of \\\"function initialize(address, string, string, string)\\\")\\n            abi.encodeWithSelector(0x5f1e6f6d, _msgSender(), _name, _symbol, _baseURI)\\n        );\\n\\n        // the first parameter, artistId, is deprecated\\n        emit CreatedArtist(0, _name, _symbol, address(proxy));\\n\\n        return address(proxy);\\n    }\\n\\n    /// @notice Gets signer address of signature\\n    /// @param signature Signature of the message\\n    function getSigner(bytes calldata signature) public view returns (address) {\\n        require(admin != address(0), 'whitelist not enabled');\\n        // Verify EIP-712 signature by recreating the data structure\\n        // that we signed on the client side, and then using that to recover\\n        // the address that signed the signature for this data.\\n        bytes32 digest = keccak256(\\n            abi.encodePacked('\\\\x19\\\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, _msgSender())))\\n        );\\n        // Use the recover method to see what address was used to create\\n        // the signature on this data.\\n        // Note that if the digest doesn't exactly match what was signed we'll\\n        // get a random recovered address.\\n        address recoveredAddress = digest.recover(signature);\\n        return recoveredAddress;\\n    }\\n\\n    /// @notice Sets the admin for authorizing artist deployment\\n    /// @param _newAdmin address of new admin\\n    function setAdmin(address _newAdmin) external {\\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\\n        admin = _newAdmin;\\n    }\\n\\n    /// @notice Authorizes upgrades\\n    /// @dev DO NOT REMOVE!\\n    function _authorizeUpgrade(address) internal override onlyOwner {}\\n}\\n\",\"keccak256\":\"0x78d95b97d0d6e00f6f572f0c0e730e444c506c71fa71d6da30272f749979e6b2\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 528,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 825,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "__gap",
                "offset": 0,
                "slot": "101",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 5671,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "atArtistId",
                "offset": 0,
                "slot": "201",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 5673,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "admin",
                "offset": 0,
                "slot": "202",
                "type": "t_address"
              },
              {
                "astId": 5675,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "DOMAIN_SEPARATOR",
                "offset": 0,
                "slot": "203",
                "type": "t_bytes32"
              },
              {
                "astId": 5677,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "beaconAddress",
                "offset": 0,
                "slot": "204",
                "type": "t_address"
              },
              {
                "astId": 5680,
                "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                "label": "artistContracts",
                "offset": 0,
                "slot": "205",
                "type": "t_array(t_address)dyn_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistCreatorV2.sol:ArtistCreatorV2",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "events": {
              "CreatedArtist(uint256,string,string,address)": {
                "notice": "Emitted when an Artist is created"
              }
            },
            "kind": "user",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "notice": "Creates a new artist contract as a factory with a deterministic address"
              },
              "getSigner(bytes)": {
                "notice": "Gets signer address of signature"
              },
              "setAdmin(address)": {
                "notice": "Sets the admin for authorizing artist deployment"
              }
            },
            "version": 1
          }
        }
      },
      "contracts/ArtistCreatorV3.sol": {
        "ArtistCreatorV3": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "artistId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "artistAddress",
                  "type": "address"
                }
              ],
              "name": "CreatedArtist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MINTER_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "artistContracts",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "beaconAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "createArtist",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "getSigner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Sound.xyz - @gigamesh & @vigneshka",
            "kind": "dev",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "params": {
                  "_name": "Name of the artist"
                }
              },
              "getSigner(bytes)": {
                "params": {
                  "signature": "Signature of the message"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "proxiableUUID()": {
                "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "setAdmin(address)": {
                "params": {
                  "_newAdmin": "address of new admin"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "upgradeTo(address)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              },
              "upgradeToAndCall(address,bytes)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              }
            },
            "title": "The Artist Creator factory contract",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60a06040523060805234801561001457600080fd5b5060805161201861004c6000396000818161046b015281816104ae0152818161055601528181610599015261063501526120186000f3fe608060405260043610620000ef5760003560e01c80637e2ec6d01162000089578063e6adabfd1162000060578063e6adabfd1462000257578063f2fde38b146200027c578063f851a44014620002a1578063fa4d280c14620002c357600080fd5b80637e2ec6d014620001f05780638da5cb5b1462000212578063b16a43f0146200023257600080fd5b80634f1ef28611620000ca5780634f1ef286146200018457806352d1902d146200019b578063704b6c0214620001b3578063715018a614620001d857600080fd5b8063233654eb14620000f45780633644e51514620001365780633659cfe6146200015d575b600080fd5b3480156200010157600080fd5b5062000119620001133660046200129c565b620002f9565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014357600080fd5b506200014e60cb5481565b6040519081526020016200012d565b3480156200016a57600080fd5b50620001826200017c36600462001379565b62000461565b005b620001826200019536600462001397565b6200054c565b348015620001a857600080fd5b506200014e62000628565b348015620001c057600080fd5b5062000182620001d236600462001379565b620006de565b348015620001e557600080fd5b50620001826200076a565b348015620001fd57600080fd5b5060cc5462000119906001600160a01b031681565b3480156200021f57600080fd5b506097546001600160a01b031662000119565b3480156200023f57600080fd5b50620001196200025136600462001400565b62000782565b3480156200026457600080fd5b5062000119620002763660046200141a565b620007ad565b3480156200028957600080fd5b50620001826200029b36600462001379565b620008f9565b348015620002ae57600080fd5b5060ca5462000119906001600160a01b031681565b348015620002d057600080fd5b506200014e7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b0316620003148787620007ad565b6001600160a01b031614620003705760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc54604051339160009183916001600160a01b031690635f1e6f6d90620003a39084908b908b908b90602401620014bd565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051620003dd9062001193565b620003ea92919062001518565b8190604051809103906000f59050801580156200040b573d6000803e3d6000fd5b509050806001600160a01b03167f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0600088886040516200044e9392919062001546565b60405180910390a2979650505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620004ac5760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620004f760008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b031614620005205760405162461bcd60e51b81526004016200036790620015cb565b6200052b8162000975565b6040805160008082526020820190925262000549918391906200097f565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005975760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620005e260008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b0316146200060b5760405162461bcd60e51b81526004016200036790620015cb565b620006168262000975565b62000624828260016200097f565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620006ca5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840162000367565b5060008051602062001f9c83398151915290565b6097546001600160a01b031633148062000702575060ca546001600160a01b031633145b620007485760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b604482015260640162000367565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6200077462000afc565b62000780600062000b58565b565b60cd81815481106200079357600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b0316620008025760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b604482015260640162000367565b600060cb547f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2620008303390565b604051602001620008549291909182526001600160a01b0316602082015260400190565b604051602081830303815290604052805190602001206040516020016200089292919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090506000620008f085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000baa9050565b95945050505050565b6200090362000afc565b6001600160a01b0381166200096a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000367565b620005498162000b58565b6200054962000afc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620009ba57620009b58362000bd2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000a17575060408051601f3d908101601f1916820190925262000a149181019062001617565b60015b62000a7c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000367565b60008051602062001f9c833981519152811462000aee5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000367565b50620009b583838362000c71565b6097546001600160a01b03163314620007805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000367565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080600062000bbb858562000ca2565b9150915062000bca8162000d18565b509392505050565b6001600160a01b0381163b62000c415760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000367565b60008051602062001f9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000c7c8362000ee6565b60008251118062000c8a5750805b15620009b55762000c9c838362000f28565b50505050565b600080825160410362000cdc5760208301516040840151606085015160001a62000ccf878285856200101c565b9450945050505062000d11565b825160400362000d09576020830151604084015162000cfd86838362001111565b93509350505062000d11565b506000905060025b9250929050565b600081600481111562000d2f5762000d2f62001631565b0362000d385750565b600181600481111562000d4f5762000d4f62001631565b0362000d9e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640162000367565b600281600481111562000db55762000db562001631565b0362000e045760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640162000367565b600381600481111562000e1b5762000e1b62001631565b0362000e755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840162000367565b600481600481111562000e8c5762000e8c62001631565b03620005495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840162000367565b62000ef18162000bd2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b62000f925760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000367565b600080846001600160a01b03168460405162000faf919062001647565b600060405180830381855af49150503d806000811462000fec576040519150601f19603f3d011682016040523d82523d6000602084013e62000ff1565b606091505b5091509150620008f0828260405180606001604052806027815260200162001fbc602791396200114e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111562001055575060009050600362001108565b8460ff16601b141580156200106e57508460ff16601c14155b1562001081575060009050600462001108565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015620010d6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620011015760006001925092505062001108565b9150600090505b94509492505050565b6000806001600160ff1b038316816200113060ff86901c601b62001665565b905062001140878288856200101c565b935093505050935093915050565b606083156200115f5750816200118c565b825115620011705782518084602001fd5b8160405162461bcd60e51b81526004016200036791906200168c565b9392505050565b6108fa80620016a283390190565b60008083601f840112620011b457600080fd5b50813567ffffffffffffffff811115620011cd57600080fd5b60208301915083602082850101111562000d1157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200121a576200121a620011e6565b604051601f8501601f19908116603f01168101908282118183101715620012455762001245620011e6565b816040528093508581528686860111156200125f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200128b57600080fd5b6200118c83833560208501620011fc565b600080600080600060808688031215620012b557600080fd5b853567ffffffffffffffff80821115620012ce57600080fd5b620012dc89838a01620011a1565b90975095506020880135915080821115620012f657600080fd5b6200130489838a0162001279565b945060408801359150808211156200131b57600080fd5b6200132989838a0162001279565b935060608801359150808211156200134057600080fd5b506200134f8882890162001279565b9150509295509295909350565b80356001600160a01b03811681146200137457600080fd5b919050565b6000602082840312156200138c57600080fd5b6200118c826200135c565b60008060408385031215620013ab57600080fd5b620013b6836200135c565b9150602083013567ffffffffffffffff811115620013d357600080fd5b8301601f81018513620013e557600080fd5b620013f685823560208401620011fc565b9150509250929050565b6000602082840312156200141357600080fd5b5035919050565b600080602083850312156200142e57600080fd5b823567ffffffffffffffff8111156200144657600080fd5b6200145485828601620011a1565b90969095509350505050565b60005b838110156200147d57818101518382015260200162001463565b8381111562000c9c5750506000910152565b60008151808452620014a981602086016020860162001460565b601f01601f19169290920160200192915050565b6001600160a01b0385168152608060208201819052600090620014e3908301866200148f565b8281036040840152620014f781866200148f565b905082810360608401526200150d81856200148f565b979650505050505050565b6001600160a01b03831681526040602082018190526000906200153e908301846200148f565b949350505050565b8381526060602082015260006200156160608301856200148f565b82810360408401526200157581856200148f565b9695505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200162a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600082516200165b81846020870162001460565b9190910192915050565b600082198211156200168757634e487b7160e01b600052601160045260246000fd5b500190565b6020815260006200118c60208301846200148f56fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208b5935a35f8ad7670c2b0519fdb8b4c9552995817106f37080b50cc8b6f2e3cf64736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x2018 PUSH2 0x4C PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x46B ADD MSTORE DUP2 DUP2 PUSH2 0x4AE ADD MSTORE DUP2 DUP2 PUSH2 0x556 ADD MSTORE DUP2 DUP2 PUSH2 0x599 ADD MSTORE PUSH2 0x635 ADD MSTORE PUSH2 0x2018 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0xEF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E2EC6D0 GT PUSH3 0x89 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x257 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x27C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2A1 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x1F0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x212 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH3 0xCA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x184 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x19B JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1B3 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0xF4 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x136 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x15D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x113 CALLDATASIZE PUSH1 0x4 PUSH3 0x129C JUMP JUMPDEST PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x12D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x17C CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x461 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x182 PUSH3 0x195 CALLDATASIZE PUSH1 0x4 PUSH3 0x1397 JUMP JUMPDEST PUSH3 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH3 0x628 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x1D2 CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x6DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x76A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x251 CALLDATASIZE PUSH1 0x4 PUSH3 0x1400 JUMP JUMPDEST PUSH3 0x782 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x276 CALLDATASIZE PUSH1 0x4 PUSH3 0x141A JUMP JUMPDEST PUSH3 0x7AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x29B CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x8F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x314 DUP8 DUP8 PUSH3 0x7AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x40 MLOAD CALLER SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x5F1E6F6D SWAP1 PUSH3 0x3A3 SWAP1 DUP5 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x24 ADD PUSH3 0x14BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x3DD SWAP1 PUSH3 0x1193 JUMP JUMPDEST PUSH3 0x3EA SWAP3 SWAP2 SWAP1 PUSH3 0x1518 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH1 0x0 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH3 0x44E SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x4AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x4F7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x520 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x52B DUP2 PUSH3 0x975 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x549 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0x97F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x597 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x5E2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x60B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x616 DUP3 PUSH3 0x975 JUMP JUMPDEST PUSH3 0x624 DUP3 DUP3 PUSH1 0x1 PUSH3 0x97F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x702 JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x748 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x774 PUSH3 0xAFC JUMP JUMPDEST PUSH3 0x780 PUSH1 0x0 PUSH3 0xB58 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x802 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xCB SLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH3 0x830 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x854 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x892 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x8F0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xBAA SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x903 PUSH3 0xAFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x96A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0x549 DUP2 PUSH3 0xB58 JUMP JUMPDEST PUSH3 0x549 PUSH3 0xAFC JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0x9BA JUMPI PUSH3 0x9B5 DUP4 PUSH3 0xBD2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xA17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xA14 SWAP2 DUP2 ADD SWAP1 PUSH3 0x1617 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xA7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH3 0x9B5 DUP4 DUP4 DUP4 PUSH3 0xC71 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xBBB DUP6 DUP6 PUSH3 0xCA2 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xBCA DUP2 PUSH3 0xD18 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xC41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xC7C DUP4 PUSH3 0xEE6 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0xC8A JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0x9B5 JUMPI PUSH3 0xC9C DUP4 DUP4 PUSH3 0xF28 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0xCDC JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0xCCF DUP8 DUP3 DUP6 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0xD11 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0xD09 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0xCFD DUP7 DUP4 DUP4 PUSH3 0x1111 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0xD11 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD2F JUMPI PUSH3 0xD2F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD38 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD4F JUMPI PUSH3 0xD4F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD9E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xDB5 JUMPI PUSH3 0xDB5 PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE1B JUMPI PUSH3 0xE1B PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE75 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE8C JUMPI PUSH3 0xE8C PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0xEF1 DUP2 PUSH3 0xBD2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0xF92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xFAF SWAP2 SWAP1 PUSH3 0x1647 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0xFEC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xFF1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x8F0 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1FBC PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x114E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x1055 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1108 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x106E JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x1081 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1108 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x1101 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1108 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x1130 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x1665 JUMP JUMPDEST SWAP1 POP PUSH3 0x1140 DUP8 DUP3 DUP9 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x115F JUMPI POP DUP2 PUSH3 0x118C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x1170 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP2 SWAP1 PUSH3 0x168C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x16A2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x11B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x11CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x121A JUMPI PUSH3 0x121A PUSH3 0x11E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x1245 JUMPI PUSH3 0x1245 PUSH3 0x11E6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x11FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x12B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x12CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12DC DUP10 DUP4 DUP11 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x12F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1304 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x131B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1329 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x1340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x134F DUP9 DUP3 DUP10 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP3 PUSH3 0x135C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x13AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13B6 DUP4 PUSH3 0x135C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x13D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13F6 DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x11FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1454 DUP6 DUP3 DUP7 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x147D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x1463 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xC9C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x14A9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x1460 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x14E3 SWAP1 DUP4 ADD DUP7 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x14F7 DUP2 DUP7 PUSH3 0x148F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x150D DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x153E SWAP1 DUP4 ADD DUP5 PUSH3 0x148F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x1561 PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x1575 DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x162A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x165B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x1460 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x1687 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x118C PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x148F JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65643608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A26469706673582212208B MSIZE CALLDATALOAD LOG3 0x5F DUP11 0xD7 PUSH8 0xC2B0519FDB8B4C9 SSTORE 0x29 SWAP6 DUP2 PUSH18 0x6F37080B50CC8B6F2E3CF64736F6C634300 ADDMOD 0xE STOP CALLER ",
              "sourceMap": "2089:3575:36:-:0;;;1332:4:6;1289:48;;2089:3575:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_5881": {
                  "entryPoint": null,
                  "id": 5881,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@MINTER_TYPEHASH_5874": {
                  "entryPoint": null,
                  "id": 5874,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_authorizeUpgrade_6052": {
                  "entryPoint": 2421,
                  "id": 6052,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_checkOwner_68": {
                  "entryPoint": 2812,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_functionDelegateCall_523": {
                  "entryPoint": 3880,
                  "id": 523,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getImplementation_207": {
                  "entryPoint": null,
                  "id": 207,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_231": {
                  "entryPoint": 3026,
                  "id": 231,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_throwError_2588": {
                  "entryPoint": 3352,
                  "id": 2588,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 2904,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeToAndCallUUPS_327": {
                  "entryPoint": 2431,
                  "id": 327,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeToAndCall_274": {
                  "entryPoint": 3185,
                  "id": 274,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeTo_246": {
                  "entryPoint": 3814,
                  "id": 246,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@admin_5879": {
                  "entryPoint": null,
                  "id": 5879,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@artistContracts_5886": {
                  "entryPoint": 1922,
                  "id": 5886,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@beaconAddress_5883": {
                  "entryPoint": null,
                  "id": 5883,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@createArtist_5971": {
                  "entryPoint": 761,
                  "id": 5971,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@getAddressSlot_2264": {
                  "entryPoint": null,
                  "id": 2264,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getBooleanSlot_2275": {
                  "entryPoint": null,
                  "id": 2275,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_6017": {
                  "entryPoint": 1965,
                  "id": 6017,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@proxiableUUID_771": {
                  "entryPoint": 1576,
                  "id": 771,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@recover_2680": {
                  "entryPoint": 2986,
                  "id": 2680,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 1898,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setAdmin_6042": {
                  "entryPoint": 1758,
                  "id": 6042,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 2297,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_2653": {
                  "entryPoint": 3234,
                  "id": 2653,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_2727": {
                  "entryPoint": 4369,
                  "id": 2727,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_2838": {
                  "entryPoint": 4124,
                  "id": 2838,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@upgradeToAndCall_814": {
                  "entryPoint": 1356,
                  "id": 814,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@upgradeTo_793": {
                  "entryPoint": 1121,
                  "id": 793,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@verifyCallResult_2121": {
                  "entryPoint": 4430,
                  "id": 2121,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 4956,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 4604,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 4513,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_string": {
                  "entryPoint": 4729,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 4985,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr": {
                  "entryPoint": 5015,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 5655,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 5146,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 4764,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 5120,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 5263,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 5703,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5400,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5309,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_0_by_1_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5446,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5772,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5503,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5579,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 5733,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 5216,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 5681,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 4582,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:14623:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:46"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:46"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14:347:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "398:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "415:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "422:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "427:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "418:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "418:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "408:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "455:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "458:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "448:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "448:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "448:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "482:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "472:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "472:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "472:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "366:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "573:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "583:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "593:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "587:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "638:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "640:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "640:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "640:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "626:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "623:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "623:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "620:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "669:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "683:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "679:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "673:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "695:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "715:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "709:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "709:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "699:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "727:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "749:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "773:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "781:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "769:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "769:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "786:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "765:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "765:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "791:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "761:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "761:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "757:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "757:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "745:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "745:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "731:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "859:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "861:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "861:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "861:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "818:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "830:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "815:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "815:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "838:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "850:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "812:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "812:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "809:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "897:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "901:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "890:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "890:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "921:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "930:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "952:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "960:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "945:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "945:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "945:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1005:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1014:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1017:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1007:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1007:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1007:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "986:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "991:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "982:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "982:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1000:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "979:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "979:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "976:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1047:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1055:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1043:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1043:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1062:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1067:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1030:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1030:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1030:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1098:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1106:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1094:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1094:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1115:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1090:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1090:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1122:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1083:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1083:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1083:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "542:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "547:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "555:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "563:5:46",
                            "type": ""
                          }
                        ],
                        "src": "498:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1188:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1237:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1246:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1249:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1239:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1239:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1239:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1216:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1224:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1212:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1212:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1208:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1208:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1198:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1262:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1310:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1318:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1306:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1306:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1338:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1325:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1325:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1347:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1271:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1271:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1262:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1162:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1170:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1178:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1135:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1532:861:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1579:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1588:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1591:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1581:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1581:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1581:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1553:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1562:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1549:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1549:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1574:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1545:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1545:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1542:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1604:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1631:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1618:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1618:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1608:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1660:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1705:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1714:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1717:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1707:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1707:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1693:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1701:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1690:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1690:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1687:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1730:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1786:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1797:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1782:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1782:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1806:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1756:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1756:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1734:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1744:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1823:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "1833:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1850:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1860:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1850:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1877:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1910:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1921:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1906:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1906:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1893:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1893:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1881:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1940:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1950:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1937:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1937:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1934:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2011:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2022:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2007:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2033:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1989:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1989:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2050:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2083:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2094:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2079:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2079:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2066:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2066:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2054:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2127:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2136:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2139:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2129:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2129:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2129:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2113:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2123:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2110:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2107:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2152:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2184:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2195:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2180:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2180:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2206:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2162:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2162:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2223:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2267:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2252:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2239:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2239:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2227:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2300:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2309:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2312:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2302:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2302:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2302:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2286:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2296:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2283:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2283:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2280:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2325:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2357:9:46"
                                      },
                                      {
                                        "name": "offset_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2368:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2353:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2353:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2379:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2335:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2335:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2325:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1466:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1477:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1489:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1497:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1505:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1513:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1521:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1362:1031:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2499:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2521:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2532:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2517:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2517:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2551:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2566:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2582:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2587:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2578:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2578:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2591:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2574:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2574:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2562:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2562:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2544:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2544:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2468:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2479:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2490:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2398:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2707:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2717:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2740:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2725:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2717:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2759:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2770:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2752:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2752:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2752:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2676:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2687:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2698:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2606:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2837:124:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2847:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2869:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2856:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2856:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "2847:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2939:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2948:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2951:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2941:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2941:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2941:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2898:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2909:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2924:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2929:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2920:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2920:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2933:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "2916:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2916:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2905:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2905:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2895:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2895:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2888:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2888:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2885:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2816:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2827:5:46",
                            "type": ""
                          }
                        ],
                        "src": "2788:173:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3036:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3082:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3091:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3094:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3084:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3084:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3084:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3057:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3066:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3053:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3078:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3049:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3049:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3046:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3107:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3136:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3117:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3117:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3107:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3002:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3013:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3025:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2966:186:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3253:428:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3299:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3308:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3311:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3301:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3301:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3301:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3274:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3283:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3270:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3270:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3295:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3266:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3266:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3263:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3324:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3353:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3334:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3334:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3324:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3372:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3403:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3414:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3399:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3399:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3386:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3386:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3376:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3461:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3470:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3473:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3463:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3463:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3463:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3433:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3441:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3430:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3430:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3427:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3486:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3500:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3511:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3496:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3496:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3490:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3566:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3575:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3578:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3568:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3568:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3568:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3545:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3549:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3541:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3541:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3556:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3537:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3530:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3530:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3527:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3591:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3640:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3644:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3636:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3636:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3662:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3649:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3649:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3667:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3601:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3591:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3211:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3222:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3234:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3242:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3157:524:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3756:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3802:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3811:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3814:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3804:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3804:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3804:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3777:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3786:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3773:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3773:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3798:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3769:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3769:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3766:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3827:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3850:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3837:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3837:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3827:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3722:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3733:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3745:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3686:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3960:320:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4006:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4015:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4018:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4008:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4008:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4008:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3981:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3990:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3977:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3977:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4002:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3973:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3973:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3970:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4031:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4058:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4045:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4045:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4035:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4111:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4120:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4123:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4113:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4113:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4113:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4083:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4091:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4080:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4080:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4077:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4136:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4192:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4203:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4188:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4162:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4162:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4140:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4150:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4229:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "4239:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4256:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "4266:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4256:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3918:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3929:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3941:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3949:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3871:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4459:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4476:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4487:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4469:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4469:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4469:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4521:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4506:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4526:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4499:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4499:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4549:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4560:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4545:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4545:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4565:33:46",
                                    "type": "",
                                    "value": "invalid authorization signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4538:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4538:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4538:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4608:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4620:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4631:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4616:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4616:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4608:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4436:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4450:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4285:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4698:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4708:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4717:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4712:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4777:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4802:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4807:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4798:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4798:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4821:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4826:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4817:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4817:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4811:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4811:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4791:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4791:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4791:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4738:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4741:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4735:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4735:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4749:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4751:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4760:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4763:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4756:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4756:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4751:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4731:3:46",
                                "statements": []
                              },
                              "src": "4727:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4866:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4879:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "4884:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4875:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4875:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4893:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4868:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4868:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4868:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4855:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4858:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4852:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4852:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4849:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "4676:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "4681:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4686:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4645:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4958:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4968:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4988:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4982:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4982:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4972:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5010:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5015:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5003:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5003:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5003:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5057:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5064:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5053:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5075:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5080:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5071:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5071:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5087:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5031:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5031:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5031:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5103:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5118:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5131:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5139:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5127:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5127:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5148:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "5144:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5144:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5123:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5123:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5114:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5114:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5155:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5110:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5110:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5103:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4935:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4942:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4950:3:46",
                            "type": ""
                          }
                        ],
                        "src": "4908:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5416:400:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5433:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5448:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5464:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5469:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5460:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5460:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5473:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5456:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5456:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5444:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5444:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5426:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5426:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5426:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5497:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5508:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5493:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5493:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5513:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5486:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5486:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5486:31:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5526:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5558:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5570:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5581:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5566:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5566:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5540:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5540:46:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5530:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5606:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5617:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5602:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5602:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5626:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5634:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5622:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5622:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5595:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5595:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5595:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5654:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5686:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5694:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5668:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5668:33:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5658:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5721:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5732:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5717:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5717:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5741:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5749:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5737:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5710:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5710:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5710:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5769:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5795:6:46"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5803:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5777:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5777:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5769:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5361:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5372:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5380:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5388:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5396:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5407:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5171:645:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5968:168:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5985:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6000:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6016:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6021:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6012:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6012:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6025:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6008:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6008:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5996:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5996:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5978:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5978:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5978:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6049:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6060:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6045:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6045:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6065:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6038:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6038:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6038:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6077:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6103:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6115:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6126:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6111:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6111:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6085:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6085:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6077:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5929:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5940:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5948:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5959:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5821:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6346:257:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6363:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6374:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6356:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6356:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6356:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6401:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6412:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6397:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6397:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6417:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6390:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6390:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6390:30:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6429:59:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6461:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6484:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6469:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6443:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6443:45:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6433:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6508:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6519:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6504:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6504:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6528:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6536:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6524:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6524:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6497:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6497:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6497:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6556:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6582:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6590:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6564:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6564:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6556:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_0_by_1_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6299:9:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6310:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6318:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6326:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6337:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6141:462:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6782:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6799:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6810:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6792:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6792:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6792:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6833:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6844:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6829:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6849:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6822:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6822:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6822:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6872:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6883:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6868:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6868:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6888:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6861:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6861:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6861:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6943:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6954:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6939:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6939:18:46"
                                  },
                                  {
                                    "hexValue": "64656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6959:14:46",
                                    "type": "",
                                    "value": "delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6932:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6932:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6932:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6983:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6995:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7006:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6991:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6991:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6983:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6759:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6773:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6608:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7195:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7212:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7223:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7205:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7205:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7205:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7246:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7257:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7242:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7242:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7262:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7235:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7235:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7235:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7285:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7296:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7281:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7281:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7301:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7274:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7274:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7274:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7356:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7367:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7352:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7352:18:46"
                                  },
                                  {
                                    "hexValue": "6163746976652070726f7879",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7372:14:46",
                                    "type": "",
                                    "value": "active proxy"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7345:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7345:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7345:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7396:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7408:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7419:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7404:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7404:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7396:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7172:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7186:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7021:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7608:246:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7625:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7636:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7618:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7618:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7618:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7659:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7670:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7655:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7655:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7675:2:46",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7648:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7648:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7648:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7698:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7709:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7694:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7694:18:46"
                                  },
                                  {
                                    "hexValue": "555550535570677261646561626c653a206d757374206e6f742062652063616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7714:34:46",
                                    "type": "",
                                    "value": "UUPSUpgradeable: must not be cal"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7687:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7687:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7687:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7769:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7780:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7765:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7765:18:46"
                                  },
                                  {
                                    "hexValue": "6c6564207468726f7567682064656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7785:26:46",
                                    "type": "",
                                    "value": "led through delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7758:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7758:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7758:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7821:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7833:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7844:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7829:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7829:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7821:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7585:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7599:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7434:420:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8033:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8050:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8061:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8043:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8043:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8043:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8084:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8095:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8080:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8080:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8100:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8073:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8073:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8073:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8123:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8134:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8119:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8119:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8139:23:46",
                                    "type": "",
                                    "value": "invalid authorization"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8112:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8112:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8112:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8172:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8184:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8195:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8180:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8180:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8172:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8010:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8024:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7859:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8383:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8400:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8411:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8393:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8393:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8434:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8445:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8430:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8430:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8450:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8423:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8423:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8423:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8484:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8469:18:46"
                                  },
                                  {
                                    "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8489:23:46",
                                    "type": "",
                                    "value": "whitelist not enabled"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8462:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8462:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8462:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8522:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8534:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8545:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8530:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8530:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8522:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8360:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8374:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8209:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8688:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8698:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8710:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8721:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8706:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8706:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8698:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8740:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8751:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8733:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8733:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8733:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8778:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8789:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8774:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8774:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8798:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8814:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8819:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "8810:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8810:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8823:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "8806:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8806:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8794:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8794:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8767:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8767:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8767:60:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8649:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8660:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8668:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8679:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8559:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9086:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9103:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9112:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9117:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "9108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9108:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9096:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9096:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9096:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9143:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9148:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9139:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9139:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9152:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9132:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9132:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9132:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9179:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9184:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9175:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9175:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9189:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9168:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9168:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9168:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9205:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "9216:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9221:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9212:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9212:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "9205:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "9054:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9059:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9067:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9078:3:46",
                            "type": ""
                          }
                        ],
                        "src": "8838:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9409:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9426:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9437:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9419:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9419:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9460:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9471:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9456:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9456:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9476:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9449:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9449:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9449:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9499:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9510:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9495:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9495:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9515:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9488:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9488:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9488:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9570:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9581:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9566:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9566:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9586:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9559:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9559:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9559:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9604:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9616:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9627:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9612:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9612:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9604:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9386:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9400:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9235:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9723:103:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9769:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9778:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9781:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9771:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9771:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9771:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9744:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9753:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9740:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9740:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9765:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9736:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9736:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9733:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9794:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9810:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9804:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9804:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9794:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9689:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9700:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9712:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9642:184:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10005:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10022:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10033:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10015:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10015:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10056:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10067:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10052:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10052:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10072:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10045:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10045:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10045:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10095:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10106:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10091:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10091:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a206e657720696d706c656d656e74617469",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10111:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: new implementati"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10084:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10084:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10084:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10166:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10177:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10162:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10162:18:46"
                                  },
                                  {
                                    "hexValue": "6f6e206973206e6f742055555053",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10182:16:46",
                                    "type": "",
                                    "value": "on is not UUPS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10155:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10155:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10155:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10208:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10220:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10231:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10216:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10216:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10208:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9982:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9996:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9831:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10420:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10437:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10448:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10430:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10430:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10430:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10471:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10482:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10467:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10467:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10487:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10460:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10460:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10460:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10521:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10506:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f78",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10526:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: unsupported prox"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10499:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10499:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10581:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10592:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10577:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10577:18:46"
                                  },
                                  {
                                    "hexValue": "6961626c6555554944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10597:11:46",
                                    "type": "",
                                    "value": "iableUUID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10570:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10570:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10570:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10618:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10630:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10641:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10626:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10626:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10618:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10397:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10411:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10246:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10830:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10847:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10858:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10840:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10840:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10840:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10881:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10892:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10877:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10877:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10897:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10870:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10870:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10870:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10920:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10931:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10916:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10916:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10936:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10909:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10909:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10909:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10980:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10992:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11003:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10988:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10988:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10980:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10807:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10821:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10656:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11191:235:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11208:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11219:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11201:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11201:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11242:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11253:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11238:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11238:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11258:2:46",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11231:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11231:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11231:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11281:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11292:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11277:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11277:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11297:34:46",
                                    "type": "",
                                    "value": "ERC1967: new implementation is n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11270:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11270:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11270:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11352:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11363:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11348:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11348:18:46"
                                  },
                                  {
                                    "hexValue": "6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11368:15:46",
                                    "type": "",
                                    "value": "ot a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11341:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11341:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11341:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11393:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11405:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11416:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11401:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11401:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11393:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11168:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11182:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11017:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11463:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11480:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11487:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11492:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "11483:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11483:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11473:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11473:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11473:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11520:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11523:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11513:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11513:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11513:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11544:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11547:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11537:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11537:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11537:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11431:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11737:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11754:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11765:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11747:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11747:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11788:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11799:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11784:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11784:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11804:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11777:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11777:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11777:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11827:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11838:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11823:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11823:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11843:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11816:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11816:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11816:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11879:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11891:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11902:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11887:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11887:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11879:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11714:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11728:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11563:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12090:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12107:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12118:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12100:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12100:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12100:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12141:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12152:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12137:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12137:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12157:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12130:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12130:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12130:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12180:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12191:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12176:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12176:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12196:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12169:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12169:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12169:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12239:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12251:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12262:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12247:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12247:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12239:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12067:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12081:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11916:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12450:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12467:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12478:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12460:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12460:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12460:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12501:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12512:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12497:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12497:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12517:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12490:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12490:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12490:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12540:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12551:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12536:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12536:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12556:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12529:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12529:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12529:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12611:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12622:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12607:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12607:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12627:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12600:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12600:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12600:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12641:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12653:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12664:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12649:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12649:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12641:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12427:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12441:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12276:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12853:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12870:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12881:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12863:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12863:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12863:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12904:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12915:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12900:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12900:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12920:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12893:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12893:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12893:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12943:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12954:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12939:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12939:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12959:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12932:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12932:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12932:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13014:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13025:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13010:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13010:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13030:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13003:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13003:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13003:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13044:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13056:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13067:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13052:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13052:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13044:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12830:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12844:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12679:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13256:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13273:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13284:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13266:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13266:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13266:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13307:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13318:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13303:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13303:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13323:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13296:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13296:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13296:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13346:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13357:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13342:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13342:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13362:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13335:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13335:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13335:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13417:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13428:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13413:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13413:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13433:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13406:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13406:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13406:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13451:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13463:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13474:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13459:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13459:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13451:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13233:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13247:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13082:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13626:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13636:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13656:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13650:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13650:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "13640:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13698:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13706:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13694:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13694:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13713:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13718:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13672:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13672:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13672:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13734:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13745:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13750:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13741:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13741:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13734:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "13602:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13607:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "13618:3:46",
                            "type": ""
                          }
                        ],
                        "src": "13489:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13949:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13959:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13971:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13982:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13967:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13967:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13959:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14002:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14013:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13995:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13995:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13995:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14040:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14051:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14036:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14036:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14060:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14068:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14056:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14056:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14029:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14029:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14029:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14094:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14105:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14090:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14090:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14110:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14083:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14083:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14083:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14137:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14148:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14133:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14133:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14153:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14126:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14126:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14126:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13894:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13905:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13913:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13921:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13929:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13940:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13768:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14219:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14254:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14275:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14282:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14287:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "14278:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14278:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14268:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14268:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14268:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14319:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14322:4:46",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14312:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14312:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14312:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14347:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14350:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14340:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14340:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14235:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "14242:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "14238:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14238:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14232:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14232:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14229:136:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14374:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14385:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14388:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14381:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14381:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "14374:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14202:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14205:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "14211:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14171:225:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14522:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14539:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14550:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14532:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14532:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14532:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14562:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14588:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14600:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14611:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14596:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14596:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "14570:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14570:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14562:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14491:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14502:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14513:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14401:220:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_3), dataEnd)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"invalid authorization signature\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 128)\n        let tail_1 := abi_encode_string(value1, add(headStart, 128))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string(value2, tail_1)\n        mstore(add(headStart, 96), sub(tail_2, headStart))\n        tail := abi_encode_string(value3, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_rational_0_by_1_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"active proxy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n        mstore(add(headStart, 96), \"led through delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"invalid authorization\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"whitelist not enabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n        mstore(add(headStart, 96), \"on is not UUPS\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n        mstore(add(headStart, 96), \"iableUUID\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n        mstore(add(headStart, 96), \"ot a contract\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "721": [
                  {
                    "length": 32,
                    "start": 1131
                  },
                  {
                    "length": 32,
                    "start": 1198
                  },
                  {
                    "length": 32,
                    "start": 1366
                  },
                  {
                    "length": 32,
                    "start": 1433
                  },
                  {
                    "length": 32,
                    "start": 1589
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405260043610620000ef5760003560e01c80637e2ec6d01162000089578063e6adabfd1162000060578063e6adabfd1462000257578063f2fde38b146200027c578063f851a44014620002a1578063fa4d280c14620002c357600080fd5b80637e2ec6d014620001f05780638da5cb5b1462000212578063b16a43f0146200023257600080fd5b80634f1ef28611620000ca5780634f1ef286146200018457806352d1902d146200019b578063704b6c0214620001b3578063715018a614620001d857600080fd5b8063233654eb14620000f45780633644e51514620001365780633659cfe6146200015d575b600080fd5b3480156200010157600080fd5b5062000119620001133660046200129c565b620002f9565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200014357600080fd5b506200014e60cb5481565b6040519081526020016200012d565b3480156200016a57600080fd5b50620001826200017c36600462001379565b62000461565b005b620001826200019536600462001397565b6200054c565b348015620001a857600080fd5b506200014e62000628565b348015620001c057600080fd5b5062000182620001d236600462001379565b620006de565b348015620001e557600080fd5b50620001826200076a565b348015620001fd57600080fd5b5060cc5462000119906001600160a01b031681565b3480156200021f57600080fd5b506097546001600160a01b031662000119565b3480156200023f57600080fd5b50620001196200025136600462001400565b62000782565b3480156200026457600080fd5b5062000119620002763660046200141a565b620007ad565b3480156200028957600080fd5b50620001826200029b36600462001379565b620008f9565b348015620002ae57600080fd5b5060ca5462000119906001600160a01b031681565b348015620002d057600080fd5b506200014e7f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b0316620003148787620007ad565b6001600160a01b031614620003705760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc54604051339160009183916001600160a01b031690635f1e6f6d90620003a39084908b908b908b90602401620014bd565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051620003dd9062001193565b620003ea92919062001518565b8190604051809103906000f59050801580156200040b573d6000803e3d6000fd5b509050806001600160a01b03167f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0600088886040516200044e9392919062001546565b60405180910390a2979650505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620004ac5760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620004f760008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b031614620005205760405162461bcd60e51b81526004016200036790620015cb565b6200052b8162000975565b6040805160008082526020820190925262000549918391906200097f565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005975760405162461bcd60e51b815260040162000367906200157f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620005e260008051602062001f9c833981519152546001600160a01b031690565b6001600160a01b0316146200060b5760405162461bcd60e51b81526004016200036790620015cb565b620006168262000975565b62000624828260016200097f565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620006ca5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840162000367565b5060008051602062001f9c83398151915290565b6097546001600160a01b031633148062000702575060ca546001600160a01b031633145b620007485760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b604482015260640162000367565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6200077462000afc565b62000780600062000b58565b565b60cd81815481106200079357600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b0316620008025760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b604482015260640162000367565b600060cb547f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2620008303390565b604051602001620008549291909182526001600160a01b0316602082015260400190565b604051602081830303815290604052805190602001206040516020016200089292919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090506000620008f085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000baa9050565b95945050505050565b6200090362000afc565b6001600160a01b0381166200096a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000367565b620005498162000b58565b6200054962000afc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620009ba57620009b58362000bd2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000a17575060408051601f3d908101601f1916820190925262000a149181019062001617565b60015b62000a7c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000367565b60008051602062001f9c833981519152811462000aee5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000367565b50620009b583838362000c71565b6097546001600160a01b03163314620007805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000367565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080600062000bbb858562000ca2565b9150915062000bca8162000d18565b509392505050565b6001600160a01b0381163b62000c415760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000367565b60008051602062001f9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000c7c8362000ee6565b60008251118062000c8a5750805b15620009b55762000c9c838362000f28565b50505050565b600080825160410362000cdc5760208301516040840151606085015160001a62000ccf878285856200101c565b9450945050505062000d11565b825160400362000d09576020830151604084015162000cfd86838362001111565b93509350505062000d11565b506000905060025b9250929050565b600081600481111562000d2f5762000d2f62001631565b0362000d385750565b600181600481111562000d4f5762000d4f62001631565b0362000d9e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640162000367565b600281600481111562000db55762000db562001631565b0362000e045760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640162000367565b600381600481111562000e1b5762000e1b62001631565b0362000e755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840162000367565b600481600481111562000e8c5762000e8c62001631565b03620005495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840162000367565b62000ef18162000bd2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b62000f925760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000367565b600080846001600160a01b03168460405162000faf919062001647565b600060405180830381855af49150503d806000811462000fec576040519150601f19603f3d011682016040523d82523d6000602084013e62000ff1565b606091505b5091509150620008f0828260405180606001604052806027815260200162001fbc602791396200114e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111562001055575060009050600362001108565b8460ff16601b141580156200106e57508460ff16601c14155b1562001081575060009050600462001108565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015620010d6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620011015760006001925092505062001108565b9150600090505b94509492505050565b6000806001600160ff1b038316816200113060ff86901c601b62001665565b905062001140878288856200101c565b935093505050935093915050565b606083156200115f5750816200118c565b825115620011705782518084602001fd5b8160405162461bcd60e51b81526004016200036791906200168c565b9392505050565b6108fa80620016a283390190565b60008083601f840112620011b457600080fd5b50813567ffffffffffffffff811115620011cd57600080fd5b60208301915083602082850101111562000d1157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156200121a576200121a620011e6565b604051601f8501601f19908116603f01168101908282118183101715620012455762001245620011e6565b816040528093508581528686860111156200125f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200128b57600080fd5b6200118c83833560208501620011fc565b600080600080600060808688031215620012b557600080fd5b853567ffffffffffffffff80821115620012ce57600080fd5b620012dc89838a01620011a1565b90975095506020880135915080821115620012f657600080fd5b6200130489838a0162001279565b945060408801359150808211156200131b57600080fd5b6200132989838a0162001279565b935060608801359150808211156200134057600080fd5b506200134f8882890162001279565b9150509295509295909350565b80356001600160a01b03811681146200137457600080fd5b919050565b6000602082840312156200138c57600080fd5b6200118c826200135c565b60008060408385031215620013ab57600080fd5b620013b6836200135c565b9150602083013567ffffffffffffffff811115620013d357600080fd5b8301601f81018513620013e557600080fd5b620013f685823560208401620011fc565b9150509250929050565b6000602082840312156200141357600080fd5b5035919050565b600080602083850312156200142e57600080fd5b823567ffffffffffffffff8111156200144657600080fd5b6200145485828601620011a1565b90969095509350505050565b60005b838110156200147d57818101518382015260200162001463565b8381111562000c9c5750506000910152565b60008151808452620014a981602086016020860162001460565b601f01601f19169290920160200192915050565b6001600160a01b0385168152608060208201819052600090620014e3908301866200148f565b8281036040840152620014f781866200148f565b905082810360608401526200150d81856200148f565b979650505050505050565b6001600160a01b03831681526040602082018190526000906200153e908301846200148f565b949350505050565b8381526060602082015260006200156160608301856200148f565b82810360408401526200157581856200148f565b9695505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200162a57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600082516200165b81846020870162001460565b9190910192915050565b600082198211156200168757634e487b7160e01b600052601160045260246000fd5b500190565b6020815260006200118c60208301846200148f56fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208b5935a35f8ad7670c2b0519fdb8b4c9552995817106f37080b50cc8b6f2e3cf64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0xEF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E2EC6D0 GT PUSH3 0x89 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x257 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x27C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2A1 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x1F0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x212 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH3 0xCA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x184 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x19B JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1B3 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0xF4 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x136 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x15D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x113 CALLDATASIZE PUSH1 0x4 PUSH3 0x129C JUMP JUMPDEST PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x12D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x17C CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x461 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x182 PUSH3 0x195 CALLDATASIZE PUSH1 0x4 PUSH3 0x1397 JUMP JUMPDEST PUSH3 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH3 0x628 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x1D2 CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x6DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x76A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x251 CALLDATASIZE PUSH1 0x4 PUSH3 0x1400 JUMP JUMPDEST PUSH3 0x782 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x119 PUSH3 0x276 CALLDATASIZE PUSH1 0x4 PUSH3 0x141A JUMP JUMPDEST PUSH3 0x7AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x182 PUSH3 0x29B CALLDATASIZE PUSH1 0x4 PUSH3 0x1379 JUMP JUMPDEST PUSH3 0x8F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x119 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x14E PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x314 DUP8 DUP8 PUSH3 0x7AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x40 MLOAD CALLER SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x5F1E6F6D SWAP1 PUSH3 0x3A3 SWAP1 DUP5 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x24 ADD PUSH3 0x14BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x3DD SWAP1 PUSH3 0x1193 JUMP JUMPDEST PUSH3 0x3EA SWAP3 SWAP2 SWAP1 PUSH3 0x1518 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH1 0x0 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH3 0x44E SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x4AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x4F7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x520 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x52B DUP2 PUSH3 0x975 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x549 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0x97F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x597 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x157F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x5E2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x60B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP1 PUSH3 0x15CB JUMP JUMPDEST PUSH3 0x616 DUP3 PUSH3 0x975 JUMP JUMPDEST PUSH3 0x624 DUP3 DUP3 PUSH1 0x1 PUSH3 0x97F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x702 JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x748 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x774 PUSH3 0xAFC JUMP JUMPDEST PUSH3 0x780 PUSH1 0x0 PUSH3 0xB58 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x802 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xCB SLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH3 0x830 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x854 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x892 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x8F0 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xBAA SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x903 PUSH3 0xAFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x96A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0x549 DUP2 PUSH3 0xB58 JUMP JUMPDEST PUSH3 0x549 PUSH3 0xAFC JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0x9BA JUMPI PUSH3 0x9B5 DUP4 PUSH3 0xBD2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xA17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xA14 SWAP2 DUP2 ADD SWAP1 PUSH3 0x1617 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xA7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST POP PUSH3 0x9B5 DUP4 DUP4 DUP4 PUSH3 0xC71 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xBBB DUP6 DUP6 PUSH3 0xCA2 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xBCA DUP2 PUSH3 0xD18 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xC41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x1F9C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xC7C DUP4 PUSH3 0xEE6 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0xC8A JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0x9B5 JUMPI PUSH3 0xC9C DUP4 DUP4 PUSH3 0xF28 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0xCDC JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0xCCF DUP8 DUP3 DUP6 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0xD11 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0xD09 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0xCFD DUP7 DUP4 DUP4 PUSH3 0x1111 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0xD11 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD2F JUMPI PUSH3 0xD2F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD38 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xD4F JUMPI PUSH3 0xD4F PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xD9E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xDB5 JUMPI PUSH3 0xDB5 PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE1B JUMPI PUSH3 0xE1B PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0xE75 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0xE8C JUMPI PUSH3 0xE8C PUSH3 0x1631 JUMP JUMPDEST SUB PUSH3 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH3 0xEF1 DUP2 PUSH3 0xBD2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0xF92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x367 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xFAF SWAP2 SWAP1 PUSH3 0x1647 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0xFEC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xFF1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x8F0 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1FBC PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x114E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x1055 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1108 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x106E JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x1081 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1108 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x1101 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1108 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x1130 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x1665 JUMP JUMPDEST SWAP1 POP PUSH3 0x1140 DUP8 DUP3 DUP9 DUP6 PUSH3 0x101C JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x115F JUMPI POP DUP2 PUSH3 0x118C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x1170 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x367 SWAP2 SWAP1 PUSH3 0x168C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x16A2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x11B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x11CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x121A JUMPI PUSH3 0x121A PUSH3 0x11E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x1245 JUMPI PUSH3 0x1245 PUSH3 0x11E6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x11FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x12B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x12CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12DC DUP10 DUP4 DUP11 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x12F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1304 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x131B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1329 DUP10 DUP4 DUP11 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x1340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x134F DUP9 DUP3 DUP10 ADD PUSH3 0x1279 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x118C DUP3 PUSH3 0x135C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x13AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13B6 DUP4 PUSH3 0x135C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x13D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x13F6 DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x11FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1454 DUP6 DUP3 DUP7 ADD PUSH3 0x11A1 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x147D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x1463 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xC9C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x14A9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x1460 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x14E3 SWAP1 DUP4 ADD DUP7 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x14F7 DUP2 DUP7 PUSH3 0x148F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x150D DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x153E SWAP1 DUP4 ADD DUP5 PUSH3 0x148F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x1561 PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x148F JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x1575 DUP2 DUP6 PUSH3 0x148F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x162A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x165B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x1460 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x1687 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x118C PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x148F JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65643608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A26469706673582212208B MSIZE CALLDATALOAD LOG3 0x5F DUP11 0xD7 PUSH8 0xC2B0519FDB8B4C9 SSTORE 0x29 SWAP6 DUP2 PUSH18 0x6F37080B50CC8B6F2E3CF64736F6C634300 ADDMOD 0xE STOP CALLER ",
              "sourceMap": "2089:3575:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3428:860;;;;;;;;;;-1:-1:-1;3428:860:36;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2562:32:46;;;2544:51;;2532:2;2517:18;3428:860:36;;;;;;;;2784:31;;;;;;;;;;;;;;;;;;;2752:25:46;;;2740:2;2725:18;2784:31:36;2606:177:46;3315:197:6;;;;;;;;;;-1:-1:-1;3315:197:6;;;;;:::i;:::-;;:::i;:::-;;3761:222;;;;;;:::i;:::-;;:::i;3004:131::-;;;;;;;;;;;;;:::i;5354:172:36:-;;;;;;;;;;-1:-1:-1;5354:172:36;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;2929:28:36:-;;;;;;;;;;-1:-1:-1;2929:28:36;;;;-1:-1:-1;;;;;2929:28:36;;;1441:85:0;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;3031:32:36;;;;;;;;;;-1:-1:-1;3031:32:36;;;;;:::i;:::-;;:::i;4393:844::-;;;;;;;;;;-1:-1:-1;4393:844:36;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;2659:20:36:-;;;;;;;;;;-1:-1:-1;2659:20:36;;;;-1:-1:-1;;;;;2659:20:36;;;2383:85;;;;;;;;;;;;2425:43;2383:85;;3428:860;3650:5;;3598:7;;-1:-1:-1;;;;;3650:5:36;3626:20;3636:9;;3626;:20::i;:::-;-1:-1:-1;;;;;3626:29:36;;3617:75;;;;-1:-1:-1;;;3617:75:36;;4487:2:46;3617:75:36;;;4469:21:46;4526:2;4506:18;;;4499:30;4565:33;4545:18;;;4538:61;4616:18;;3617:75:36;;;;;;;;;3879:13;;4045:74;;929:10:12;;3703:12:36;;929:10:12;;-1:-1:-1;;;;;3879:13:36;;4068:10;;4045:74;;929:10:12;;4094:5:36;;4101:7;;4110:8;;4045:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4045:74:36;;;;;;;;;;;3838:291;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;3818:311;;4242:5;-1:-1:-1;;;;;4201:48:36;;4215:1;4218:5;4225:7;4201:48;;;;;;;;:::i;:::-;;;;;;;;4275:5;3428:860;-1:-1:-1;;;;;;;3428:860:36:o;3315:197:6:-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3398:36:::1;3416:17;3398;:36::i;:::-;3485:12;::::0;;3495:1:::1;3485:12:::0;;;::::1;::::0;::::1;::::0;;;3444:61:::1;::::0;3466:17;;3485:12;3444:21:::1;:61::i;:::-;3315:197:::0;:::o;3761:222::-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3878:36:::1;3896:17;3878;:36::i;:::-;3924:52;3946:17;3965:4;3971;3924:21;:52::i;:::-;3761:222:::0;;:::o;3004:131::-;3082:7;2324:4;-1:-1:-1;;;;;2333:6:6;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:6;;7636:2:46;2308:92:6;;;7618:21:46;7675:2;7655:18;;;7648:30;7714:34;7694:18;;;7687:62;7785:26;7765:18;;;7758:54;7829:19;;2308:92:6;7434:420:46;2308:92:6;-1:-1:-1;;;;;;;;;;;;3004:131:6;:::o;5354:172:36:-;1513:6:0;;-1:-1:-1;;;;;1513:6:0;929:10:12;5418:23:36;;:48;;-1:-1:-1;5445:5:36;;-1:-1:-1;;;;;5445:5:36;929:10:12;5445:21:36;5418:48;5410:82;;;;-1:-1:-1;;;5410:82:36;;8061:2:46;5410:82:36;;;8043:21:46;8100:2;8080:18;;;8073:30;-1:-1:-1;;;8119:18:46;;;8112:51;8180:18;;5410:82:36;7859:345:46;5410:82:36;5502:5;:17;;-1:-1:-1;;;;;;5502:17:36;-1:-1:-1;;;;;5502:17:36;;;;;;;;;;5354:172::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;3031:32:36:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3031:32:36;;-1:-1:-1;3031:32:36;:::o;4393:844::-;4486:5;;4459:7;;-1:-1:-1;;;;;4486:5:36;4478:53;;;;-1:-1:-1;;;4478:53:36;;8411:2:46;4478:53:36;;;8393:21:46;8450:2;8430:18;;;8423:30;-1:-1:-1;;;8469:18:46;;;8462:51;8530:18;;4478:53:36;8209:345:46;4478:53:36;4751:14;4820:16;;2425:43;4876:12;929:10:12;;850:96;4876:12:36;4848:41;;;;;;;;8733:25:46;;;-1:-1:-1;;;;;8794:32:46;8789:2;8774:18;;8767:60;8721:2;8706:18;;8559:274;4848:41:36;;;;;;;;;;;;;4838:52;;;;;;4791:100;;;;;;;;-1:-1:-1;;;9096:27:46;;9148:1;9139:11;;9132:27;;;;9184:2;9175:12;;9168:28;9221:2;9212:12;;8838:392;4791:100:36;;;;;;;;;;;;;4768:133;;;;;;4751:150;;5145:24;5172:25;5187:9;;5172:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5172:6:36;;:25;-1:-1:-1;;5172:14:36;:25;-1:-1:-1;5172:25:36:i;:::-;5145:52;4393:844;-1:-1:-1;;;;;4393:844:36:o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;9437:2:46;2401:73:0::1;::::0;::::1;9419:21:46::0;9476:2;9456:18;;;9449:30;9515:34;9495:18;;;9488:62;-1:-1:-1;;;9566:18:46;;;9559:36;9612:19;;2401:73:0::1;9235:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;5596:66:36:-:0;1334:13:0;:11;:13::i;2938:974:3:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;:::-;2938:974;;;:::o;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:3;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:3;;;;;;;;-1:-1:-1;;3531:63:3;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:3;;10033:2:46;3758:56:3;;;10015:21:46;10072:2;10052:18;;;10045:30;10111:34;10091:18;;;10084:62;-1:-1:-1;;;10162:18:46;;;10155:44;10216:19;;3758:56:3;9831:410:46;3527:302:3;-1:-1:-1;;;;;;;;;;;3644:28:3;;3636:82;;;;-1:-1:-1;;;3636:82:3;;10448:2:46;3636:82:3;;;10430:21:46;10487:2;10467:18;;;10460:30;10526:34;10506:18;;;10499:62;-1:-1:-1;;;10577:18:46;;;10570:39;10626:19;;3636:82:3;10246:405:46;3636:82:3;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;10858:2:46;1654:68:0;;;10840:21:46;;;10877:18;;;10870:30;10936:34;10916:18;;;10909:62;10988:18;;1654:68:0;10656:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;4424:227:16:-;4502:7;4522:17;4541:18;4563:27;4574:4;4580:9;4563:10;:27::i;:::-;4521:69;;;;4600:18;4612:5;4600:11;:18::i;:::-;-1:-1:-1;4635:9:16;4424:227;-1:-1:-1;;;4424:227:16:o;1805:281:3:-;-1:-1:-1;;;;;1476:19:11;;;1878:106:3;;;;-1:-1:-1;;;1878:106:3;;11219:2:46;1878:106:3;;;11201:21:46;11258:2;11238:18;;;11231:30;11297:34;11277:18;;;11270:62;-1:-1:-1;;;11348:18:46;;;11341:43;11401:19;;1878:106:3;11017:409:46;1878:106:3;-1:-1:-1;;;;;;;;;;;1994:85:3;;-1:-1:-1;;;;;;1994:85:3;-1:-1:-1;;;;;1994:85:3;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;2265:1373:16:-;2346:7;2355:12;2576:9;:16;2596:2;2576:22;2572:1060;;2912:4;2897:20;;2891:27;2961:4;2946:20;;2940:27;3018:4;3003:20;;2997:27;2614:9;2989:36;3059:25;3070:4;2989:36;2891:27;2940;3059:10;:25::i;:::-;3052:32;;;;;;;;;2572:1060;3105:9;:16;3125:2;3105:22;3101:531;;3421:4;3406:20;;3400:27;3471:4;3456:20;;3450:27;3511:23;3522:4;3400:27;3450;3511:10;:23::i;:::-;3504:30;;;;;;;;3101:531;-1:-1:-1;3581:1:16;;-1:-1:-1;3585:35:16;3101:531;2265:1373;;;;;:::o;570:631::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:561;;570:631;:::o;634:561::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:465;;788:34;;-1:-1:-1;;;788:34:16;;11765:2:46;788:34:16;;;11747:21:46;11804:2;11784:18;;;11777:30;11843:26;11823:18;;;11816:54;11887:18;;788:34:16;11563:348:46;730:465:16;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:356;;903:41;;-1:-1:-1;;;903:41:16;;12118:2:46;903:41:16;;;12100:21:46;12157:2;12137:18;;;12130:30;12196:33;12176:18;;;12169:61;12247:18;;903:41:16;11916:355:46;839:356:16;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:234;;1020:44;;-1:-1:-1;;;1020:44:16;;12478:2:46;1020:44:16;;;12460:21:46;12517:2;12497:18;;;12490:30;12556:34;12536:18;;;12529:62;-1:-1:-1;;;12607:18:46;;;12600:32;12649:19;;1020:44:16;12276:398:46;961:234:16;1094:30;1085:5;:39;;;;;;;;:::i;:::-;;1081:114;;1140:44;;-1:-1:-1;;;1140:44:16;;12881:2:46;1140:44:16;;;12863:21:46;12920:2;12900:18;;;12893:30;12959:34;12939:18;;;12932:62;-1:-1:-1;;;13010:18:46;;;13003:32;13052:19;;1140:44:16;12679:398:46;2192:152:3;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:3;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:11;;;7195:88:3;;;;-1:-1:-1;;;7195:88:3;;13284:2:46;7195:88:3;;;13266:21:46;13323:2;13303:18;;;13296:30;13362:34;13342:18;;;13335:62;-1:-1:-1;;;13413:18:46;;;13406:36;13459:19;;7195:88:3;13082:402:46;7195:88:3;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:3;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;5832:1603:16:-;5958:7;;6882:66;6869:79;;6865:161;;;-1:-1:-1;6980:1:16;;-1:-1:-1;6984:30:16;6964:51;;6865:161;7039:1;:7;;7044:2;7039:7;;:18;;;;;7050:1;:7;;7055:2;7050:7;;7039:18;7035:100;;;-1:-1:-1;7089:1:16;;-1:-1:-1;7093:30:16;7073:51;;7035:100;7246:24;;;7229:14;7246:24;;;;;;;;;13995:25:46;;;14068:4;14056:17;;14036:18;;;14029:45;;;;14090:18;;;14083:34;;;14133:18;;;14126:34;;;7246:24:16;;13967:19:46;;7246:24:16;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7246:24:16;;-1:-1:-1;;7246:24:16;;;-1:-1:-1;;;;;;;7284:20:16;;7280:101;;7336:1;7340:29;7320:50;;;;;;;7280:101;7399:6;-1:-1:-1;7407:20:16;;-1:-1:-1;5832:1603:16;;;;;;;;:::o;4905:336::-;5015:7;;-1:-1:-1;;;;;5060:80:16;;5015:7;5166:25;5182:3;5167:18;;;5189:2;5166:25;:::i;:::-;5150:42;;5209:25;5220:4;5226:1;5229;5232;5209:10;:25::i;:::-;5202:32;;;;;;4905:336;;;;;;:::o;6622:742:11:-;6768:12;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;6933:415::-;6622:742;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:347:46:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:46;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;366:127;427:10;422:3;418:20;415:1;408:31;458:4;455:1;448:15;482:4;479:1;472:15;498:632;563:5;593:18;634:2;626:6;623:14;620:40;;;640:18;;:::i;:::-;715:2;709:9;683:2;769:15;;-1:-1:-1;;765:24:46;;;791:2;761:33;757:42;745:55;;;815:18;;;835:22;;;812:46;809:72;;;861:18;;:::i;:::-;901:10;897:2;890:22;930:6;921:15;;960:6;952;945:22;1000:3;991:6;986:3;982:16;979:25;976:45;;;1017:1;1014;1007:12;976:45;1067:6;1062:3;1055:4;1047:6;1043:17;1030:44;1122:1;1115:4;1106:6;1098;1094:19;1090:30;1083:41;;;;498:632;;;;;:::o;1135:222::-;1178:5;1231:3;1224:4;1216:6;1212:17;1208:27;1198:55;;1249:1;1246;1239:12;1198:55;1271:80;1347:3;1338:6;1325:20;1318:4;1310:6;1306:17;1271:80;:::i;1362:1031::-;1489:6;1497;1505;1513;1521;1574:3;1562:9;1553:7;1549:23;1545:33;1542:53;;;1591:1;1588;1581:12;1542:53;1631:9;1618:23;1660:18;1701:2;1693:6;1690:14;1687:34;;;1717:1;1714;1707:12;1687:34;1756:58;1806:7;1797:6;1786:9;1782:22;1756:58;:::i;:::-;1833:8;;-1:-1:-1;1730:84:46;-1:-1:-1;1921:2:46;1906:18;;1893:32;;-1:-1:-1;1937:16:46;;;1934:36;;;1966:1;1963;1956:12;1934:36;1989:52;2033:7;2022:8;2011:9;2007:24;1989:52;:::i;:::-;1979:62;;2094:2;2083:9;2079:18;2066:32;2050:48;;2123:2;2113:8;2110:16;2107:36;;;2139:1;2136;2129:12;2107:36;2162:52;2206:7;2195:8;2184:9;2180:24;2162:52;:::i;:::-;2152:62;;2267:2;2256:9;2252:18;2239:32;2223:48;;2296:2;2286:8;2283:16;2280:36;;;2312:1;2309;2302:12;2280:36;;2335:52;2379:7;2368:8;2357:9;2353:24;2335:52;:::i;:::-;2325:62;;;1362:1031;;;;;;;;:::o;2788:173::-;2856:20;;-1:-1:-1;;;;;2905:31:46;;2895:42;;2885:70;;2951:1;2948;2941:12;2885:70;2788:173;;;:::o;2966:186::-;3025:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:52;;;3094:1;3091;3084:12;3046:52;3117:29;3136:9;3117:29;:::i;3157:524::-;3234:6;3242;3295:2;3283:9;3274:7;3270:23;3266:32;3263:52;;;3311:1;3308;3301:12;3263:52;3334:29;3353:9;3334:29;:::i;:::-;3324:39;;3414:2;3403:9;3399:18;3386:32;3441:18;3433:6;3430:30;3427:50;;;3473:1;3470;3463:12;3427:50;3496:22;;3549:4;3541:13;;3537:27;-1:-1:-1;3527:55:46;;3578:1;3575;3568:12;3527:55;3601:74;3667:7;3662:2;3649:16;3644:2;3640;3636:11;3601:74;:::i;:::-;3591:84;;;3157:524;;;;;:::o;3686:180::-;3745:6;3798:2;3786:9;3777:7;3773:23;3769:32;3766:52;;;3814:1;3811;3804:12;3766:52;-1:-1:-1;3837:23:46;;3686:180;-1:-1:-1;3686:180:46:o;3871:409::-;3941:6;3949;4002:2;3990:9;3981:7;3977:23;3973:32;3970:52;;;4018:1;4015;4008:12;3970:52;4058:9;4045:23;4091:18;4083:6;4080:30;4077:50;;;4123:1;4120;4113:12;4077:50;4162:58;4212:7;4203:6;4192:9;4188:22;4162:58;:::i;:::-;4239:8;;4136:84;;-1:-1:-1;3871:409:46;-1:-1:-1;;;;3871:409:46:o;4645:258::-;4717:1;4727:113;4741:6;4738:1;4735:13;4727:113;;;4817:11;;;4811:18;4798:11;;;4791:39;4763:2;4756:10;4727:113;;;4858:6;4855:1;4852:13;4849:48;;;-1:-1:-1;;4893:1:46;4875:16;;4868:27;4645:258::o;4908:::-;4950:3;4988:5;4982:12;5015:6;5010:3;5003:19;5031:63;5087:6;5080:4;5075:3;5071:14;5064:4;5057:5;5053:16;5031:63;:::i;:::-;5148:2;5127:15;-1:-1:-1;;5123:29:46;5114:39;;;;5155:4;5110:50;;4908:258;-1:-1:-1;;4908:258:46:o;5171:645::-;-1:-1:-1;;;;;5444:32:46;;5426:51;;5513:3;5508:2;5493:18;;5486:31;;;-1:-1:-1;;5540:46:46;;5566:19;;5558:6;5540:46;:::i;:::-;5634:9;5626:6;5622:22;5617:2;5606:9;5602:18;5595:50;5668:33;5694:6;5686;5668:33;:::i;:::-;5654:47;;5749:9;5741:6;5737:22;5732:2;5721:9;5717:18;5710:50;5777:33;5803:6;5795;5777:33;:::i;:::-;5769:41;5171:645;-1:-1:-1;;;;;;;5171:645:46:o;5821:315::-;-1:-1:-1;;;;;5996:32:46;;5978:51;;6065:2;6060;6045:18;;6038:30;;;-1:-1:-1;;6085:45:46;;6111:18;;6103:6;6085:45;:::i;:::-;6077:53;5821:315;-1:-1:-1;;;;5821:315:46:o;6141:462::-;6374:6;6363:9;6356:25;6417:2;6412;6401:9;6397:18;6390:30;6337:4;6443:45;6484:2;6473:9;6469:18;6461:6;6443:45;:::i;:::-;6536:9;6528:6;6524:22;6519:2;6508:9;6504:18;6497:50;6564:33;6590:6;6582;6564:33;:::i;:::-;6556:41;6141:462;-1:-1:-1;;;;;;6141:462:46:o;6608:408::-;6810:2;6792:21;;;6849:2;6829:18;;;6822:30;6888:34;6883:2;6868:18;;6861:62;-1:-1:-1;;;6954:2:46;6939:18;;6932:42;7006:3;6991:19;;6608:408::o;7021:::-;7223:2;7205:21;;;7262:2;7242:18;;;7235:30;7301:34;7296:2;7281:18;;7274:62;-1:-1:-1;;;7367:2:46;7352:18;;7345:42;7419:3;7404:19;;7021:408::o;9642:184::-;9712:6;9765:2;9753:9;9744:7;9740:23;9736:32;9733:52;;;9781:1;9778;9771:12;9733:52;-1:-1:-1;9804:16:46;;9642:184;-1:-1:-1;9642:184:46:o;11431:127::-;11492:10;11487:3;11483:20;11480:1;11473:31;11523:4;11520:1;11513:15;11547:4;11544:1;11537:15;13489:274;13618:3;13656:6;13650:13;13672:53;13718:6;13713:3;13706:4;13698:6;13694:17;13672:53;:::i;:::-;13741:16;;;;;13489:274;-1:-1:-1;;13489:274:46:o;14171:225::-;14211:3;14242:1;14238:6;14235:1;14232:13;14229:136;;;14287:10;14282:3;14278:20;14275:1;14268:31;14322:4;14319:1;14312:15;14350:4;14347:1;14340:15;14229:136;-1:-1:-1;14381:9:46;;14171:225::o;14401:220::-;14550:2;14539:9;14532:21;14513:4;14570:45;14611:2;14600:9;14596:18;14588:6;14570:45;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1643200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "2341",
                "MINTER_TYPEHASH()": "283",
                "admin()": "2392",
                "artistContracts(uint256)": "4670",
                "beaconAddress()": "2349",
                "createArtist(bytes,string,string,string)": "infinite",
                "getSigner(bytes)": "infinite",
                "owner()": "2365",
                "proxiableUUID()": "infinite",
                "renounceOwnership()": "infinite",
                "setAdmin(address)": "28923",
                "transferOwnership(address)": "28380",
                "upgradeTo(address)": "infinite",
                "upgradeToAndCall(address,bytes)": "infinite"
              },
              "internal": {
                "_authorizeUpgrade(address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "MINTER_TYPEHASH()": "fa4d280c",
              "admin()": "f851a440",
              "artistContracts(uint256)": "b16a43f0",
              "beaconAddress()": "7e2ec6d0",
              "createArtist(bytes,string,string,string)": "233654eb",
              "getSigner(bytes)": "e6adabfd",
              "owner()": "8da5cb5b",
              "proxiableUUID()": "52d1902d",
              "renounceOwnership()": "715018a6",
              "setAdmin(address)": "704b6c02",
              "transferOwnership(address)": "f2fde38b",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"artistId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"artistAddress\",\"type\":\"address\"}],\"name\":\"CreatedArtist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artistContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createArtist\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Sound.xyz - @gigamesh & @vigneshka\",\"kind\":\"dev\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"params\":{\"_name\":\"Name of the artist\"}},\"getSigner(bytes)\":{\"params\":{\"signature\":\"Signature of the message\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAdmin(address)\":{\"params\":{\"_newAdmin\":\"address of new admin\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"The Artist Creator factory contract\",\"version\":1},\"userdoc\":{\"events\":{\"CreatedArtist(uint256,string,string,address)\":{\"notice\":\"Emitted when an Artist is created\"}},\"kind\":\"user\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"notice\":\"Creates a new artist contract as a factory with a deterministic address\"},\"getSigner(bytes)\":{\"notice\":\"Gets signer address of signature\"},\"setAdmin(address)\":{\"notice\":\"Sets the admin for authorizing artist deployment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistCreatorV3.sol\":\"ArtistCreatorV3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n        require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n        return _IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeTo} and {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"../ERC1967/ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\\n *\\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\\n * conflict with the storage layout of the implementation behind the proxy.\\n *\\n * _Available since v3.4._\\n */\\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the proxy with `beacon`.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\\n     * constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract with the interface {IBeacon}.\\n     */\\n    constructor(address beacon, bytes memory data) payable {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current beacon address.\\n     */\\n    function _beacon() internal view virtual returns (address) {\\n        return _getBeacon();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address of the associated beacon.\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return IBeacon(_getBeacon()).implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract.\\n     * - The implementation returned by `beacon` must be a contract.\\n     */\\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n}\\n\",\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"},\"contracts/ArtistCreatorV3.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.14;\\n\\n/*\\n               ^###############################################&5               \\n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \\n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \\n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \\n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \\n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \\n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \\n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \\n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \\n\\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\\n\\n/// @title The Artist Creator factory contract\\n/// @author Sound.xyz - @gigamesh & @vigneshka\\ncontract ArtistCreatorV3 is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSAUpgradeable for bytes32;\\n\\n    // ============ Storage ============\\n\\n    // Typehash of the signed message provided to createArtist\\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\\n    // ID for each Artist proxy // DEPRECATED in ArtistCreatorV2\\n    CountersUpgradeable.Counter private atArtistId;\\n    // Address used for signature verification, changeable by owner\\n    address public admin;\\n    // Domain separator is used to prevent replay attacks using signatures from different networks\\n    bytes32 public DOMAIN_SEPARATOR;\\n    // The address of UpgradeableBeacon, which was deployed in the initialize function of ArtistCreator.sol\\n    address public beaconAddress;\\n    // Array of the Artist proxies // DEPRECATED in ArtistCreatorV2\\n    address[] public artistContracts;\\n\\n    // ============ Events ============\\n\\n    /// Emitted when an Artist is created\\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\\n\\n    // ============ Functions ============\\n\\n    /// @notice Creates a new artist contract as a factory with a deterministic address\\n    /// @param _name Name of the artist\\n    function createArtist(\\n        bytes calldata signature,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public returns (address) {\\n        require((getSigner(signature) == admin), 'invalid authorization signature');\\n\\n        bytes32 salt = bytes32(uint256(uint160(_msgSender())));\\n\\n        // salted contract creation using create2\\n        BeaconProxy proxy = new BeaconProxy{salt: salt}(\\n            beaconAddress,\\n            // 0x5f1e6f6d is the initialize function selector on ArtistV6 (hash of \\\"function initialize(address, string, string, string)\\\")\\n            abi.encodeWithSelector(0x5f1e6f6d, _msgSender(), _name, _symbol, _baseURI)\\n        );\\n\\n        // the first parameter, artistId, is deprecated\\n        emit CreatedArtist(0, _name, _symbol, address(proxy));\\n\\n        return address(proxy);\\n    }\\n\\n    /// @notice Gets signer address of signature\\n    /// @param signature Signature of the message\\n    function getSigner(bytes calldata signature) public view returns (address) {\\n        require(admin != address(0), 'whitelist not enabled');\\n        // Verify EIP-712 signature by recreating the data structure\\n        // that we signed on the client side, and then using that to recover\\n        // the address that signed the signature for this data.\\n        bytes32 digest = keccak256(\\n            abi.encodePacked('\\\\x19\\\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, _msgSender())))\\n        );\\n        // Use the recover method to see what address was used to create\\n        // the signature on this data.\\n        // Note that if the digest doesn't exactly match what was signed we'll\\n        // get a random recovered address.\\n        address recoveredAddress = digest.recover(signature);\\n        return recoveredAddress;\\n    }\\n\\n    /// @notice Sets the admin for authorizing artist deployment\\n    /// @param _newAdmin address of new admin\\n    function setAdmin(address _newAdmin) external {\\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\\n        admin = _newAdmin;\\n    }\\n\\n    /// @notice Authorizes upgrades\\n    /// @dev DO NOT REMOVE!\\n    function _authorizeUpgrade(address) internal override onlyOwner {}\\n}\\n\",\"keccak256\":\"0xccabc93dfe6bdb62a266b2b934e147e00d9fe0f212e03969fb9f7543a3a8a060\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 528,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 825,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "__gap",
                "offset": 0,
                "slot": "101",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 5877,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "atArtistId",
                "offset": 0,
                "slot": "201",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 5879,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "admin",
                "offset": 0,
                "slot": "202",
                "type": "t_address"
              },
              {
                "astId": 5881,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "DOMAIN_SEPARATOR",
                "offset": 0,
                "slot": "203",
                "type": "t_bytes32"
              },
              {
                "astId": 5883,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "beaconAddress",
                "offset": 0,
                "slot": "204",
                "type": "t_address"
              },
              {
                "astId": 5886,
                "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                "label": "artistContracts",
                "offset": 0,
                "slot": "205",
                "type": "t_array(t_address)dyn_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistCreatorV3.sol:ArtistCreatorV3",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "events": {
              "CreatedArtist(uint256,string,string,address)": {
                "notice": "Emitted when an Artist is created"
              }
            },
            "kind": "user",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "notice": "Creates a new artist contract as a factory with a deterministic address"
              },
              "getSigner(bytes)": {
                "notice": "Gets signer address of signature"
              },
              "setAdmin(address)": {
                "notice": "Sets the admin for authorizing artist deployment"
              }
            },
            "version": 1
          }
        }
      },
      "contracts/ArtistV2.sol": {
        "ArtistV2": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "enum ArtistV2.TimeType",
                  "name": "timeType",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint32",
                  "name": "newTime",
                  "type": "uint32"
                }
              ],
              "name": "AuctionTimeSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "presaleQuantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "EditionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                }
              ],
              "name": "EditionPurchased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "PRESALE_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                }
              ],
              "name": "buyEdition",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_presaleQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                }
              ],
              "name": "createEdition",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "depositedForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "editions",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "presaleQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "getOwnersOfEdition",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "getTokenIdsOfEdition",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_artistId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "setEndTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                }
              ],
              "name": "setStartTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "withdrawFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdrawnForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "SoundXYZ - @gigamesh & @vigneshka",
            "details": "Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "buyEdition(uint256,bytes)": {
                "params": {
                  "_editionId": "The id of the edition to purchase",
                  "_signature": "A signed message for authorizing presale purchases"
                }
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": {
                "params": {
                  "_endTime": "The end time of the auction, in seconds since unix epoch.",
                  "_fundingRecipient": "The account that will receive sales revenue.",
                  "_presaleQuantity": "The quantity of presale tokens.",
                  "_price": "The price at which each token will be sold, in ETH.",
                  "_quantity": "The maximum number of tokens that can be sold.",
                  "_royaltyBPS": "The royalty amount in bps.",
                  "_signerAddress": "signer address.",
                  "_startTime": "The start time of the auction, in seconds since unix epoch."
                }
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "getOwnersOfEdition(uint256)": {
                "params": {
                  "_editionId": "edition id"
                }
              },
              "getTokenIdsOfEdition(uint256)": {
                "params": {
                  "_editionId": "edition id"
                }
              },
              "initialize(address,uint256,string,string,string)": {
                "params": {
                  "_name": "Name of artist",
                  "_owner": "Owner of edition"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "royaltyInfo(uint256,uint256)": {
                "params": {
                  "_salePrice": "Sale price for the token",
                  "_tokenId": "token id"
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "supportsInterface(bytes4)": {
                "details": "https://eips.ethereum.org/EIPS/eip-165"
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Artist",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506131a2806100206000396000f3fe6080604052600436106101e35760003560e01c806374e7918911610102578063c87b56dd11610095578063e8a3d48511610064578063e8a3d485146106b1578063e985e9c5146106c6578063f2fde38b1461070f578063fbab9e041461072f57600080fd5b8063c87b56dd14610603578063d3bb052814610623578063d4ae752214610650578063e1a3d5731461068457600080fd5b8063abccf3dd116100d1578063abccf3dd14610590578063abfc83a0146105a3578063b88d4fde146105c3578063bb314ca1146105e357600080fd5b806374e79189146105105780638da5cb5b1461053d57806395d89b411461055b578063a22cb4651461057057600080fd5b8063279c806e1161017a5780636352211e116101495780636352211e1461049b57806370a08231146104bb578063715018a6146104db57806373aaf879146104f057600080fd5b8063279c806e146103295780632a55205a1461040f57806342842e0e1461044e578063602787ed1461046e57600080fd5b806313dd2960116101b657806313dd296014610299578063155dd5ee146102c657806318160ddd146102e657806323b872dd1461030957600080fd5b806301ffc9a7146101e857806306fdde031461021d578063081812fc1461023f578063095ea7b314610277575b600080fd5b3480156101f457600080fd5b506102086102033660046127d7565b61074f565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023261077a565b6040516102149190612853565b34801561024b57600080fd5b5061025f61025a366004612866565b61080c565b6040516001600160a01b039091168152602001610214565b34801561028357600080fd5b50610297610292366004612894565b610833565b005b3480156102a557600080fd5b506102b96102b4366004612866565b61094d565b60405161021491906128c0565b3480156102d257600080fd5b506102976102e1366004612866565b610a2e565b3480156102f257600080fd5b506102fb610a8e565b604051908152602001610214565b34801561031557600080fd5b5061029761032436600461290d565b610aaa565b34801561033557600080fd5b506103b1610344366004612866565b60cc6020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919263ffffffff808416936401000000008104821693600160401b8204831693600160601b8304841693600160801b8404811693600160a01b900416911689565b604080516001600160a01b039a8b168152602081019990995263ffffffff978816908901529486166060880152928516608087015290841660a0860152831660c085015290911660e083015290911661010082015261012001610214565b34801561041b57600080fd5b5061042f61042a36600461294e565b610adb565b604080516001600160a01b039093168352602083019190915201610214565b34801561045a57600080fd5b5061029761046936600461290d565b610bd4565b34801561047a57600080fd5b506102fb610489366004612866565b60cd6020526000908152604090205481565b3480156104a757600080fd5b5061025f6104b6366004612866565b610bef565b3480156104c757600080fd5b506102fb6104d6366004612970565b610c4f565b3480156104e757600080fd5b50610297610cd5565b3480156104fc57600080fd5b5061029761050b3660046129a6565b610ce9565b34801561051c57600080fd5b5061053061052b366004612866565b610fe6565b6040516102149190612a3c565b34801561054957600080fd5b506097546001600160a01b031661025f565b34801561056757600080fd5b506102326110a9565b34801561057c57600080fd5b5061029761058b366004612a74565b6110b8565b61029761059e366004612ab2565b6110c3565b3480156105af57600080fd5b506102976105be366004612bda565b61146b565b3480156105cf57600080fd5b506102976105de366004612c7f565b6115f0565b3480156105ef57600080fd5b506102976105fe366004612cff565b611628565b34801561060f57600080fd5b5061023261061e366004612866565b6116a3565b34801561062f57600080fd5b506102fb61063e366004612866565b60cf6020526000908152604090205481565b34801561065c57600080fd5b506102fb7fb0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d04581565b34801561069057600080fd5b506102fb61069f366004612866565b60ce6020526000908152604090205481565b3480156106bd57600080fd5b5061023261176e565b3480156106d257600080fd5b506102086106e1366004612d2b565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561071b57600080fd5b5061029761072a366004612970565b611796565b34801561073b57600080fd5b5061029761074a366004612cff565b61180f565b600063152a902d60e11b6001600160e01b03198316148061077457506107748261187d565b92915050565b60606065805461078990612d59565b80601f01602080910402602001604051908101604052809291908181526020018280546107b590612d59565b80156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b6000610817826118cd565b506000908152606960205260409020546001600160a01b031690565b600061083e82610bef565b9050806001600160a01b0316836001600160a01b0316036108b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108cc57506108cc81336106e1565b61093e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108a7565b610948838361192c565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561098157610981612b2e565b6040519080825280602002602001820160405280156109aa578160200160208202803683370190505b509050600060015b60ca54811015610a2557600081815260cd6020526040902054859003610a13576109db81610bef565b8383815181106109ed576109ed612d93565b6001600160a01b039092166020928302919091019091015281610a0f81612dbf565b9250505b80610a1d81612dbf565b9150506109b2565b50909392505050565b600081815260cf602090815260408083205460ce909252822054610a529190612dd8565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a8a906001600160a01b03168261199a565b5050565b60006001610a9b60ca5490565b610aa59190612dd8565b905090565b610ab43382611aa7565b610ad05760405162461bcd60e51b81526004016108a790612def565b610948838383611b26565b600082815260cd602090815260408083205480845260cc835281842082516101208101845281546001600160a01b03908116808352600184015496830196909652600283015463ffffffff80821696840196909652640100000000810486166060840152600160401b810486166080840152600160601b8104861660a0840152600160801b8104861660c0840152600160a01b900490941660e08201526003909101549092166101008301528392909190610b9e5751925060009150610bcd9050565b6080810151815163ffffffff90911690612710610bbb8389612e3d565b610bc59190612e72565b945094505050505b9250929050565b610948838383604051806020016040528060008152506115f0565b6000818152606760205260408120546001600160a01b0316806107745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a7565b60006001600160a01b038216610cb95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108a7565b506001600160a01b031660009081526068602052604090205490565b610cdd611cc2565b610ce76000611d1c565b565b610cf1611cc2565b610cfc866001612e86565b63ffffffff168263ffffffff1610610d565760405162461bcd60e51b815260206004820152601860248201527f50726573616c65207175616e7469747920746f6f20626967000000000000000060448201526064016108a7565b63ffffffff821615610db8576001600160a01b038116610db85760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f74206265203000000000000060448201526064016108a7565b604051806101200160405280896001600160a01b03168152602001888152602001600063ffffffff1681526020018763ffffffff1681526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff168152602001826001600160a01b031681525060cc6000610e3c60cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355938501516001830155918401516002820180546060870151608088015160a089015160c08a015160e08b015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b93909116929092029190911790556101009093015160039093018054909216921691909117905560cb54604080516001600160a01b03808c168252602082018b905263ffffffff808b16938301939093528289166060830152828816608083015282871660a083015291851660c082015290831660e08201527fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3906101000160405180910390a2610fdc60cb80546001019055565b5050505050505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561101a5761101a612b2e565b604051908082528060200260200182016040528015611043578160200160208202803683370190505b509050600060015b60ca54811015610a2557600081815260cd6020526040902054859003611097578083838151811061107e5761107e612d93565b60209081029190910101528161109381612dbf565b9250505b806110a181612dbf565b91505061104b565b60606066805461078990612d59565b610a8a338383611d6e565b600083815260cc60205260409020600181015460029091015463ffffffff640100000000820481169181811691600160601b8204811691600160801b8104821691600160a01b90910416846111535760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108a7565b8463ffffffff168463ffffffff16106111b85760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b60648201526084016108a7565b8534101561121a5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b60648201526084016108a7565b428363ffffffff16111561131a5760008163ffffffff1611801561124957508063ffffffff168463ffffffff16105b6112ad5760405162461bcd60e51b815260206004820152602f60248201527f4e6f2070726573616c6520617661696c61626c652026206f70656e206175637460448201526e1a5bdb881b9bdd081cdd185c9d1959608a1b60648201526084016108a7565b600089815260cc60205260409020600301546001600160a01b03166112d389898c611e3c565b6001600160a01b03161461131a5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064016108a7565b428263ffffffff16116113635760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b60448201526064016108a7565b600089815260ce602052604081208054349290611381908490612eae565b9091555050600089815260cc60205260408120600201805463ffffffff16916113a983612ec6565b91906101000a81548163ffffffff021916908363ffffffff160217905550506113da336113d560ca5490565b611f68565b8860cd60006113e860ca5490565b81526020810191909152604001600020553361140360ca5490565b60008b815260cc602090815260409182902060020154915163ffffffff90921682528c917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461146060ca80546001019055565b505050505050505050565b600054610100900460ff161580801561148b5750600054600160ff909116105b806114a55750303b1580156114a5575060005460ff166001145b6115085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108a7565b6000805460ff19166001179055801561152b576000805461ff0019166101001790555b61153584846120aa565b61153d6120db565b61154686611796565b816115508661210a565b604051602001611561929190612ee9565b60405160208183030381529060405260c99080519060200190611585929190612728565b5061159460ca80546001019055565b6115a260cb80546001019055565b80156115e8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6115fa3383611aa7565b6116165760405162461bcd60e51b81526004016108a790612def565b6116228484848461220b565b50505050565b611630611cc2565b600082815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff85169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90611697906001908690612f3a565b60405180910390a25050565b6000818152606760205260409020546060906001600160a01b03166117225760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016108a7565b600082815260cd602052604090205460c99061173d9061210a565b6117468461210a565b60405160200161175893929190612fff565b6040516020818303038152906040529050919050565b606060c96040516020016117829190613045565b604051602081830303815290604052905090565b61179e611cc2565b6001600160a01b0381166118035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61180c81611d1c565b50565b611817611cc2565b600082815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff861690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c9161169791908690612f3a565b60006001600160e01b031982166380ac58cd60e01b14806118ae57506001600160e01b03198216635b5e139f60e01b145b8061077457506301ffc9a760e01b6001600160e01b0319831614610774565b6000818152606760205260409020546001600160a01b031661180c5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a7565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061196182610bef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156119ea5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a37576040519150601f19603f3d011682016040523d82523d6000602084013e611a3c565b606091505b50509050806109485760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b60648201526084016108a7565b600080611ab383610bef565b9050806001600160a01b0316846001600160a01b03161480611afa57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611b1e5750836001600160a01b0316611b138461080c565b6001600160a01b0316145b949350505050565b826001600160a01b0316611b3982610bef565b6001600160a01b031614611b9d5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016108a7565b6001600160a01b038216611bff5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b611c0a60008261192c565b6001600160a01b0383166000908152606860205260408120805460019290611c33908490612dd8565b90915550506001600160a01b0382166000908152606860205260408120805460019290611c61908490612eae565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610ce75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a7565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611dcf5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108a7565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000807fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e346546604051602001611e7b929190918252602082015260400190565b60408051808303601f1901815282825280516020918201207fb0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d04582850152308484015233606085015260808085018890528351808603909101815260a085019093528251929091019190912061190160f01b60c084015260c283019190915260e2820152610102016040516020818303038152906040528051906020012090506000611f5e86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061223e9050565b9695505050505050565b6001600160a01b038216611fbe5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108a7565b6000818152606760205260409020546001600160a01b0316156120235760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a7565b6001600160a01b038216600090815260686020526040812080546001929061204c908490612eae565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff166120d15760405162461bcd60e51b81526004016108a79061306b565b610a8a8282612262565b600054610100900460ff166121025760405162461bcd60e51b81526004016108a79061306b565b610ce76122b0565b6060816000036121315750506040805180820190915260018152600360fc1b602082015290565b8160005b811561215b578061214581612dbf565b91506121549050600a83612e72565b9150612135565b60008167ffffffffffffffff81111561217657612176612b2e565b6040519080825280601f01601f1916602001820160405280156121a0576020820181803683370190505b5090505b8415611b1e576121b5600183612dd8565b91506121c2600a866130b6565b6121cd906030612eae565b60f81b8183815181106121e2576121e2612d93565b60200101906001600160f81b031916908160001a905350612204600a86612e72565b94506121a4565b612216848484611b26565b612222848484846122e0565b6116225760405162461bcd60e51b81526004016108a7906130ca565b600080600061224d85856123e1565b9150915061225a8161244c565b509392505050565b600054610100900460ff166122895760405162461bcd60e51b81526004016108a79061306b565b815161229c906065906020850190612728565b508051610948906066906020840190612728565b600054610100900460ff166122d75760405162461bcd60e51b81526004016108a79061306b565b610ce733611d1c565b60006001600160a01b0384163b156123d657604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061232490339089908890889060040161311c565b6020604051808303816000875af192505050801561235f575060408051601f3d908101601f1916820190925261235c9181019061314f565b60015b6123bc573d80801561238d576040519150601f19603f3d011682016040523d82523d6000602084013e612392565b606091505b5080516000036123b45760405162461bcd60e51b81526004016108a7906130ca565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b1e565b506001949350505050565b60008082516041036124175760208301516040840151606085015160001a61240b87828585612602565b94509450505050610bcd565b825160400361244057602083015160408401516124358683836126ef565b935093505050610bcd565b50600090506002610bcd565b600081600481111561246057612460612f24565b036124685750565b600181600481111561247c5761247c612f24565b036124c95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108a7565b60028160048111156124dd576124dd612f24565b0361252a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108a7565b600381600481111561253e5761253e612f24565b036125965760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108a7565b60048160048111156125aa576125aa612f24565b0361180c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108a7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561263957506000905060036126e6565b8460ff16601b1415801561265157508460ff16601c14155b1561266257506000905060046126e6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156126b6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126df576000600192509250506126e6565b9150600090505b94509492505050565b6000806001600160ff1b0383168161270c60ff86901c601b612eae565b905061271a87828885612602565b935093505050935093915050565b82805461273490612d59565b90600052602060002090601f016020900481019282612756576000855561279c565b82601f1061276f57805160ff191683800117855561279c565b8280016001018555821561279c579182015b8281111561279c578251825591602001919060010190612781565b506127a89291506127ac565b5090565b5b808211156127a857600081556001016127ad565b6001600160e01b03198116811461180c57600080fd5b6000602082840312156127e957600080fd5b81356127f4816127c1565b9392505050565b60005b838110156128165781810151838201526020016127fe565b838111156116225750506000910152565b6000815180845261283f8160208601602086016127fb565b601f01601f19169290920160200192915050565b6020815260006127f46020830184612827565b60006020828403121561287857600080fd5b5035919050565b6001600160a01b038116811461180c57600080fd5b600080604083850312156128a757600080fd5b82356128b28161287f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156129015783516001600160a01b0316835292840192918401916001016128dc565b50909695505050505050565b60008060006060848603121561292257600080fd5b833561292d8161287f565b9250602084013561293d8161287f565b929592945050506040919091013590565b6000806040838503121561296157600080fd5b50508035926020909101359150565b60006020828403121561298257600080fd5b81356127f48161287f565b803563ffffffff811681146129a157600080fd5b919050565b600080600080600080600080610100898b0312156129c357600080fd5b88356129ce8161287f565b9750602089013596506129e360408a0161298d565b95506129f160608a0161298d565b94506129ff60808a0161298d565b9350612a0d60a08a0161298d565b9250612a1b60c08a0161298d565b915060e0890135612a2b8161287f565b809150509295985092959890939650565b6020808252825182820181905260009190848201906040850190845b8181101561290157835183529284019291840191600101612a58565b60008060408385031215612a8757600080fd5b8235612a928161287f565b915060208301358015158114612aa757600080fd5b809150509250929050565b600080600060408486031215612ac757600080fd5b83359250602084013567ffffffffffffffff80821115612ae657600080fd5b818601915086601f830112612afa57600080fd5b813581811115612b0957600080fd5b876020828501011115612b1b57600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612b5f57612b5f612b2e565b604051601f8501601f19908116603f01168101908282118183101715612b8757612b87612b2e565b81604052809350858152868686011115612ba057600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612bcb57600080fd5b6127f483833560208501612b44565b600080600080600060a08688031215612bf257600080fd5b8535612bfd8161287f565b945060208601359350604086013567ffffffffffffffff80821115612c2157600080fd5b612c2d89838a01612bba565b94506060880135915080821115612c4357600080fd5b612c4f89838a01612bba565b93506080880135915080821115612c6557600080fd5b50612c7288828901612bba565b9150509295509295909350565b60008060008060808587031215612c9557600080fd5b8435612ca08161287f565b93506020850135612cb08161287f565b925060408501359150606085013567ffffffffffffffff811115612cd357600080fd5b8501601f81018713612ce457600080fd5b612cf387823560208401612b44565b91505092959194509250565b60008060408385031215612d1257600080fd5b82359150612d226020840161298d565b90509250929050565b60008060408385031215612d3e57600080fd5b8235612d498161287f565b91506020830135612aa78161287f565b600181811c90821680612d6d57607f821691505b602082108103612d8d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612dd157612dd1612da9565b5060010190565b600082821015612dea57612dea612da9565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615612e5757612e57612da9565b500290565b634e487b7160e01b600052601260045260246000fd5b600082612e8157612e81612e5c565b500490565b600063ffffffff808316818516808303821115612ea557612ea5612da9565b01949350505050565b60008219821115612ec157612ec1612da9565b500190565b600063ffffffff808316818103612edf57612edf612da9565b6001019392505050565b60008351612efb8184602088016127fb565b835190830190612f0f8183602088016127fb565b602f60f81b9101908152600101949350505050565b634e487b7160e01b600052602160045260246000fd5b6040810160028410612f5c57634e487b7160e01b600052602160045260246000fd5b9281526020015290565b8054600090600181811c9080831680612f8057607f831692505b60208084108203612fa157634e487b7160e01b600052602260045260246000fd5b818015612fb55760018114612fc657612ff3565b60ff19861689528489019650612ff3565b60008881526020902060005b86811015612feb5781548b820152908501908301612fd2565b505084890196505b50505050505092915050565b600061300b8286612f66565b845161301b8183602089016127fb565b602f60f81b910190815283516130388160018401602088016127fb565b0160010195945050505050565b60006130518284612f66565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000826130c5576130c5612e5c565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f5e90830184612827565b60006020828403121561316157600080fd5b81516127f4816127c156fea26469706673582212206e0f6c3171437367122d5bd46629e4b754dcebde268603958b3f5340ed658af964736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31A2 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x74E79189 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6C6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0xD4AE7522 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xABCCF3DD GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xABCCF3DD EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x5C3 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x74E79189 EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4DB JUMPI DUP1 PUSH4 0x73AAF879 EQ PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x13DD2960 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x277 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D7 JUMP JUMPDEST PUSH2 0x74F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x214 SWAP2 SWAP1 PUSH2 0x2853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25F PUSH2 0x25A CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0x80C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x2894 JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0x94D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x214 SWAP2 SWAP1 PUSH2 0x28C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x2E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0xA8E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x290D JUMP JUMPDEST PUSH2 0xAAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x335 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B1 PUSH2 0x344 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP4 DIV DUP5 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND SWAP2 AND DUP10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH4 0xFFFFFFFF SWAP8 DUP9 AND SWAP1 DUP10 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP3 DUP6 AND PUSH1 0x80 DUP8 ADD MSTORE SWAP1 DUP5 AND PUSH1 0xA0 DUP7 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP6 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42F PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x294E JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x469 CALLDATASIZE PUSH1 0x4 PUSH2 0x290D JUMP JUMPDEST PUSH2 0xBD4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x489 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25F PUSH2 0x4B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0xBEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x4D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2970 JUMP JUMPDEST PUSH2 0xC4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0xCD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x50B CALLDATASIZE PUSH1 0x4 PUSH2 0x29A6 JUMP JUMPDEST PUSH2 0xCE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x530 PUSH2 0x52B CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0xFE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x214 SWAP2 SWAP1 PUSH2 0x2A3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x10A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x58B CALLDATASIZE PUSH1 0x4 PUSH2 0x2A74 JUMP JUMPDEST PUSH2 0x10B8 JUMP JUMPDEST PUSH2 0x297 PUSH2 0x59E CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB2 JUMP JUMPDEST PUSH2 0x10C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x5BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2BDA JUMP JUMPDEST PUSH2 0x146B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x5DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C7F JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x5FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2CFF JUMP JUMPDEST PUSH2 0x1628 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x61E CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0x16A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x63E CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH32 0xB0B05FBA96C122A3DB5D352971BB77A4E982B43F6B3A779BEB0DCCE9D261D045 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x176E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x72A CALLDATASIZE PUSH1 0x4 PUSH2 0x2970 JUMP JUMPDEST PUSH2 0x1796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x74A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CFF JUMP JUMPDEST PUSH2 0x180F JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x774 JUMPI POP PUSH2 0x774 DUP3 PUSH2 0x187D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x789 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B5 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x802 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x802 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x817 DUP3 PUSH2 0x18CD JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83E DUP3 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x8CC JUMPI POP PUSH2 0x8CC DUP2 CALLER PUSH2 0x6E1 JUMP JUMPDEST PUSH2 0x93E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x948 DUP4 DUP4 PUSH2 0x192C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x981 JUMPI PUSH2 0x981 PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9AA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xA13 JUMPI PUSH2 0x9DB DUP2 PUSH2 0xBEF JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9ED JUMPI PUSH2 0x9ED PUSH2 0x2D93 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0xA0F DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xA1D DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x9B2 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xA52 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA8A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x199A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA9B PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xAA5 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xAB4 CALLER DUP3 PUSH2 0x1AA7 JUMP JUMPDEST PUSH2 0xAD0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x948 DUP4 DUP4 DUP4 PUSH2 0x1B26 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP1 DUP5 MSTORE PUSH1 0xCC DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP3 MLOAD PUSH2 0x120 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH5 0x100000000 DUP2 DIV DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP7 AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP5 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0xB9E JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xBCD SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xBBB DUP4 DUP10 PUSH2 0x2E3D JUMP JUMPDEST PUSH2 0xBC5 SWAP2 SWAP1 PUSH2 0x2E72 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x948 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x774 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xCB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xCDD PUSH2 0x1CC2 JUMP JUMPDEST PUSH2 0xCE7 PUSH1 0x0 PUSH2 0x1D1C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCF1 PUSH2 0x1CC2 JUMP JUMPDEST PUSH2 0xCFC DUP7 PUSH1 0x1 PUSH2 0x2E86 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND LT PUSH2 0xD56 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726573616C65207175616E7469747920746F6F206269670000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xE3C PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE SWAP4 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP2 DUP5 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0xE0 DUP12 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP12 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP10 AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 DUP9 AND PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP8 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP2 DUP6 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0xFDC PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x101A JUMPI PUSH2 0x101A PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1043 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x1097 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x107E JUMPI PUSH2 0x107E PUSH2 0x2D93 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0x1093 DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x10A1 DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x104B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x789 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST PUSH2 0xA8A CALLER DUP4 DUP4 PUSH2 0x1D6E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV AND DUP5 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x11B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST DUP6 CALLVALUE LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x1249 JUMPI POP DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT JUMPDEST PUSH2 0x12AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2070726573616C6520617661696C61626C652026206F70656E2061756374 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x1A5BDB881B9BDD081CDD185C9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12D3 DUP10 DUP10 DUP13 PUSH2 0x1E3C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x131A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1381 SWAP1 DUP5 SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x13A9 DUP4 PUSH2 0x2EC6 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x13DA CALLER PUSH2 0x13D5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1F68 JUMP JUMPDEST DUP9 PUSH1 0xCD PUSH1 0x0 PUSH2 0x13E8 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x1403 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP13 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1460 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x148B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x14A5 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1508 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x152B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1535 DUP5 DUP5 PUSH2 0x20AA JUMP JUMPDEST PUSH2 0x153D PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x1546 DUP7 PUSH2 0x1796 JUMP JUMPDEST DUP2 PUSH2 0x1550 DUP7 PUSH2 0x210A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1561 SWAP3 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1585 SWAP3 SWAP2 SWAP1 PUSH2 0x2728 JUMP JUMPDEST POP PUSH2 0x1594 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x15A2 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x15E8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x15FA CALLER DUP4 PUSH2 0x1AA7 JUMP JUMPDEST PUSH2 0x1616 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x1622 DUP5 DUP5 DUP5 DUP5 PUSH2 0x220B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1630 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x1697 SWAP1 PUSH1 0x1 SWAP1 DUP7 SWAP1 PUSH2 0x2F3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1722 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x173D SWAP1 PUSH2 0x210A JUMP JUMPDEST PUSH2 0x1746 DUP5 PUSH2 0x210A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1758 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1782 SWAP2 SWAP1 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x179E PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1803 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x180C DUP2 PUSH2 0x1D1C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1817 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x1697 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0x2F3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x18AE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x774 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x774 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x180C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1961 DUP3 PUSH2 0xBEF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x19EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1A37 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1A3C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x948 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AB3 DUP4 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1AFA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x1B1E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B13 DUP5 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B39 DUP3 PUSH2 0xBEF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1BFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x1C0A PUSH1 0x0 DUP3 PUSH2 0x192C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1C33 SWAP1 DUP5 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1C61 SWAP1 DUP5 SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1DCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E7B SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH32 0xB0B05FBA96C122A3DB5D352971BB77A4E982B43F6B3A779BEB0DCCE9D261D045 DUP3 DUP6 ADD MSTORE ADDRESS DUP5 DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP6 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE2 DUP3 ADD MSTORE PUSH2 0x102 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1F5E DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH2 0x223E SWAP1 POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2023 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x204C SWAP1 DUP5 SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x20D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST PUSH2 0xA8A DUP3 DUP3 PUSH2 0x2262 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2102 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST PUSH2 0xCE7 PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2131 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x215B JUMPI DUP1 PUSH2 0x2145 DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP PUSH2 0x2154 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2E72 JUMP JUMPDEST SWAP2 POP PUSH2 0x2135 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2176 JUMPI PUSH2 0x2176 PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21A0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x1B1E JUMPI PUSH2 0x21B5 PUSH1 0x1 DUP4 PUSH2 0x2DD8 JUMP JUMPDEST SWAP2 POP PUSH2 0x21C2 PUSH1 0xA DUP7 PUSH2 0x30B6 JUMP JUMPDEST PUSH2 0x21CD SWAP1 PUSH1 0x30 PUSH2 0x2EAE JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x21E2 JUMPI PUSH2 0x21E2 PUSH2 0x2D93 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2204 PUSH1 0xA DUP7 PUSH2 0x2E72 JUMP JUMPDEST SWAP5 POP PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0x2216 DUP5 DUP5 DUP5 PUSH2 0x1B26 JUMP JUMPDEST PUSH2 0x2222 DUP5 DUP5 DUP5 DUP5 PUSH2 0x22E0 JUMP JUMPDEST PUSH2 0x1622 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x30CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x224D DUP6 DUP6 PUSH2 0x23E1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x225A DUP2 PUSH2 0x244C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2289 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST DUP2 MLOAD PUSH2 0x229C SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2728 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x948 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2728 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x22D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST PUSH2 0xCE7 CALLER PUSH2 0x1D1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x23D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x2324 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x311C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x235F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x235C SWAP2 DUP2 ADD SWAP1 PUSH2 0x314F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x23BC JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x238D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2392 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x23B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x30CA JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x1B1E JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x2417 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x240B DUP8 DUP3 DUP6 DUP6 PUSH2 0x2602 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xBCD JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x2440 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2435 DUP7 DUP4 DUP4 PUSH2 0x26EF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xBCD JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xBCD JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2460 JUMPI PUSH2 0x2460 PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x2468 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x247C JUMPI PUSH2 0x247C PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x24C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x24DD JUMPI PUSH2 0x24DD PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x252A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x253E JUMPI PUSH2 0x253E PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x2596 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x25AA JUMPI PUSH2 0x25AA PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x180C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x2639 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x26E6 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x2651 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2662 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x26E6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x26DF JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x26E6 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x270C PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x2EAE JUMP JUMPDEST SWAP1 POP PUSH2 0x271A DUP8 DUP3 DUP9 DUP6 PUSH2 0x2602 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2734 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2756 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x279C JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x276F JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x279C JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x279C JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x279C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2781 JUMP JUMPDEST POP PUSH2 0x27A8 SWAP3 SWAP2 POP PUSH2 0x27AC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x27A8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x27AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x180C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x27F4 DUP2 PUSH2 0x27C1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2816 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x27FE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1622 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x283F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x27FB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x27F4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2827 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x180C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x28B2 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2901 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x28DC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x292D DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x293D DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x27F4 DUP2 PUSH2 0x287F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x29A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x29C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x29CE DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x29E3 PUSH1 0x40 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP6 POP PUSH2 0x29F1 PUSH1 0x60 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP5 POP PUSH2 0x29FF PUSH1 0x80 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP4 POP PUSH2 0x2A0D PUSH1 0xA0 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP3 POP PUSH2 0x2A1B PUSH1 0xC0 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x2A2B DUP2 PUSH2 0x287F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2901 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2A58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A92 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2AA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2AFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2B09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2B1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2B5F JUMPI PUSH2 0x2B5F PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2B87 JUMPI PUSH2 0x2B87 PUSH2 0x2B2E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2BA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2BCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27F4 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2B44 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2BF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2BFD DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C2D DUP10 DUP4 DUP11 ADD PUSH2 0x2BBA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C4F DUP10 DUP4 DUP11 ADD PUSH2 0x2BBA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C72 DUP9 DUP3 DUP10 ADD PUSH2 0x2BBA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2C95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2CA0 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2CB0 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2CD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x2CE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CF3 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2B44 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2D22 PUSH1 0x20 DUP5 ADD PUSH2 0x298D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2D49 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2AA7 DUP2 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D6D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2D8D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2DD1 JUMPI PUSH2 0x2DD1 PUSH2 0x2DA9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2DEA JUMPI PUSH2 0x2DEA PUSH2 0x2DA9 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2E57 JUMPI PUSH2 0x2E57 PUSH2 0x2DA9 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2E81 JUMPI PUSH2 0x2E81 PUSH2 0x2E5C JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x2EA5 JUMPI PUSH2 0x2EA5 PUSH2 0x2DA9 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2EC1 JUMPI PUSH2 0x2EC1 PUSH2 0x2DA9 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2EDF JUMPI PUSH2 0x2EDF PUSH2 0x2DA9 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x2EFB DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x27FB JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x2F0F DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x27FB JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x2F5C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x2F80 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x2FA1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2FB5 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2FC6 JUMPI PUSH2 0x2FF3 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x2FF3 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2FEB JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x2FD2 JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x300B DUP3 DUP7 PUSH2 0x2F66 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x301B DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x27FB JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3038 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x27FB JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3051 DUP3 DUP5 PUSH2 0x2F66 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30C5 JUMPI PUSH2 0x30C5 PUSH2 0x2E5C JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1F5E SWAP1 DUP4 ADD DUP5 PUSH2 0x2827 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27F4 DUP2 PUSH2 0x27C1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0xF6C3171437367122D5BD46629E4B7 SLOAD 0xDC 0xEB 0xDE 0x26 DUP7 SUB SWAP6 DUP12 EXTCODEHASH MSTORE8 BLOCKHASH 0xED PUSH6 0x8AF964736F6C PUSH4 0x4300080E STOP CALLER ",
              "sourceMap": "1471:13634:37:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@PRESALE_TYPEHASH_6139": {
                  "entryPoint": null,
                  "id": 6139,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__ERC721_init_891": {
                  "entryPoint": 8362,
                  "id": 891,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__ERC721_init_unchained_909": {
                  "entryPoint": 8802,
                  "id": 909,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__Ownable_init_26": {
                  "entryPoint": 8411,
                  "id": 26,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Ownable_init_unchained_37": {
                  "entryPoint": 8880,
                  "id": 37,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 6444,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 8928,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_checkOwner_68": {
                  "entryPoint": 7362,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 6823,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_1423": {
                  "entryPoint": 8040,
                  "id": 1423,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 6349,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 8715,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_sendFunds_6858": {
                  "entryPoint": 6554,
                  "id": 6858,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 7534,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_throwError_4335": {
                  "entryPoint": 9292,
                  "id": 4335,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 7452,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 6950,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 2099,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 3151,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@buyEdition_6473": {
                  "entryPoint": 4291,
                  "id": 6473,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@contractURI_6605": {
                  "entryPoint": 5998,
                  "id": 6605,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@createEdition_6315": {
                  "entryPoint": 3305,
                  "id": 6315,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@depositedForEdition_6130": {
                  "entryPoint": null,
                  "id": 6130,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@editions_6122": {
                  "entryPoint": null,
                  "id": 6122,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1121": {
                  "entryPoint": 2060,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getOwnersOfEdition_6728": {
                  "entryPoint": 2381,
                  "id": 6728,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_6910": {
                  "entryPoint": 7740,
                  "id": 6910,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getTokenIdsOfEdition_6665": {
                  "entryPoint": 4070,
                  "id": 6665,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_6231": {
                  "entryPoint": 5227,
                  "id": 6231,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 1914,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 3055,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@recover_4427": {
                  "entryPoint": 8766,
                  "id": 4427,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 3285,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@royaltyInfo_6787": {
                  "entryPoint": 2779,
                  "id": 6787,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 3028,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 5616,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 4280,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setEndTime_6555": {
                  "entryPoint": 5672,
                  "id": 6555,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setStartTime_6530": {
                  "entryPoint": 6159,
                  "id": 6530,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_6824": {
                  "entryPoint": 1871,
                  "id": 6824,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 6269,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 4265,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_4133": {
                  "entryPoint": 8458,
                  "id": 4133,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenToEdition_6126": {
                  "entryPoint": null,
                  "id": 6126,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@tokenURI_6589": {
                  "entryPoint": 5795,
                  "id": 6589,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalSupply_6800": {
                  "entryPoint": 2702,
                  "id": 6800,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 2730,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 6038,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_4400": {
                  "entryPoint": 9185,
                  "id": 4400,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_4474": {
                  "entryPoint": 9967,
                  "id": 4474,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_4585": {
                  "entryPoint": 9730,
                  "id": 4585,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@withdrawFunds_6505": {
                  "entryPoint": 2606,
                  "id": 6505,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawnForEdition_6134": {
                  "entryPoint": null,
                  "id": 6134,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 11076,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_string": {
                  "entryPoint": 11194,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 10608,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address": {
                  "entryPoint": 10662,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 8
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 11563,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 10509,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 11391,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 10868,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 10388,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 11226,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 10199,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 12623,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 10342,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 10930,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 10574,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint32": {
                  "entryPoint": 11519,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint32": {
                  "entryPoint": 10637,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 10279,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_storage": {
                  "entryPoint": 12134,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12009,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12287,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12357,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 10,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12572,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10432,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10812,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256__to_t_bytes32_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_enum$_TimeType_$6090_t_uint256__to_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": 12090,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10323,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_03f8adf2ee5c29d54dbd9d6823d072282a9ce7cddea271efb10f69bd037a8806__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12490,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c88f947dbab6e5d162cab05f5f573e5e0669748f4150827946097b5f9bc4c0c5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12395,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11759,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 11950,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint32": {
                  "entryPoint": 11910,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 11890,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 11837,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 11736,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 10235,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 11609,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 11711,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint32": {
                  "entryPoint": 11974,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 12470,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 11689,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 11868,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 12068,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 11667,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 11054,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 10367,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 10177,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:32163:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "645:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "655:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "664:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "659:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "724:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "749:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "754:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "745:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "745:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "768:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "773:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "764:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "764:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "758:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "758:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "738:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "738:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "685:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "688:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "682:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "682:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "696:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "698:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "707:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "710:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "703:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "703:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "678:3:46",
                                "statements": []
                              },
                              "src": "674:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "813:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "826:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "831:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "822:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "822:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "840:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "815:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "815:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "815:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "802:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "805:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "799:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "796:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "623:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "628:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "633:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "905:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "915:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "935:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "929:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "919:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "957:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "962:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "950:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "950:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1011:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1000:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1000:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1022:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1027:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1018:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1018:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1034:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "978:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "978:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "978:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1050:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1065:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1078:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1086:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1074:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1074:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1095:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1091:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1091:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1070:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1070:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1061:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1061:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1102:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1057:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1057:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1050:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "882:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "889:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "897:3:46",
                            "type": ""
                          }
                        ],
                        "src": "855:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1239:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1256:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1267:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1249:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1249:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1249:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1279:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1305:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1317:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1328:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1313:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1313:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1287:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1287:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1279:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1208:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1219:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1230:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1118:220:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1413:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1459:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1468:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1471:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1461:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1461:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1461:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1434:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1430:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1430:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1455:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1426:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1426:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1423:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1484:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1507:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1494:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1484:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1379:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1390:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1402:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1343:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1629:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1639:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1651:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1662:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1647:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1647:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1639:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1681:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1696:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1712:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1717:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1708:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1708:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1721:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1704:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1704:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1692:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1692:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1674:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1674:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1674:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1598:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1609:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1620:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1528:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1781:86:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1845:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1854:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1857:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1847:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1847:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1847:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1804:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1815:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1830:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1835:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1826:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1826:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1839:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1822:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1822:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1811:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1811:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1801:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1801:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1794:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1794:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1791:70:46"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1770:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1736:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1959:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2005:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2014:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2017:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2007:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2007:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2007:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1980:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1989:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1976:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1976:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2001:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1972:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1972:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1969:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2030:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2056:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2043:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2043:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2034:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2100:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2075:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2075:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2075:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2115:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2125:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2115:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2139:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2166:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2177:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2162:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2162:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2149:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2149:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2139:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1917:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1928:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1872:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2343:507:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2353:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2363:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2357:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2374:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2392:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2403:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2388:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2388:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2378:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2422:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2433:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2415:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2415:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2415:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2445:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "2456:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "2449:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2471:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2491:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2485:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2485:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2475:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2514:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2522:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2507:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2507:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2507:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2538:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2549:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2560:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2545:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2545:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "2538:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2572:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2590:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2598:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2586:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2586:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2576:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2610:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2619:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2614:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2678:146:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2699:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2714:6:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2708:5:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2708:13:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "2731:3:46",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "2736:1:46",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2727:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2727:11:46"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2740:1:46",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "2723:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2723:19:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2704:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2704:39:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2692:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2692:52:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2692:52:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2757:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2768:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2773:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2764:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2764:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2757:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2789:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2803:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2811:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2799:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2799:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2789:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2640:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2643:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2637:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2637:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2651:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2653:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2662:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2665:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2658:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2658:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2653:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2633:3:46",
                                "statements": []
                              },
                              "src": "2629:195:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2833:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "2841:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2833:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2312:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2323:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2334:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2192:658:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2956:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2966:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2978:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2989:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2974:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2974:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2966:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3008:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3019:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3001:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3001:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3001:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2925:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2936:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2947:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2855:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3141:352:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3187:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3196:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3199:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3189:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3189:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3189:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3162:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3171:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3158:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3158:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3183:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3154:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3154:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3151:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3212:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3238:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3225:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3225:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3216:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3282:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3257:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3257:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3257:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3297:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3307:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3297:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3321:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3353:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3364:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3349:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3349:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3336:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3325:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3402:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3377:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3377:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3377:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3419:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3429:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3419:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3445:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3472:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3483:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3468:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3468:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3455:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3455:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3445:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3091:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3102:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3114:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3122:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3130:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3037:456:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3827:565:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3837:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3849:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3860:3:46",
                                    "type": "",
                                    "value": "288"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3845:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3845:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3837:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3873:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3891:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3896:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3887:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3887:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3900:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3883:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3883:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3877:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3918:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3933:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3941:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3929:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3929:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3911:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3911:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3911:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3965:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3976:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3961:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3961:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3981:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3954:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3954:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3954:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3997:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4007:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4001:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4037:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4048:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4033:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4033:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4057:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4065:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4053:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4026:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4026:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4026:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4089:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4100:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4085:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4085:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "4109:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4117:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4105:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4105:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4078:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4078:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4078:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4141:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4152:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4137:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4137:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4162:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4170:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4158:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4158:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4130:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4130:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4130:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4194:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4205:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4190:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4190:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "4215:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4223:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4211:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4211:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4183:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4183:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4183:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4247:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4258:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4243:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4243:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4268:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4276:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4264:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4264:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4236:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4236:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4236:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4300:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4311:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4296:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4296:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "4321:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4329:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4317:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4317:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4289:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4289:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4289:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4353:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4364:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4349:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4349:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "4374:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4382:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4370:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4370:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4342:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4342:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4342:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3732:9:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "3743:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "3751:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "3759:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3767:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3775:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3783:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3791:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3799:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3807:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3818:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3498:894:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4484:161:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4530:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4539:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4542:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4532:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4532:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4532:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4505:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4514:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4501:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4501:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4526:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4497:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4497:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4494:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4555:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4578:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4565:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4565:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4555:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4597:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4624:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4635:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4620:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4620:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4607:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4607:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4597:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4442:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4453:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4465:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4473:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4397:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4779:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4789:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4801:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4812:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4797:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4797:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4789:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4831:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4846:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4862:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4867:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4858:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4858:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4871:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4854:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4854:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4842:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4842:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4824:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4824:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4824:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4895:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4906:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4891:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4891:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4911:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4884:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4884:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4884:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4740:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4751:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4759:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4770:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4650:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4999:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5045:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5054:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5057:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5047:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5047:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5047:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5020:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5029:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5016:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5016:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5041:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5012:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5012:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5009:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5070:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5096:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5083:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5083:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5074:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5140:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5115:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5115:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5115:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5155:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5165:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5155:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4965:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4976:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4988:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4929:247:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5229:115:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5239:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5261:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5248:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5248:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "5239:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5322:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5331:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5334:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5324:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5324:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5324:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5290:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "5301:5:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5308:10:46",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5297:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5297:22:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5287:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5287:33:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5280:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5280:41:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5277:61:46"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "5208:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5219:5:46",
                            "type": ""
                          }
                        ],
                        "src": "5181:163:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5541:637:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5588:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5597:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5600:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5590:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5590:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5590:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5562:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5571:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5558:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5558:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5583:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5554:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5554:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5551:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5613:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5639:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5626:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5626:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5617:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5683:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5658:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5658:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5658:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5698:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5708:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5698:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5722:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5749:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5760:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5745:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5745:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5732:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5732:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5722:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5773:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5805:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5816:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5801:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5801:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5783:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5783:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5773:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5829:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5861:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5872:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5857:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5857:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5839:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5839:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5829:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5885:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5917:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5928:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5913:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5913:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5895:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5895:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5885:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5942:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5974:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5985:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5970:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5970:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5952:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5952:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "5942:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5999:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6031:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6042:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6027:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6027:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5999:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6056:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6088:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6099:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6084:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6084:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6071:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6071:33:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6060:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6138:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6113:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6113:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6113:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6155:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "6165:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "6155:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5451:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5462:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5474:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5482:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5490:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5498:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5506:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "5514:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "5522:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "5530:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5349:829:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6334:481:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6344:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6354:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6348:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6365:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6383:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6394:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6379:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6379:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6369:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6413:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6424:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6406:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6406:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6406:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6436:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "6447:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "6440:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6462:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6482:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6476:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6476:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6466:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6505:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6513:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6498:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6498:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6498:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6529:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6540:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6551:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6536:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6536:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "6529:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6563:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6581:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6589:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6577:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6577:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6567:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6601:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6610:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6605:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6669:120:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6690:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6701:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6695:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6695:13:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6683:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6683:26:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6683:26:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6722:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6733:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6738:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6729:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6729:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6722:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6754:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "6768:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6776:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6764:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6764:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6754:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6631:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6634:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6628:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6628:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6642:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6644:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6653:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6656:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6649:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6649:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6644:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6624:3:46",
                                "statements": []
                              },
                              "src": "6620:169:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6798:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "6806:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6798:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6303:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6314:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6325:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6183:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6904:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6950:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6959:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6962:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6952:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6952:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6952:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6925:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6934:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6921:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6921:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6946:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6917:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6917:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6914:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6975:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7001:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6988:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6988:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6979:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7045:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7020:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7020:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7020:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7060:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7070:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7060:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7084:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7116:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7127:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7112:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7112:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7099:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7099:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7088:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7188:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7197:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7200:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7190:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7190:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7190:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7153:7:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "7176:7:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "7169:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7169:15:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "7162:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7162:23:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7150:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7150:36:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7143:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7143:44:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7140:64:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7213:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7223:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7213:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6862:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6873:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6885:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6893:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6820:416:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7347:553:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7393:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7402:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7405:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7395:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7395:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7395:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7368:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7377:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7364:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7364:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7389:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7360:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7360:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7357:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7441:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7428:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7428:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7460:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7491:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7502:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7487:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7487:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7474:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7474:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7464:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7515:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7525:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7519:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7570:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7579:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7582:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7572:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7572:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7572:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7566:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7555:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7555:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7552:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7595:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7609:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7620:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7605:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7605:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7599:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7675:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7684:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7687:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7677:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7677:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7677:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7654:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7658:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7650:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7650:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7665:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7646:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7646:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7639:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7639:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7636:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7700:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7727:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7714:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7714:16:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7704:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7757:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7766:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7769:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7759:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7759:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7759:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7745:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7753:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7742:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7742:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7739:34:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7823:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7832:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7835:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7825:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7825:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7825:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7796:2:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "7800:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7792:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7792:15:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7809:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7788:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7788:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7814:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7785:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7785:37:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7782:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7848:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7862:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7866:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7858:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7858:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7848:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7878:16:46",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "7888:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7878:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7297:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7308:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7320:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7328:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7336:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7241:659:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7937:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7954:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7961:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7966:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7957:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7957:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7947:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7947:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7947:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7994:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7997:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7987:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7987:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7987:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8018:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8021:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8011:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8011:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8011:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7905:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8112:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8122:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8132:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8126:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8177:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8179:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8179:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8179:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8165:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8173:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8162:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8162:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8159:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8208:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8222:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "8218:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8218:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8212:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8234:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8254:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8248:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8248:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8238:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8266:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8288:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8312:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8320:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8308:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8308:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "8325:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "8304:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8304:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8330:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8300:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8300:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8335:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8296:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8296:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8284:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8284:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8270:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8398:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8400:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8400:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8400:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8357:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8369:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8354:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8354:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8377:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8389:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8374:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8374:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "8351:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8351:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8348:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8436:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8440:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8429:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8429:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8429:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8460:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "8469:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8460:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8491:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8499:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8484:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8484:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8484:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8544:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8553:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8556:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8546:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8546:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8546:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "8525:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "8530:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8521:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8521:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8539:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8518:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8518:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8515:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8586:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8594:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8582:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8582:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "8601:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8606:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8569:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8569:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8569:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "8637:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "8645:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8633:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8633:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8654:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8629:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8629:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8661:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8622:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8622:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8622:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "8081:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8086:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8094:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8102:5:46",
                            "type": ""
                          }
                        ],
                        "src": "8037:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8727:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8776:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8785:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8788:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8778:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8778:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8778:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8755:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8763:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8751:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8751:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8770:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8747:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8747:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8740:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8740:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8737:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8801:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8849:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8857:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8845:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8845:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8877:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "8864:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8864:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8886:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "8810:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8810:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8801:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "8701:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8709:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8717:5:46",
                            "type": ""
                          }
                        ],
                        "src": "8674:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9069:780:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9116:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9125:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9128:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9118:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9118:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9118:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9090:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9099:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9086:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9086:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9111:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9082:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9082:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9079:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9141:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9167:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9154:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9154:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9145:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9211:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9186:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9186:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9186:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9226:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9236:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9226:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9250:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9277:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9288:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9273:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9273:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9260:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9260:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9250:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9301:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9332:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9343:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9328:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9328:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9315:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9315:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9305:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9356:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9366:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9360:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9411:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9420:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9423:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9413:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9413:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9413:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9399:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9407:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9396:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9396:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9393:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9436:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9468:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9479:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9464:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9464:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9488:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9446:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9446:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9436:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9505:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9538:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9549:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9534:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9534:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9521:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9521:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9509:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9582:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9591:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9594:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9584:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9584:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9584:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9568:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9578:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9565:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9565:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9562:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9607:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9639:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9650:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9635:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9635:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9661:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9617:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9617:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9607:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9678:49:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9711:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9722:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9707:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9707:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9694:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9694:33:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9682:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9756:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9765:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9768:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9758:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9758:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9758:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9742:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9752:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9739:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9739:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9736:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9781:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9813:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9824:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9809:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9809:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9835:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9791:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9791:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9781:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9003:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9014:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9026:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9034:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9042:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9050:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9058:6:46",
                            "type": ""
                          }
                        ],
                        "src": "8901:948:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9984:665:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10031:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10040:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10043:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10033:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10033:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10033:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10005:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10014:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10001:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10001:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10026:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9997:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9997:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9994:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10056:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10082:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10069:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10069:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10060:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10126:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10101:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10101:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10101:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10141:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10151:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10141:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10165:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10197:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10208:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10193:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10193:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10180:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10180:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10169:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10246:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10221:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10221:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10221:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10263:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10273:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10263:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10289:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10316:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10327:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10312:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10312:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10299:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10299:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10289:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10340:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10371:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10382:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10367:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10367:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10354:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10354:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10344:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10429:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10438:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10441:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10431:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10431:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10431:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10401:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10409:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10398:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10398:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10395:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10454:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10468:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10479:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10464:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10464:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10458:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10534:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10543:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10546:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10536:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10536:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10536:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "10513:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10517:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10509:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10509:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10524:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10505:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10505:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10498:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10498:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10495:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10559:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10608:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10612:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10604:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10604:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10630:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "10617:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10617:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10635:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10569:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10569:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10559:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9926:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9937:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9949:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9957:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9965:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9973:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9854:795:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10740:166:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10786:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10795:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10798:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10788:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10788:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10788:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10761:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10770:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10757:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10757:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10782:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10753:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10753:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10750:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10811:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10834:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10821:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10821:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10811:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10853:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10885:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10896:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10881:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10881:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "10863:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10863:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10853:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10698:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10709:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10721:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10729:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10654:252:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11012:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11022:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11034:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11045:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11030:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11030:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11022:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11064:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11075:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11057:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11057:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11057:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10981:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10992:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11003:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10911:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11180:301:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11226:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11235:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11238:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11228:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11228:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11228:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11201:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11210:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11197:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11197:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11222:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11193:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11193:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11190:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11251:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11277:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11264:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11264:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11255:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11321:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11296:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11296:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11296:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11336:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11346:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11336:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11360:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11392:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11403:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11388:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11388:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11375:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11375:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11364:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11441:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11416:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11416:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11416:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11458:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11468:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11458:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11138:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11149:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11161:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11169:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11093:388:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11541:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11551:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11565:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "11568:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "11561:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11561:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "11551:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11582:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "11612:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11618:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "11608:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11608:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "11586:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11659:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11661:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "11675:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11683:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "11671:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11671:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "11661:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "11639:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11632:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11632:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11629:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11749:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11770:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11777:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11782:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "11773:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11773:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11763:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11763:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11763:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11814:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11817:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11807:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11807:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11807:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11842:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11845:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11835:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11835:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11835:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "11705:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "11728:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11736:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11725:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11725:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "11702:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11702:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11699:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "11521:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "11530:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11486:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12045:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12062:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12073:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12055:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12055:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12055:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12096:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12107:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12092:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12092:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12112:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12085:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12085:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12085:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12135:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12146:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12131:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12131:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12151:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12124:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12124:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12124:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12206:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12217:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12202:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12202:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12222:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12195:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12195:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12195:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12235:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12247:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12258:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12243:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12243:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12235:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12022:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12036:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11871:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12447:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12464:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12475:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12457:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12457:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12457:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12498:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12509:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12494:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12494:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12514:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12487:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12487:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12487:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12537:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12548:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12533:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12533:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12553:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12526:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12526:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12526:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12608:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12619:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12604:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12604:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12624:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12597:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12597:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12597:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12666:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12678:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12689:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12674:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12674:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12666:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12424:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12438:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12273:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12736:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12753:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12760:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12765:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12756:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12756:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12746:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12746:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12746:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12793:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12796:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12786:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12786:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12786:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12817:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12820:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12810:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12810:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12810:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12704:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12868:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12885:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12892:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12897:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12888:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12888:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12878:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12878:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12878:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12925:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12928:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12918:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12918:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12918:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12949:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12952:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12942:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12942:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12942:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12836:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13015:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13046:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13048:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13048:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13048:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13031:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13042:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "13038:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13038:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "13028:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13028:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13025:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13077:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13088:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13095:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13084:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13084:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "13077:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12997:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "13007:3:46",
                            "type": ""
                          }
                        ],
                        "src": "12968:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13157:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13179:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13181:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13181:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13181:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13173:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13176:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13170:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13170:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13167:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13210:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13222:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13225:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "13218:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13218:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "13210:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13139:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13142:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "13148:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13108:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13412:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13429:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13440:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13422:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13422:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13422:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13463:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13474:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13459:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13459:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13479:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13452:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13452:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13452:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13502:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13513:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13498:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13498:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13518:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13491:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13491:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13491:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13573:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13584:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13569:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13569:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13589:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13562:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13562:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13562:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13615:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13627:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13638:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13623:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13623:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13615:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13389:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13403:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13238:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13705:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13764:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13766:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13766:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13766:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "13736:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "13729:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13729:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "13722:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13722:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "13744:1:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13755:1:46",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "13751:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13751:6:46"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "13759:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "13747:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13747:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13741:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13741:21:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "13718:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13718:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13715:71:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13795:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13810:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13813:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "13806:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13806:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "13795:7:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13684:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13687:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "13693:7:46",
                            "type": ""
                          }
                        ],
                        "src": "13653:168:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13858:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13875:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13882:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13887:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "13878:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13878:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13868:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13868:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13868:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13915:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13918:4:46",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13908:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13908:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13908:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13939:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13942:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "13932:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13932:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13932:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "13826:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14004:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14027:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "14029:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14029:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14029:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14024:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14017:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14017:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14014:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14058:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14067:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14070:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "14063:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14063:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "14058:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13989:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13992:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "13998:1:46",
                            "type": ""
                          }
                        ],
                        "src": "13958:120:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14257:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14274:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14285:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14267:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14267:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14267:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14308:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14319:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14304:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14304:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14324:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14297:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14297:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14297:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14347:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14358:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14343:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14343:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14363:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14336:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14336:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14336:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14399:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14411:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14422:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14407:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14407:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14399:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14234:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14248:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14083:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14610:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14627:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14638:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14620:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14620:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14620:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14661:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14672:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14657:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14657:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14677:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14650:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14650:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14650:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14700:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14711:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14696:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14696:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14716:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14689:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14689:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14689:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14771:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14782:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14767:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14767:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14787:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14760:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14760:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14760:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14808:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14820:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14831:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14816:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14816:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14808:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14587:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14601:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14436:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14893:181:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14903:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14913:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14907:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14932:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14947:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14950:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "14943:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14943:10:46"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14936:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14962:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14977:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14980:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "14973:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14973:10:46"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14966:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15017:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15019:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15019:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15019:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14998:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15007:2:46"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15011:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15003:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15003:12:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14995:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14995:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14992:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15048:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15059:3:46"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15064:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15055:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15055:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "15048:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14876:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14879:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "14885:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14846:228:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15253:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15270:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15281:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15263:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15263:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15263:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15304:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15315:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15300:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15300:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15320:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15293:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15293:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15293:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15343:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15354:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15339:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15339:18:46"
                                  },
                                  {
                                    "hexValue": "50726573616c65207175616e7469747920746f6f20626967",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15359:26:46",
                                    "type": "",
                                    "value": "Presale quantity too big"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15332:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15332:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15332:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15395:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15407:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15418:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15403:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15403:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15395:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c88f947dbab6e5d162cab05f5f573e5e0669748f4150827946097b5f9bc4c0c5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15230:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15244:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15079:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15606:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15623:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15634:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15616:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15616:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15616:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15657:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15668:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15653:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15653:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15673:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15646:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15646:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15646:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15696:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15707:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15692:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15692:18:46"
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15712:28:46",
                                    "type": "",
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15685:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15685:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15685:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15750:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15762:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15773:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15758:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15758:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15750:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15583:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15597:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15432:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16082:512:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16092:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16104:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16115:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16100:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16100:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16092:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16128:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16146:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16151:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "16142:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16142:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16155:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "16138:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16138:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16132:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16173:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16188:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16196:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16184:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16184:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16166:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16166:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16166:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16220:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16231:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16216:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16216:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16236:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16209:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16209:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16209:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16252:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16262:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16256:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16292:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16303:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16288:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16288:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16312:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16320:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16308:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16308:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16281:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16281:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16281:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16344:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16355:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16340:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16340:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "16364:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16372:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16360:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16360:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16333:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16333:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16333:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16396:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16407:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16392:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16392:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "16417:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16425:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16413:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16413:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16385:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16385:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16385:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16449:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16460:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16445:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16445:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "16470:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16478:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16466:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16466:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16438:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16438:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16438:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16502:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16513:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16498:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16498:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "16523:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16531:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16519:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16519:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16491:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16491:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16491:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16555:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16566:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16551:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16551:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "16576:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16584:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16572:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16572:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16544:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16544:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15995:9:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "16006:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "16014:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "16022:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "16030:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16038:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16046:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16054:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16062:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16073:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15787:807:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16773:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16790:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16801:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16783:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16783:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16783:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16824:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16835:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16820:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16820:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16840:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16813:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16813:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16813:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16863:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16874:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16859:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16859:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16879:24:46",
                                    "type": "",
                                    "value": "Edition does not exist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16852:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16852:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16852:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16913:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16925:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16936:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16921:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16921:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16913:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16750:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16764:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16599:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17124:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17141:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17152:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17134:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17134:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17134:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17175:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17186:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17171:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17171:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17191:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17164:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17164:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17164:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17214:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17225:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17210:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17210:18:46"
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f7574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17230:34:46",
                                    "type": "",
                                    "value": "This edition is already sold out"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17203:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17203:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17203:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17285:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17296:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17281:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17281:18:46"
                                  },
                                  {
                                    "hexValue": "2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17301:3:46",
                                    "type": "",
                                    "value": "."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17274:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17274:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17274:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17314:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17326:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17337:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17322:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17322:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17314:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17101:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17115:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16950:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17526:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17543:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17554:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17536:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17536:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17536:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17577:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17588:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17573:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17573:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17593:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17566:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17566:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17566:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17616:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17627:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17612:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17612:18:46"
                                  },
                                  {
                                    "hexValue": "4d7573742073656e6420656e6f75676820746f20707572636861736520746865",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17632:34:46",
                                    "type": "",
                                    "value": "Must send enough to purchase the"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17605:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17605:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17605:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17687:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17698:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17683:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17683:18:46"
                                  },
                                  {
                                    "hexValue": "2065646974696f6e2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17703:11:46",
                                    "type": "",
                                    "value": " edition."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17676:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17676:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17676:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17724:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17736:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17747:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17732:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17732:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17724:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17503:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17517:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17352:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17936:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17953:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17964:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17946:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17946:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17946:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17987:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17998:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17983:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17983:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18003:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17976:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17976:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17976:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18026:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18037:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18022:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18022:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f2070726573616c6520617661696c61626c652026206f70656e2061756374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18042:34:46",
                                    "type": "",
                                    "value": "No presale available & open auct"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18015:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18015:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18097:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18108:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18093:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18093:18:46"
                                  },
                                  {
                                    "hexValue": "696f6e206e6f742073746172746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18113:17:46",
                                    "type": "",
                                    "value": "ion not started"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18086:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18086:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18086:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18140:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18152:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18163:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18148:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18148:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18140:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_03f8adf2ee5c29d54dbd9d6823d072282a9ce7cddea271efb10f69bd037a8806__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17913:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17927:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17762:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18352:164:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18369:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18380:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18362:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18362:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18362:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18403:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18414:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18399:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18399:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18419:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18392:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18392:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18392:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18442:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18453:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18438:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18438:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18458:16:46",
                                    "type": "",
                                    "value": "Invalid signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18431:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18431:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18431:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18484:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18496:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18507:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18492:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18492:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18484:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18329:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18343:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18178:338:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18695:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18712:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18723:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18705:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18705:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18705:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18746:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18757:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18742:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18742:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18762:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18735:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18735:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18735:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18785:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18796:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18781:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18781:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e2068617320656e646564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18801:19:46",
                                    "type": "",
                                    "value": "Auction has ended"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18774:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18774:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18774:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18830:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18842:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18853:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18838:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18838:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18830:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18672:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18686:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18521:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18915:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18942:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18944:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18944:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18944:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18931:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "18938:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "18934:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18934:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18928:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18928:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "18925:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18973:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18984:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18987:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18980:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18980:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "18973:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18898:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18901:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "18907:3:46",
                            "type": ""
                          }
                        ],
                        "src": "18867:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19046:155:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19056:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19066:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19060:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19085:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19104:5:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19111:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "19100:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19100:14:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19089:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19142:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19144:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19144:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19144:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19129:7:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19138:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "19126:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19126:15:46"
                              },
                              "nodeType": "YulIf",
                              "src": "19123:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19173:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19184:7:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19193:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19180:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19180:15:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "19173:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19028:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "19038:3:46",
                            "type": ""
                          }
                        ],
                        "src": "19000:201:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19305:93:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19315:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19327:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19338:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19323:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19323:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19315:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19357:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19372:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19380:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19368:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19368:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19350:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19350:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19350:42:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19274:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19285:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19296:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19206:192:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19577:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19594:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19605:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19587:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19587:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19587:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19628:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19639:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19624:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19624:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19644:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19617:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19617:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19617:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19667:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19678:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19663:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19663:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19683:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19656:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19656:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19656:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19738:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19749:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19734:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19734:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19754:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19727:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19727:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19727:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19780:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19792:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19803:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19788:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19788:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19780:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19554:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19568:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19403:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20106:345:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20116:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20136:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20130:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20130:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "20120:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20178:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20186:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20174:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20174:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "20193:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "20198:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "20152:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20152:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20152:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20214:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "20231:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "20236:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20227:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20227:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20218:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20252:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20274:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20268:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20268:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20256:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20316:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20324:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20312:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20312:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20331:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20338:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "20290:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20290:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20290:57:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20356:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20373:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20380:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20369:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20369:20:46"
                              },
                              "variables": [
                                {
                                  "name": "end_2",
                                  "nodeType": "YulTypedName",
                                  "src": "20360:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20405:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20412:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20398:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20398:18:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20425:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20436:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20443:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20432:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20432:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "20425:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "20074:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20079:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20087:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "20098:3:46",
                            "type": ""
                          }
                        ],
                        "src": "19818:633:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20563:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20573:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20585:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20596:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20581:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20581:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20573:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20615:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20630:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20638:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20626:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20626:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20608:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20608:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20608:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20532:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20543:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20554:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20456:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20687:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20704:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20711:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20716:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "20707:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20707:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20697:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20697:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20697:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20744:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20747:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20737:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20737:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20737:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20768:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20771:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "20761:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20761:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20761:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "20655:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20927:272:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20937:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20949:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20960:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20945:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20945:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20937:4:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21005:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21026:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "21033:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "21038:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "21029:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21029:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21019:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21019:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21019:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21070:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21073:4:46",
                                          "type": "",
                                          "value": "0x21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21063:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21063:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21063:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21098:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21101:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21091:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21091:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21091:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20985:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20993:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "20982:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20982:13:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "20975:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20975:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "20972:144:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21132:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21143:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21125:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21125:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21125:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21170:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21181:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21166:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21166:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21186:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21159:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21159:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21159:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_TimeType_$6090_t_uint256__to_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20888:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20899:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20907:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20918:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20787:412:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21378:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21395:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21406:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21388:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21388:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21388:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21429:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21440:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21425:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21425:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21445:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21418:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21418:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21418:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21468:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21479:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21464:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21464:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21484:34:46",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21457:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21457:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21457:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21539:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21550:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21535:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21535:18:46"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21555:17:46",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21528:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21528:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21528:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21582:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21594:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21605:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21590:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21590:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21582:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21355:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21369:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21204:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21676:65:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21693:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "21696:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21686:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21686:14:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21686:14:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21709:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21727:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21730:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "21717:9:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21717:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "21709:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "21659:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "21667:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21620:121:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21804:915:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21814:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21837:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21831:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21831:12:46"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "21818:9:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21852:15:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21866:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "21856:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21876:11:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21886:1:46",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21880:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21896:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21910:2:46"
                                  },
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "21914:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "21906:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21906:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "21896:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21933:44:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "21963:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21974:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "21959:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21959:18:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "21937:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22016:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "22018:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "22032:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22040:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "22028:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22028:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22018:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "21996:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21989:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21989:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "21986:61:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22056:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22066:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22060:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22127:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22148:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "22155:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "22160:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "22151:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22151:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "22141:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22141:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22141:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22192:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22195:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "22185:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22185:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22185:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22220:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22223:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22213:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22213:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22213:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "22083:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22106:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22114:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "22103:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22103:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "22080:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22080:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "22077:161:46"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "22288:97:46",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "22309:3:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22318:9:46"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "22333:3:46",
                                                      "type": "",
                                                      "value": "255"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22329:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "22329:8:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "22314:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "22314:24:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "22302:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22302:37:46"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "22302:37:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "22352:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "22363:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "22368:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22359:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22359:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "22352:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "22281:104:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22286:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "22401:312:46",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "22415:51:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "22460:5:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "22430:29:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22430:36:46"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "22419:7:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "22479:10:46",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22488:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "22483:1:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "22556:111:46",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22585:3:46"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22590:1:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "22581:3:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "22581:11:46"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22600:7:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "22594:5:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "22594:14:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22574:6:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22574:35:46"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "22574:35:46"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "22626:27:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22641:7:46"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22650:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22637:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22637:16:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22626:7:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "22513:1:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "22516:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "22510:2:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22510:13:46"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "22524:19:46",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "22526:15:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22535:1:46"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22538:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22531:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22531:10:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22526:1:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "22506:3:46",
                                          "statements": []
                                        },
                                        "src": "22502:165:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "22680:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "22691:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "22696:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22687:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22687:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "22680:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "22394:319:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22399:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "outOfPlaceEncoding",
                                "nodeType": "YulIdentifier",
                                "src": "22254:18:46"
                              },
                              "nodeType": "YulSwitch",
                              "src": "22247:466:46"
                            }
                          ]
                        },
                        "name": "abi_encode_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "21781:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "21788:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "21796:3:46",
                            "type": ""
                          }
                        ],
                        "src": "21746:973:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23057:381:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23067:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23103:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "23111:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "23077:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23077:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23071:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23124:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23144:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23138:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23138:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "23128:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23186:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23194:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23182:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23182:17:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23201:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "23205:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "23160:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23160:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23160:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23221:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23238:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "23242:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23234:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23234:15:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23225:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23265:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23272:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23258:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23258:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23258:18:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23285:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "23307:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23301:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23301:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23289:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23349:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23357:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23345:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23345:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23368:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23375:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23364:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23364:13:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23379:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "23323:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23323:65:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23323:65:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23397:35:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23412:5:46"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23419:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23408:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23408:20:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23430:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23404:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23404:28:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "23397:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "23017:3:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23022:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23030:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23038:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "23049:3:46",
                            "type": ""
                          }
                        ],
                        "src": "22724:714:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23680:124:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23690:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23726:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "23734:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "23700:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23700:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23694:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23754:2:46"
                                  },
                                  {
                                    "hexValue": "73746f726566726f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23758:12:46",
                                    "type": "",
                                    "value": "storefront"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23747:24:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23747:24:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23780:18:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23791:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23795:2:46",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23787:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23787:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "23780:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "23656:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23661:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "23672:3:46",
                            "type": ""
                          }
                        ],
                        "src": "23443:361:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23983:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24000:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24011:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23993:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23993:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23993:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24034:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24045:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24030:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24030:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24050:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24023:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24023:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24023:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24073:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24084:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24069:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24069:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24089:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24062:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24062:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24062:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24144:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24155:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24140:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24140:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24160:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24133:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24133:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24133:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24178:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24190:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24201:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24186:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24186:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24178:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23960:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23974:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23809:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24390:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24407:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24418:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24400:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24400:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24400:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24441:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24452:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24437:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24437:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24457:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24430:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24430:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24430:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24480:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24491:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24476:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24476:18:46"
                                  },
                                  {
                                    "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24496:31:46",
                                    "type": "",
                                    "value": "Insufficient balance for send"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24469:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24469:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24469:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24537:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24549:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24560:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24545:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24545:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24537:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24367:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24381:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24216:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24765:14:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "24767:10:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "24774:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "24767:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "24749:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "24757:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24574:205:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24958:239:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24975:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24986:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24968:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24968:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24968:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25009:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25020:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25005:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25005:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25025:2:46",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24998:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24998:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24998:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25048:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25059:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25044:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25044:18:46"
                                  },
                                  {
                                    "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25064:34:46",
                                    "type": "",
                                    "value": "Unable to send value: recipient "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25037:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25037:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25037:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25119:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25130:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25115:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25115:18:46"
                                  },
                                  {
                                    "hexValue": "6d61792068617665207265766572746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25135:19:46",
                                    "type": "",
                                    "value": "may have reverted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25108:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25108:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25108:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25164:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25176:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25187:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25172:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25172:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25164:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24935:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24949:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24784:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25376:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25393:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25404:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25386:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25386:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25386:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25427:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25438:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25423:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25423:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25443:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25416:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25416:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25416:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25466:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25477:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25462:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25462:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25482:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25455:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25455:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25455:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25537:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25548:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25533:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25533:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25553:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25526:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25526:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25526:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25570:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25582:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25593:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25578:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25578:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25570:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25353:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25367:4:46",
                            "type": ""
                          }
                        ],
                        "src": "25202:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25782:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25799:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25810:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25792:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25792:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25792:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25833:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25844:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25829:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25849:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25822:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25822:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25822:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25872:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25883:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25868:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25868:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25888:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25861:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25861:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25861:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25943:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25954:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25939:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25939:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25959:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25932:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25932:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25932:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25975:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25987:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25998:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25983:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25983:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25975:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25759:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25773:4:46",
                            "type": ""
                          }
                        ],
                        "src": "25608:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26187:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26204:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26215:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26197:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26197:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26197:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26238:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26249:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26234:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26234:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26254:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26227:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26227:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26227:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26277:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26288:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26273:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26273:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26293:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26266:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26266:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26266:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26337:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26349:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26360:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26345:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26345:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26337:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26164:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26178:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26013:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26548:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26565:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26576:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26558:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26558:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26558:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26599:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26610:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26595:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26595:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26615:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26588:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26588:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26588:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26638:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26649:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26634:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26634:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26654:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26627:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26627:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26627:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26691:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26703:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26714:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26699:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26699:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26691:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26525:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26539:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26374:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26857:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26867:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26879:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26890:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26875:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26875:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26867:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26909:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26920:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26902:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26902:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26902:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26947:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26958:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26943:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26943:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26963:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26936:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26936:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26936:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26818:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "26829:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26837:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26848:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26728:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27166:262:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27176:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27188:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27199:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27184:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27184:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27176:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27219:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "27230:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27212:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27212:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27212:25:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27246:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27264:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27269:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "27260:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27260:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27273:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "27256:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27256:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "27250:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27295:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27306:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27291:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27291:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27315:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27323:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "27311:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27311:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27284:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27284:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27284:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27347:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27358:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27343:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27343:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "27367:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27375:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "27363:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27363:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27336:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27336:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27336:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27399:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27410:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27395:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27395:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "27415:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27388:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27388:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27388:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256__to_t_bytes32_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27111:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "27122:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "27130:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "27138:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "27146:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27157:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26981:447:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27681:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "27698:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27707:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27712:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "27703:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27703:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27691:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27691:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27691:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "27738:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27743:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27734:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27734:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "27747:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27727:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27727:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27727:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "27774:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27779:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27770:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27770:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27784:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27763:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27763:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27763:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27800:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "27811:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27816:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27807:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27807:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "27800:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "27649:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "27654:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "27662:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "27673:3:46",
                            "type": ""
                          }
                        ],
                        "src": "27433:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28004:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28021:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28032:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28014:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28014:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28014:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28055:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28066:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28051:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28051:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28071:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28044:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28044:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28044:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28094:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28105:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28090:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28090:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28110:34:46",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28083:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28083:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28083:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28154:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28166:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28177:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28162:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28162:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28154:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27981:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27995:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27830:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28365:178:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28382:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28393:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28375:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28375:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28375:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28416:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28427:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28412:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28412:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28432:2:46",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28405:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28405:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28405:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28455:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28466:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28451:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28451:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28471:30:46",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28444:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28444:58:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28444:58:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28511:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28523:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28534:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28519:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28519:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28511:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28342:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28356:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28191:352:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28722:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28739:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28750:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28732:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28732:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28732:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28773:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28784:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28769:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28769:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28789:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28762:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28762:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28762:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28812:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28823:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28808:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28808:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28828:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28801:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28801:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28801:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28883:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28894:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28879:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28879:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28899:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28872:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28872:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28872:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28922:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28934:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28945:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28930:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28930:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28922:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28699:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28713:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28548:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28998:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29021:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "29023:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29023:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29023:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29018:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "29011:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29011:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "29008:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29052:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29061:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29064:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "29057:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29057:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "29052:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "28983:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "28986:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "28992:1:46",
                            "type": ""
                          }
                        ],
                        "src": "28960:112:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29251:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29268:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29279:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29261:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29261:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29261:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29302:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29313:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29298:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29298:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29318:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29291:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29291:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29291:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29341:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29352:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29337:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29337:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29357:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29330:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29330:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29330:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29412:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29423:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29408:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29408:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29428:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29401:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29401:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29401:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29458:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29470:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29481:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29466:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29466:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29458:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29228:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29242:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29077:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29699:286:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29709:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29727:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29732:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "29723:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29723:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29736:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "29719:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29719:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29713:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29754:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "29769:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29777:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29765:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29765:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29747:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29747:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29801:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29812:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29797:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29797:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29821:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29829:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29817:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29817:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29790:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29790:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29790:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29853:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29864:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29849:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29849:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "29869:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29842:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29842:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29842:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29896:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29907:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29892:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29892:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29912:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29885:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29885:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29885:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29925:54:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "29951:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29963:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29974:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29959:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29959:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "29933:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29933:46:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29925:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29644:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "29655:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "29663:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "29671:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29679:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29690:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29496:489:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30070:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30116:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30125:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30128:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30118:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30118:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30118:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "30091:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30100:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "30087:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30087:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30112:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30083:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30083:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "30080:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30141:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30160:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30154:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30154:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "30145:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "30203:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "30179:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30179:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30179:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30218:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "30228:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "30218:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30036:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "30047:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "30059:6:46",
                            "type": ""
                          }
                        ],
                        "src": "29990:249:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30418:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30435:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30446:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30428:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30428:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30428:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30469:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30480:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30465:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30465:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30485:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30458:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30458:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30458:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30508:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30519:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30504:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30504:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30524:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30497:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30497:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30497:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30560:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30572:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30583:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30568:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30568:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30560:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30395:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30409:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30244:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30771:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30788:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30799:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30781:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30781:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30781:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30822:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30833:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30818:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30818:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30838:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30811:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30811:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30811:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30861:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30872:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30857:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30857:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30877:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30850:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30850:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30850:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30920:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30932:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30943:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30928:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30928:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30920:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30748:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30762:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30597:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31131:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31148:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31159:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31141:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31141:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31141:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31182:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31193:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31178:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31178:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31198:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31171:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31171:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31171:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31221:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31232:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31217:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31217:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31237:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31210:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31210:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31210:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31292:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31303:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31288:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31288:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31308:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31281:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31281:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31281:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31322:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31334:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31345:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31330:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31330:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31322:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31108:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31122:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30957:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31534:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31551:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31562:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31544:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31544:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31585:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31596:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31581:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31581:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31601:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31574:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31574:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31624:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31635:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31620:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31620:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31640:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31613:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31613:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31613:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31695:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31706:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31691:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31711:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31684:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31684:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31684:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31725:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31737:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31748:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31733:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31733:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31725:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31511:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31525:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31360:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31944:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "31954:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31966:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31977:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31962:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31962:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31954:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31997:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "32008:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31990:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31990:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31990:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32035:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32046:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32031:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32031:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "32055:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32063:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "32051:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32051:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32024:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32024:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32024:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32089:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32100:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32085:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32085:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32105:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32078:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32078:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32078:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32132:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32143:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32128:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32128:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "32148:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32121:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32121:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32121:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31889:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "31900:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "31908:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "31916:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31924:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31935:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31763:398:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 288)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _2))\n        mstore(add(headStart, 256), and(value8, _1))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        value4 := abi_decode_uint32(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint32(add(headStart, 192))\n        let value_1 := calldataload(add(headStart, 224))\n        validator_revert_address(value_1)\n        value7 := value_1\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_c88f947dbab6e5d162cab05f5f573e5e0669748f4150827946097b5f9bc4c0c5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Presale quantity too big\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Signer address cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Edition does not exist\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"This edition is already sold out\")\n        mstore(add(headStart, 96), \".\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"Must send enough to purchase the\")\n        mstore(add(headStart, 96), \" edition.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_03f8adf2ee5c29d54dbd9d6823d072282a9ce7cddea271efb10f69bd037a8806__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"No presale available & open auct\")\n        mstore(add(headStart, 96), \"ion not started\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Auction has ended\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint32(value) -> ret\n    {\n        let _1 := 0xffffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        mstore(end_2, \"/\")\n        end := add(end_2, 1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_enum$_TimeType_$6090_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        if iszero(lt(value0, 2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_string_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := 0\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        let _2 := 32\n        if eq(outOfPlaceEncoding, lt(length, _2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, length)\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        let length := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), _1, length)\n        let end_1 := add(_1, length)\n        mstore(end_1, \"/\")\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(end_1, 1), length_1)\n        end := add(add(end_1, length_1), 1)\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        mstore(_1, \"storefront\")\n        end := add(_1, 10)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Insufficient balance for send\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Unable to send value: recipient \")\n        mstore(add(headStart, 96), \"may have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256__to_t_bytes32_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106101e35760003560e01c806374e7918911610102578063c87b56dd11610095578063e8a3d48511610064578063e8a3d485146106b1578063e985e9c5146106c6578063f2fde38b1461070f578063fbab9e041461072f57600080fd5b8063c87b56dd14610603578063d3bb052814610623578063d4ae752214610650578063e1a3d5731461068457600080fd5b8063abccf3dd116100d1578063abccf3dd14610590578063abfc83a0146105a3578063b88d4fde146105c3578063bb314ca1146105e357600080fd5b806374e79189146105105780638da5cb5b1461053d57806395d89b411461055b578063a22cb4651461057057600080fd5b8063279c806e1161017a5780636352211e116101495780636352211e1461049b57806370a08231146104bb578063715018a6146104db57806373aaf879146104f057600080fd5b8063279c806e146103295780632a55205a1461040f57806342842e0e1461044e578063602787ed1461046e57600080fd5b806313dd2960116101b657806313dd296014610299578063155dd5ee146102c657806318160ddd146102e657806323b872dd1461030957600080fd5b806301ffc9a7146101e857806306fdde031461021d578063081812fc1461023f578063095ea7b314610277575b600080fd5b3480156101f457600080fd5b506102086102033660046127d7565b61074f565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023261077a565b6040516102149190612853565b34801561024b57600080fd5b5061025f61025a366004612866565b61080c565b6040516001600160a01b039091168152602001610214565b34801561028357600080fd5b50610297610292366004612894565b610833565b005b3480156102a557600080fd5b506102b96102b4366004612866565b61094d565b60405161021491906128c0565b3480156102d257600080fd5b506102976102e1366004612866565b610a2e565b3480156102f257600080fd5b506102fb610a8e565b604051908152602001610214565b34801561031557600080fd5b5061029761032436600461290d565b610aaa565b34801561033557600080fd5b506103b1610344366004612866565b60cc6020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919263ffffffff808416936401000000008104821693600160401b8204831693600160601b8304841693600160801b8404811693600160a01b900416911689565b604080516001600160a01b039a8b168152602081019990995263ffffffff978816908901529486166060880152928516608087015290841660a0860152831660c085015290911660e083015290911661010082015261012001610214565b34801561041b57600080fd5b5061042f61042a36600461294e565b610adb565b604080516001600160a01b039093168352602083019190915201610214565b34801561045a57600080fd5b5061029761046936600461290d565b610bd4565b34801561047a57600080fd5b506102fb610489366004612866565b60cd6020526000908152604090205481565b3480156104a757600080fd5b5061025f6104b6366004612866565b610bef565b3480156104c757600080fd5b506102fb6104d6366004612970565b610c4f565b3480156104e757600080fd5b50610297610cd5565b3480156104fc57600080fd5b5061029761050b3660046129a6565b610ce9565b34801561051c57600080fd5b5061053061052b366004612866565b610fe6565b6040516102149190612a3c565b34801561054957600080fd5b506097546001600160a01b031661025f565b34801561056757600080fd5b506102326110a9565b34801561057c57600080fd5b5061029761058b366004612a74565b6110b8565b61029761059e366004612ab2565b6110c3565b3480156105af57600080fd5b506102976105be366004612bda565b61146b565b3480156105cf57600080fd5b506102976105de366004612c7f565b6115f0565b3480156105ef57600080fd5b506102976105fe366004612cff565b611628565b34801561060f57600080fd5b5061023261061e366004612866565b6116a3565b34801561062f57600080fd5b506102fb61063e366004612866565b60cf6020526000908152604090205481565b34801561065c57600080fd5b506102fb7fb0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d04581565b34801561069057600080fd5b506102fb61069f366004612866565b60ce6020526000908152604090205481565b3480156106bd57600080fd5b5061023261176e565b3480156106d257600080fd5b506102086106e1366004612d2b565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561071b57600080fd5b5061029761072a366004612970565b611796565b34801561073b57600080fd5b5061029761074a366004612cff565b61180f565b600063152a902d60e11b6001600160e01b03198316148061077457506107748261187d565b92915050565b60606065805461078990612d59565b80601f01602080910402602001604051908101604052809291908181526020018280546107b590612d59565b80156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b6000610817826118cd565b506000908152606960205260409020546001600160a01b031690565b600061083e82610bef565b9050806001600160a01b0316836001600160a01b0316036108b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108cc57506108cc81336106e1565b61093e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108a7565b610948838361192c565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561098157610981612b2e565b6040519080825280602002602001820160405280156109aa578160200160208202803683370190505b509050600060015b60ca54811015610a2557600081815260cd6020526040902054859003610a13576109db81610bef565b8383815181106109ed576109ed612d93565b6001600160a01b039092166020928302919091019091015281610a0f81612dbf565b9250505b80610a1d81612dbf565b9150506109b2565b50909392505050565b600081815260cf602090815260408083205460ce909252822054610a529190612dd8565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a8a906001600160a01b03168261199a565b5050565b60006001610a9b60ca5490565b610aa59190612dd8565b905090565b610ab43382611aa7565b610ad05760405162461bcd60e51b81526004016108a790612def565b610948838383611b26565b600082815260cd602090815260408083205480845260cc835281842082516101208101845281546001600160a01b03908116808352600184015496830196909652600283015463ffffffff80821696840196909652640100000000810486166060840152600160401b810486166080840152600160601b8104861660a0840152600160801b8104861660c0840152600160a01b900490941660e08201526003909101549092166101008301528392909190610b9e5751925060009150610bcd9050565b6080810151815163ffffffff90911690612710610bbb8389612e3d565b610bc59190612e72565b945094505050505b9250929050565b610948838383604051806020016040528060008152506115f0565b6000818152606760205260408120546001600160a01b0316806107745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a7565b60006001600160a01b038216610cb95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108a7565b506001600160a01b031660009081526068602052604090205490565b610cdd611cc2565b610ce76000611d1c565b565b610cf1611cc2565b610cfc866001612e86565b63ffffffff168263ffffffff1610610d565760405162461bcd60e51b815260206004820152601860248201527f50726573616c65207175616e7469747920746f6f20626967000000000000000060448201526064016108a7565b63ffffffff821615610db8576001600160a01b038116610db85760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f74206265203000000000000060448201526064016108a7565b604051806101200160405280896001600160a01b03168152602001888152602001600063ffffffff1681526020018763ffffffff1681526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff168152602001826001600160a01b031681525060cc6000610e3c60cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355938501516001830155918401516002820180546060870151608088015160a089015160c08a015160e08b015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b93909116929092029190911790556101009093015160039093018054909216921691909117905560cb54604080516001600160a01b03808c168252602082018b905263ffffffff808b16938301939093528289166060830152828816608083015282871660a083015291851660c082015290831660e08201527fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3906101000160405180910390a2610fdc60cb80546001019055565b5050505050505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561101a5761101a612b2e565b604051908082528060200260200182016040528015611043578160200160208202803683370190505b509050600060015b60ca54811015610a2557600081815260cd6020526040902054859003611097578083838151811061107e5761107e612d93565b60209081029190910101528161109381612dbf565b9250505b806110a181612dbf565b91505061104b565b60606066805461078990612d59565b610a8a338383611d6e565b600083815260cc60205260409020600181015460029091015463ffffffff640100000000820481169181811691600160601b8204811691600160801b8104821691600160a01b90910416846111535760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108a7565b8463ffffffff168463ffffffff16106111b85760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b60648201526084016108a7565b8534101561121a5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b60648201526084016108a7565b428363ffffffff16111561131a5760008163ffffffff1611801561124957508063ffffffff168463ffffffff16105b6112ad5760405162461bcd60e51b815260206004820152602f60248201527f4e6f2070726573616c6520617661696c61626c652026206f70656e206175637460448201526e1a5bdb881b9bdd081cdd185c9d1959608a1b60648201526084016108a7565b600089815260cc60205260409020600301546001600160a01b03166112d389898c611e3c565b6001600160a01b03161461131a5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064016108a7565b428263ffffffff16116113635760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b60448201526064016108a7565b600089815260ce602052604081208054349290611381908490612eae565b9091555050600089815260cc60205260408120600201805463ffffffff16916113a983612ec6565b91906101000a81548163ffffffff021916908363ffffffff160217905550506113da336113d560ca5490565b611f68565b8860cd60006113e860ca5490565b81526020810191909152604001600020553361140360ca5490565b60008b815260cc602090815260409182902060020154915163ffffffff90921682528c917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461146060ca80546001019055565b505050505050505050565b600054610100900460ff161580801561148b5750600054600160ff909116105b806114a55750303b1580156114a5575060005460ff166001145b6115085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108a7565b6000805460ff19166001179055801561152b576000805461ff0019166101001790555b61153584846120aa565b61153d6120db565b61154686611796565b816115508661210a565b604051602001611561929190612ee9565b60405160208183030381529060405260c99080519060200190611585929190612728565b5061159460ca80546001019055565b6115a260cb80546001019055565b80156115e8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6115fa3383611aa7565b6116165760405162461bcd60e51b81526004016108a790612def565b6116228484848461220b565b50505050565b611630611cc2565b600082815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff85169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90611697906001908690612f3a565b60405180910390a25050565b6000818152606760205260409020546060906001600160a01b03166117225760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016108a7565b600082815260cd602052604090205460c99061173d9061210a565b6117468461210a565b60405160200161175893929190612fff565b6040516020818303038152906040529050919050565b606060c96040516020016117829190613045565b604051602081830303815290604052905090565b61179e611cc2565b6001600160a01b0381166118035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61180c81611d1c565b50565b611817611cc2565b600082815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff861690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c9161169791908690612f3a565b60006001600160e01b031982166380ac58cd60e01b14806118ae57506001600160e01b03198216635b5e139f60e01b145b8061077457506301ffc9a760e01b6001600160e01b0319831614610774565b6000818152606760205260409020546001600160a01b031661180c5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a7565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061196182610bef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156119ea5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a37576040519150601f19603f3d011682016040523d82523d6000602084013e611a3c565b606091505b50509050806109485760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b60648201526084016108a7565b600080611ab383610bef565b9050806001600160a01b0316846001600160a01b03161480611afa57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611b1e5750836001600160a01b0316611b138461080c565b6001600160a01b0316145b949350505050565b826001600160a01b0316611b3982610bef565b6001600160a01b031614611b9d5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016108a7565b6001600160a01b038216611bff5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b611c0a60008261192c565b6001600160a01b0383166000908152606860205260408120805460019290611c33908490612dd8565b90915550506001600160a01b0382166000908152606860205260408120805460019290611c61908490612eae565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610ce75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a7565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611dcf5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108a7565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000807fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e346546604051602001611e7b929190918252602082015260400190565b60408051808303601f1901815282825280516020918201207fb0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d04582850152308484015233606085015260808085018890528351808603909101815260a085019093528251929091019190912061190160f01b60c084015260c283019190915260e2820152610102016040516020818303038152906040528051906020012090506000611f5e86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061223e9050565b9695505050505050565b6001600160a01b038216611fbe5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108a7565b6000818152606760205260409020546001600160a01b0316156120235760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a7565b6001600160a01b038216600090815260686020526040812080546001929061204c908490612eae565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff166120d15760405162461bcd60e51b81526004016108a79061306b565b610a8a8282612262565b600054610100900460ff166121025760405162461bcd60e51b81526004016108a79061306b565b610ce76122b0565b6060816000036121315750506040805180820190915260018152600360fc1b602082015290565b8160005b811561215b578061214581612dbf565b91506121549050600a83612e72565b9150612135565b60008167ffffffffffffffff81111561217657612176612b2e565b6040519080825280601f01601f1916602001820160405280156121a0576020820181803683370190505b5090505b8415611b1e576121b5600183612dd8565b91506121c2600a866130b6565b6121cd906030612eae565b60f81b8183815181106121e2576121e2612d93565b60200101906001600160f81b031916908160001a905350612204600a86612e72565b94506121a4565b612216848484611b26565b612222848484846122e0565b6116225760405162461bcd60e51b81526004016108a7906130ca565b600080600061224d85856123e1565b9150915061225a8161244c565b509392505050565b600054610100900460ff166122895760405162461bcd60e51b81526004016108a79061306b565b815161229c906065906020850190612728565b508051610948906066906020840190612728565b600054610100900460ff166122d75760405162461bcd60e51b81526004016108a79061306b565b610ce733611d1c565b60006001600160a01b0384163b156123d657604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061232490339089908890889060040161311c565b6020604051808303816000875af192505050801561235f575060408051601f3d908101601f1916820190925261235c9181019061314f565b60015b6123bc573d80801561238d576040519150601f19603f3d011682016040523d82523d6000602084013e612392565b606091505b5080516000036123b45760405162461bcd60e51b81526004016108a7906130ca565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b1e565b506001949350505050565b60008082516041036124175760208301516040840151606085015160001a61240b87828585612602565b94509450505050610bcd565b825160400361244057602083015160408401516124358683836126ef565b935093505050610bcd565b50600090506002610bcd565b600081600481111561246057612460612f24565b036124685750565b600181600481111561247c5761247c612f24565b036124c95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108a7565b60028160048111156124dd576124dd612f24565b0361252a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108a7565b600381600481111561253e5761253e612f24565b036125965760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108a7565b60048160048111156125aa576125aa612f24565b0361180c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108a7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561263957506000905060036126e6565b8460ff16601b1415801561265157508460ff16601c14155b1561266257506000905060046126e6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156126b6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126df576000600192509250506126e6565b9150600090505b94509492505050565b6000806001600160ff1b0383168161270c60ff86901c601b612eae565b905061271a87828885612602565b935093505050935093915050565b82805461273490612d59565b90600052602060002090601f016020900481019282612756576000855561279c565b82601f1061276f57805160ff191683800117855561279c565b8280016001018555821561279c579182015b8281111561279c578251825591602001919060010190612781565b506127a89291506127ac565b5090565b5b808211156127a857600081556001016127ad565b6001600160e01b03198116811461180c57600080fd5b6000602082840312156127e957600080fd5b81356127f4816127c1565b9392505050565b60005b838110156128165781810151838201526020016127fe565b838111156116225750506000910152565b6000815180845261283f8160208601602086016127fb565b601f01601f19169290920160200192915050565b6020815260006127f46020830184612827565b60006020828403121561287857600080fd5b5035919050565b6001600160a01b038116811461180c57600080fd5b600080604083850312156128a757600080fd5b82356128b28161287f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156129015783516001600160a01b0316835292840192918401916001016128dc565b50909695505050505050565b60008060006060848603121561292257600080fd5b833561292d8161287f565b9250602084013561293d8161287f565b929592945050506040919091013590565b6000806040838503121561296157600080fd5b50508035926020909101359150565b60006020828403121561298257600080fd5b81356127f48161287f565b803563ffffffff811681146129a157600080fd5b919050565b600080600080600080600080610100898b0312156129c357600080fd5b88356129ce8161287f565b9750602089013596506129e360408a0161298d565b95506129f160608a0161298d565b94506129ff60808a0161298d565b9350612a0d60a08a0161298d565b9250612a1b60c08a0161298d565b915060e0890135612a2b8161287f565b809150509295985092959890939650565b6020808252825182820181905260009190848201906040850190845b8181101561290157835183529284019291840191600101612a58565b60008060408385031215612a8757600080fd5b8235612a928161287f565b915060208301358015158114612aa757600080fd5b809150509250929050565b600080600060408486031215612ac757600080fd5b83359250602084013567ffffffffffffffff80821115612ae657600080fd5b818601915086601f830112612afa57600080fd5b813581811115612b0957600080fd5b876020828501011115612b1b57600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612b5f57612b5f612b2e565b604051601f8501601f19908116603f01168101908282118183101715612b8757612b87612b2e565b81604052809350858152868686011115612ba057600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612bcb57600080fd5b6127f483833560208501612b44565b600080600080600060a08688031215612bf257600080fd5b8535612bfd8161287f565b945060208601359350604086013567ffffffffffffffff80821115612c2157600080fd5b612c2d89838a01612bba565b94506060880135915080821115612c4357600080fd5b612c4f89838a01612bba565b93506080880135915080821115612c6557600080fd5b50612c7288828901612bba565b9150509295509295909350565b60008060008060808587031215612c9557600080fd5b8435612ca08161287f565b93506020850135612cb08161287f565b925060408501359150606085013567ffffffffffffffff811115612cd357600080fd5b8501601f81018713612ce457600080fd5b612cf387823560208401612b44565b91505092959194509250565b60008060408385031215612d1257600080fd5b82359150612d226020840161298d565b90509250929050565b60008060408385031215612d3e57600080fd5b8235612d498161287f565b91506020830135612aa78161287f565b600181811c90821680612d6d57607f821691505b602082108103612d8d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612dd157612dd1612da9565b5060010190565b600082821015612dea57612dea612da9565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615612e5757612e57612da9565b500290565b634e487b7160e01b600052601260045260246000fd5b600082612e8157612e81612e5c565b500490565b600063ffffffff808316818516808303821115612ea557612ea5612da9565b01949350505050565b60008219821115612ec157612ec1612da9565b500190565b600063ffffffff808316818103612edf57612edf612da9565b6001019392505050565b60008351612efb8184602088016127fb565b835190830190612f0f8183602088016127fb565b602f60f81b9101908152600101949350505050565b634e487b7160e01b600052602160045260246000fd5b6040810160028410612f5c57634e487b7160e01b600052602160045260246000fd5b9281526020015290565b8054600090600181811c9080831680612f8057607f831692505b60208084108203612fa157634e487b7160e01b600052602260045260246000fd5b818015612fb55760018114612fc657612ff3565b60ff19861689528489019650612ff3565b60008881526020902060005b86811015612feb5781548b820152908501908301612fd2565b505084890196505b50505050505092915050565b600061300b8286612f66565b845161301b8183602089016127fb565b602f60f81b910190815283516130388160018401602088016127fb565b0160010195945050505050565b60006130518284612f66565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000826130c5576130c5612e5c565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f5e90830184612827565b60006020828403121561316157600080fd5b81516127f4816127c156fea26469706673582212206e0f6c3171437367122d5bd46629e4b754dcebde268603958b3f5340ed658af964736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x74E79189 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xC87B56DD GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6C6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0xD4AE7522 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xABCCF3DD GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xABCCF3DD EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x5C3 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x74E79189 EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4DB JUMPI DUP1 PUSH4 0x73AAF879 EQ PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x13DD2960 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x277 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D7 JUMP JUMPDEST PUSH2 0x74F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x214 SWAP2 SWAP1 PUSH2 0x2853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25F PUSH2 0x25A CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0x80C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x2894 JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0x94D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x214 SWAP2 SWAP1 PUSH2 0x28C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x2E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0xA8E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x290D JUMP JUMPDEST PUSH2 0xAAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x335 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B1 PUSH2 0x344 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP4 DIV DUP5 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND SWAP2 AND DUP10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH4 0xFFFFFFFF SWAP8 DUP9 AND SWAP1 DUP10 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP3 DUP6 AND PUSH1 0x80 DUP8 ADD MSTORE SWAP1 DUP5 AND PUSH1 0xA0 DUP7 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP6 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42F PUSH2 0x42A CALLDATASIZE PUSH1 0x4 PUSH2 0x294E JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x469 CALLDATASIZE PUSH1 0x4 PUSH2 0x290D JUMP JUMPDEST PUSH2 0xBD4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x489 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25F PUSH2 0x4B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0xBEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x4D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2970 JUMP JUMPDEST PUSH2 0xC4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0xCD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x50B CALLDATASIZE PUSH1 0x4 PUSH2 0x29A6 JUMP JUMPDEST PUSH2 0xCE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x530 PUSH2 0x52B CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0xFE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x214 SWAP2 SWAP1 PUSH2 0x2A3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x10A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x58B CALLDATASIZE PUSH1 0x4 PUSH2 0x2A74 JUMP JUMPDEST PUSH2 0x10B8 JUMP JUMPDEST PUSH2 0x297 PUSH2 0x59E CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB2 JUMP JUMPDEST PUSH2 0x10C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x5BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2BDA JUMP JUMPDEST PUSH2 0x146B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x5DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C7F JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x5FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2CFF JUMP JUMPDEST PUSH2 0x1628 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x61E CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH2 0x16A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x63E CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH32 0xB0B05FBA96C122A3DB5D352971BB77A4E982B43F6B3A779BEB0DCCE9D261D045 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x2866 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x176E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x72A CALLDATASIZE PUSH1 0x4 PUSH2 0x2970 JUMP JUMPDEST PUSH2 0x1796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x74A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CFF JUMP JUMPDEST PUSH2 0x180F JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x774 JUMPI POP PUSH2 0x774 DUP3 PUSH2 0x187D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x789 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B5 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x802 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x802 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x817 DUP3 PUSH2 0x18CD JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83E DUP3 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x8CC JUMPI POP PUSH2 0x8CC DUP2 CALLER PUSH2 0x6E1 JUMP JUMPDEST PUSH2 0x93E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x948 DUP4 DUP4 PUSH2 0x192C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x981 JUMPI PUSH2 0x981 PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9AA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xA13 JUMPI PUSH2 0x9DB DUP2 PUSH2 0xBEF JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9ED JUMPI PUSH2 0x9ED PUSH2 0x2D93 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0xA0F DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xA1D DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x9B2 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xA52 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA8A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x199A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA9B PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xAA5 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xAB4 CALLER DUP3 PUSH2 0x1AA7 JUMP JUMPDEST PUSH2 0xAD0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x948 DUP4 DUP4 DUP4 PUSH2 0x1B26 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP1 DUP5 MSTORE PUSH1 0xCC DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP3 MLOAD PUSH2 0x120 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH5 0x100000000 DUP2 DIV DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP7 AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP5 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0xB9E JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xBCD SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xBBB DUP4 DUP10 PUSH2 0x2E3D JUMP JUMPDEST PUSH2 0xBC5 SWAP2 SWAP1 PUSH2 0x2E72 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x948 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x774 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xCB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xCDD PUSH2 0x1CC2 JUMP JUMPDEST PUSH2 0xCE7 PUSH1 0x0 PUSH2 0x1D1C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCF1 PUSH2 0x1CC2 JUMP JUMPDEST PUSH2 0xCFC DUP7 PUSH1 0x1 PUSH2 0x2E86 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND LT PUSH2 0xD56 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726573616C65207175616E7469747920746F6F206269670000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xE3C PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE SWAP4 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP2 DUP5 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0xE0 DUP12 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP12 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP10 AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 DUP9 AND PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP8 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP2 DUP6 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0xFDC PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x101A JUMPI PUSH2 0x101A PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1043 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x1097 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x107E JUMPI PUSH2 0x107E PUSH2 0x2D93 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0x1093 DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x10A1 DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x104B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x789 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST PUSH2 0xA8A CALLER DUP4 DUP4 PUSH2 0x1D6E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV AND DUP5 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x11B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST DUP6 CALLVALUE LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x1249 JUMPI POP DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT JUMPDEST PUSH2 0x12AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2070726573616C6520617661696C61626C652026206F70656E2061756374 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x1A5BDB881B9BDD081CDD185C9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12D3 DUP10 DUP10 DUP13 PUSH2 0x1E3C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x131A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1381 SWAP1 DUP5 SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x13A9 DUP4 PUSH2 0x2EC6 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x13DA CALLER PUSH2 0x13D5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1F68 JUMP JUMPDEST DUP9 PUSH1 0xCD PUSH1 0x0 PUSH2 0x13E8 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x1403 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP13 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1460 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x148B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x14A5 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1508 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x152B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1535 DUP5 DUP5 PUSH2 0x20AA JUMP JUMPDEST PUSH2 0x153D PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x1546 DUP7 PUSH2 0x1796 JUMP JUMPDEST DUP2 PUSH2 0x1550 DUP7 PUSH2 0x210A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1561 SWAP3 SWAP2 SWAP1 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1585 SWAP3 SWAP2 SWAP1 PUSH2 0x2728 JUMP JUMPDEST POP PUSH2 0x1594 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x15A2 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x15E8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x15FA CALLER DUP4 PUSH2 0x1AA7 JUMP JUMPDEST PUSH2 0x1616 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x1622 DUP5 DUP5 DUP5 DUP5 PUSH2 0x220B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1630 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x1697 SWAP1 PUSH1 0x1 SWAP1 DUP7 SWAP1 PUSH2 0x2F3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1722 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x173D SWAP1 PUSH2 0x210A JUMP JUMPDEST PUSH2 0x1746 DUP5 PUSH2 0x210A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1758 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1782 SWAP2 SWAP1 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x179E PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1803 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x180C DUP2 PUSH2 0x1D1C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1817 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x1697 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0x2F3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x18AE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x774 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x774 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x180C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1961 DUP3 PUSH2 0xBEF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x19EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1A37 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1A3C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x948 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AB3 DUP4 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1AFA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x1B1E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B13 DUP5 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B39 DUP3 PUSH2 0xBEF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1BFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x1C0A PUSH1 0x0 DUP3 PUSH2 0x192C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1C33 SWAP1 DUP5 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1C61 SWAP1 DUP5 SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1DCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E7B SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH32 0xB0B05FBA96C122A3DB5D352971BB77A4E982B43F6B3A779BEB0DCCE9D261D045 DUP3 DUP6 ADD MSTORE ADDRESS DUP5 DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP6 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE2 DUP3 ADD MSTORE PUSH2 0x102 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1F5E DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH2 0x223E SWAP1 POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2023 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x204C SWAP1 DUP5 SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x20D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST PUSH2 0xA8A DUP3 DUP3 PUSH2 0x2262 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2102 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST PUSH2 0xCE7 PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2131 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x215B JUMPI DUP1 PUSH2 0x2145 DUP2 PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP PUSH2 0x2154 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2E72 JUMP JUMPDEST SWAP2 POP PUSH2 0x2135 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2176 JUMPI PUSH2 0x2176 PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21A0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x1B1E JUMPI PUSH2 0x21B5 PUSH1 0x1 DUP4 PUSH2 0x2DD8 JUMP JUMPDEST SWAP2 POP PUSH2 0x21C2 PUSH1 0xA DUP7 PUSH2 0x30B6 JUMP JUMPDEST PUSH2 0x21CD SWAP1 PUSH1 0x30 PUSH2 0x2EAE JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x21E2 JUMPI PUSH2 0x21E2 PUSH2 0x2D93 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2204 PUSH1 0xA DUP7 PUSH2 0x2E72 JUMP JUMPDEST SWAP5 POP PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0x2216 DUP5 DUP5 DUP5 PUSH2 0x1B26 JUMP JUMPDEST PUSH2 0x2222 DUP5 DUP5 DUP5 DUP5 PUSH2 0x22E0 JUMP JUMPDEST PUSH2 0x1622 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x30CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x224D DUP6 DUP6 PUSH2 0x23E1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x225A DUP2 PUSH2 0x244C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2289 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST DUP2 MLOAD PUSH2 0x229C SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2728 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x948 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2728 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x22D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x306B JUMP JUMPDEST PUSH2 0xCE7 CALLER PUSH2 0x1D1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x23D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x2324 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x311C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x235F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x235C SWAP2 DUP2 ADD SWAP1 PUSH2 0x314F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x23BC JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x238D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2392 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x23B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A7 SWAP1 PUSH2 0x30CA JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x1B1E JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x2417 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x240B DUP8 DUP3 DUP6 DUP6 PUSH2 0x2602 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xBCD JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x2440 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2435 DUP7 DUP4 DUP4 PUSH2 0x26EF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xBCD JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xBCD JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2460 JUMPI PUSH2 0x2460 PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x2468 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x247C JUMPI PUSH2 0x247C PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x24C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x24DD JUMPI PUSH2 0x24DD PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x252A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x253E JUMPI PUSH2 0x253E PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x2596 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x25AA JUMPI PUSH2 0x25AA PUSH2 0x2F24 JUMP JUMPDEST SUB PUSH2 0x180C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x2639 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x26E6 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x2651 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2662 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x26E6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x26DF JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x26E6 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x270C PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x2EAE JUMP JUMPDEST SWAP1 POP PUSH2 0x271A DUP8 DUP3 DUP9 DUP6 PUSH2 0x2602 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2734 SWAP1 PUSH2 0x2D59 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2756 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x279C JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x276F JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x279C JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x279C JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x279C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2781 JUMP JUMPDEST POP PUSH2 0x27A8 SWAP3 SWAP2 POP PUSH2 0x27AC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x27A8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x27AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x180C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x27F4 DUP2 PUSH2 0x27C1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2816 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x27FE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1622 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x283F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x27FB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x27F4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2827 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x180C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x28B2 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2901 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x28DC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x292D DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x293D DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2961 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x27F4 DUP2 PUSH2 0x287F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x29A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x29C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x29CE DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x29E3 PUSH1 0x40 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP6 POP PUSH2 0x29F1 PUSH1 0x60 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP5 POP PUSH2 0x29FF PUSH1 0x80 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP4 POP PUSH2 0x2A0D PUSH1 0xA0 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP3 POP PUSH2 0x2A1B PUSH1 0xC0 DUP11 ADD PUSH2 0x298D JUMP JUMPDEST SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x2A2B DUP2 PUSH2 0x287F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2901 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2A58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A92 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2AA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2AFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2B09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2B1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2B5F JUMPI PUSH2 0x2B5F PUSH2 0x2B2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2B87 JUMPI PUSH2 0x2B87 PUSH2 0x2B2E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2BA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2BCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27F4 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2B44 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2BF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2BFD DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C2D DUP10 DUP4 DUP11 ADD PUSH2 0x2BBA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C4F DUP10 DUP4 DUP11 ADD PUSH2 0x2BBA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C72 DUP9 DUP3 DUP10 ADD PUSH2 0x2BBA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2C95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2CA0 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2CB0 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2CD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x2CE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CF3 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2B44 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2D22 PUSH1 0x20 DUP5 ADD PUSH2 0x298D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2D49 DUP2 PUSH2 0x287F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2AA7 DUP2 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D6D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2D8D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2DD1 JUMPI PUSH2 0x2DD1 PUSH2 0x2DA9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2DEA JUMPI PUSH2 0x2DEA PUSH2 0x2DA9 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2E57 JUMPI PUSH2 0x2E57 PUSH2 0x2DA9 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2E81 JUMPI PUSH2 0x2E81 PUSH2 0x2E5C JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x2EA5 JUMPI PUSH2 0x2EA5 PUSH2 0x2DA9 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2EC1 JUMPI PUSH2 0x2EC1 PUSH2 0x2DA9 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x2EDF JUMPI PUSH2 0x2EDF PUSH2 0x2DA9 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x2EFB DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x27FB JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x2F0F DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x27FB JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x2F5C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x2F80 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x2FA1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2FB5 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2FC6 JUMPI PUSH2 0x2FF3 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x2FF3 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2FEB JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x2FD2 JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x300B DUP3 DUP7 PUSH2 0x2F66 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x301B DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x27FB JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3038 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x27FB JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3051 DUP3 DUP5 PUSH2 0x2F66 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30C5 JUMPI PUSH2 0x30C5 PUSH2 0x2E5C JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1F5E SWAP1 DUP4 ADD DUP5 PUSH2 0x2827 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27F4 DUP2 PUSH2 0x27C1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0xF6C3171437367122D5BD46629E4B7 SLOAD 0xDC 0xEB 0xDE 0x26 DUP7 SUB SWAP6 DUP12 EXTCODEHASH MSTORE8 BLOCKHASH 0xED PUSH6 0x8AF964736F6C PUSH4 0x4300080E STOP CALLER ",
              "sourceMap": "1471:13634:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13485:301;;;;;;;;;;-1:-1:-1;13485:301:37;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;13485:301:37;;;;;;;;2931:98:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;;;;;-1:-1:-1;4407:167:7;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:46;;;1674:51;;1662:2;1647:18;4407:167:7;1528:203:46;3928:418:7;;;;;;;;;;-1:-1:-1;3928:418:7;;;;;:::i;:::-;;:::i;:::-;;11972:478:37;;;;;;;;;;-1:-1:-1;11972:478:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9427:546::-;;;;;;;;;;-1:-1:-1;9427:546:37;;;;;:::i;:::-;;:::i;13211:136::-;;;;;;;;;;;;;:::i;:::-;;;3001:25:46;;;2989:2;2974:18;13211:136:37;2855:177:46;5084:327:7;;;;;;;;;;-1:-1:-1;5084:327:7;;;;;:::i;:::-;;:::i;2897:43:37:-;;;;;;;;;;-1:-1:-1;2897:43:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2897:43:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;2897:43:37;;;;;-1:-1:-1;;;2897:43:37;;;;;-1:-1:-1;;;2897:43:37;;;;;-1:-1:-1;;;2897:43:37;;;;;;;;;;;-1:-1:-1;;;;;3929:15:46;;;3911:34;;3976:2;3961:18;;3954:34;;;;4007:10;4053:15;;;4033:18;;;4026:43;4105:15;;;4100:2;4085:18;;4078:43;4158:15;;;4152:3;4137:19;;4130:44;4211:15;;;3891:3;4190:19;;4183:44;4264:15;;4258:3;4243:19;;4236:44;4317:15;;;4311:3;4296:19;;4289:44;4370:15;;;4364:3;4349:19;;4342:44;3860:3;3845:19;2897:43:37;3498:894:46;12590:547:37;;;;;;;;;;-1:-1:-1;12590:547:37;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4842:32:46;;;4824:51;;4906:2;4891:18;;4884:34;;;;4797:18;12590:547:37;4650:274:46;5477:179:7;;;;;;;;;;-1:-1:-1;5477:179:7;;;;;:::i;:::-;;:::i;2988:49:37:-;;;;;;;;;;-1:-1:-1;2988:49:37;;;;;:::i;:::-;;;;;;;;;;;;;;2651:218:7;;;;;;;;;;-1:-1:-1;2651:218:7;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;;;;;-1:-1:-1;2390:204:7;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;5794:1202:37:-;;;;;;;;;;-1:-1:-1;5794:1202:37;;;;;:::i;:::-;;:::i;11421:459::-;;;;;;;;;;-1:-1:-1;11421:459:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1441:85:0:-;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;3093:102:7;;;;;;;;;;;;;:::i;4641:153::-;;;;;;;;;;-1:-1:-1;4641:153:7;;;;;:::i;:::-;;:::i;7226:2195:37:-;;;;;;:::i;:::-;;:::i;4539:654::-;;;;;;;;;;-1:-1:-1;4539:654:37;;;;;:::i;:::-;;:::i;5722:315:7:-;;;;;;;;;;-1:-1:-1;5722:315:7;;;;;:::i;:::-;;:::i;10294:197:37:-;;;;;;;;;;-1:-1:-1;10294:197:37;;;;;:::i;:::-;;:::i;10616:375::-;;;;;;;;;;-1:-1:-1;10616:375:37;;;;;:::i;:::-;;:::i;3257:54::-;;;;;;;;;;-1:-1:-1;3257:54:37;;;;;:::i;:::-;;;;;;;;;;;;;;3384:139;;;;;;;;;;;;3435:88;3384:139;;3116:54;;;;;;;;;;-1:-1:-1;3116:54:37;;;;;:::i;:::-;;;;;;;;;;;;;;11109:216;;;;;;;;;;;;;:::i;4860:162:7:-;;;;;;;;;;-1:-1:-1;4860:162:7;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;2321:198:0;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;10030:209:37:-;;;;;;;;;;-1:-1:-1;10030:209:37;;;;;:::i;:::-;;:::i;13485:301::-;13634:4;-1:-1:-1;;;;;;;;;13673:53:37;;;;:106;;;13730:49;13766:12;13730:35;:49::i;:::-;13654:125;13485:301;-1:-1:-1;;13485:301:37:o;2931:98:7:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;12073:2:46;4068:57:7;;;12055:21:46;12112:2;12092:18;;;12085:30;12151:34;12131:18;;;12124:62;-1:-1:-1;;;12202:18:46;;;12195:31;12243:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;12475:2:46;4136:171:7;;;12457:21:46;12514:2;12494:18;;;12487:30;12553:34;12533:18;;;12526:62;12624:32;12604:18;;;12597:60;12674:19;;4136:171:7;12273:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;11972:478:37:-;12069:32;12118:20;;;:8;:20;;;;;:28;;;12041:16;;12069:32;12118:28;;12104:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12104:43:37;-1:-1:-1;12069:78:37;-1:-1:-1;12157:13:37;12203:1;12185:227;12211:9;929:14:13;12206:2:37;:24;12185:227;;;12256:18;;;;:14;:18;;;;;;:32;;;12252:150;;12333:29;12359:2;12333:25;:29::i;:::-;12308:15;12324:5;12308:22;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12308:54:37;;;:22;;;;;;;;;;;:54;12380:7;;;;:::i;:::-;;;;12252:150;12232:4;;;;:::i;:::-;;;;12185:227;;;-1:-1:-1;12428:15:37;;11972:478;-1:-1:-1;;;11972:478:37:o;9427:546::-;9564:27;9628:31;;;:19;:31;;;;;;;;;9594:19;:31;;;;;;:65;;9628:31;9594:65;:::i;:::-;9765:31;;;;:19;:31;;;;;;;;;9731:19;:31;;;;;:65;9907:8;:20;;;;;:37;9564:95;;-1:-1:-1;9896:70:37;;-1:-1:-1;;;;;9907:37:37;9564:95;9896:10;:70::i;:::-;9479:494;9427:546;:::o;13211:136::-;13257:7;13305:1;13283:19;:9;929:14:13;;838:112;13283:19:37;:23;;;;:::i;:::-;13276:30;;13211:136;:::o;5084:327:7:-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;12590:547:37:-;12713:24;12796;;;:14;:24;;;;;;;;;12855:19;;;:8;:19;;;;;12830:44;;;;;;;;;-1:-1:-1;;;;;12830:44:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12830:44:37;;;;;;;;-1:-1:-1;;;12830:44:37;;;;;;;;-1:-1:-1;;;12830:44:37;;;;;;;;-1:-1:-1;;;12830:44:37;;;;;;;;;;;;;;;;;;;;;12713:24;;12796;;12830:44;12885:107;;12953:24;;-1:-1:-1;12953:24:37;;-1:-1:-1;12945:36:37;;-1:-1:-1;12945:36:37;12885:107;13031:18;;;;13069:24;;13023:27;;;;;13123:6;13096:23;13023:27;13096:10;:23;:::i;:::-;13095:34;;;;:::i;:::-;13061:69;;;;;;;12590:547;;;;;;:::o;5477:179:7:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;2651:218::-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;14285:2:46;2784:56:7;;;14267:21:46;14324:2;14304:18;;;14297:30;-1:-1:-1;;;14343:18:46;;;14336:54;14407:18;;2784:56:7;14083:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;14638:2:46;2481:73:7;;;14620:21:46;14677:2;14657:18;;;14650:30;14716:34;14696:18;;;14689:62;-1:-1:-1;;;14767:18:46;;;14760:39;14816:19;;2481:73:7;14436:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;5794:1202:37:-;1334:13:0;:11;:13::i;:::-;6117::37::1;:9:::0;6129:1:::1;6117:13;:::i;:::-;6098:32;;:16;:32;;;6090:69;;;::::0;-1:-1:-1;;;6090:69:37;;15281:2:46;6090:69:37::1;::::0;::::1;15263:21:46::0;15320:2;15300:18;;;15293:30;15359:26;15339:18;;;15332:54;15403:18;;6090:69:37::1;15079:348:46::0;6090:69:37::1;6174:20;::::0;::::1;::::0;6170:118:::1;;-1:-1:-1::0;;;;;6218:28:37;::::1;6210:67;;;::::0;-1:-1:-1;;;6210:67:37;;15634:2:46;6210:67:37::1;::::0;::::1;15616:21:46::0;15673:2;15653:18;;;15646:30;15712:28;15692:18;;;15685:56;15758:18;;6210:67:37::1;15432:350:46::0;6210:67:37::1;6332:345;;;;;;;;6372:17;-1:-1:-1::0;;;;;6332:345:37::1;;;;;6410:6;6332:345;;;;6439:1;6332:345;;;;;;6464:9;6332:345;;;;;;6499:11;6332:345;;;;;;6535:10;6332:345;;;;;;6568:8;6332:345;;;;;;6607:16;6332:345;;;;;;6652:14;-1:-1:-1::0;;;;;6332:345:37::1;;;::::0;6298:8:::1;:31;6307:21;:11;929:14:13::0;;838:112;6307:21:37::1;6298:31:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;6298:31:37;:379;;;;-1:-1:-1;;;;;;6298:379:37;;::::1;-1:-1:-1::0;;;;;6298:379:37;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;6298:379:37;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;6298:379:37;;;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;6298:379:37;-1:-1:-1;;;6298:379:37;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;6298:379:37;;;;;-1:-1:-1;;;6298:379:37;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;6298:379:37;-1:-1:-1;;;6298:379:37;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;6298:379:37;;-1:-1:-1;;;6298:379:37;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;6721:11:::1;929:14:13::0;6693:262:37::1;::::0;;-1:-1:-1;;;;;16184:15:46;;;16166:34;;16231:2;16216:18;;16209:34;;;16262:10;16308:15;;;16288:18;;;16281:43;;;;16360:15;;;16355:2;16340:18;;16333:43;16413:15;;;16407:3;16392:19;;16385:44;16466:15;;;16146:3;16445:19;;16438:44;16519:15;;;16513:3;16498:19;;16491:44;16572:15;;;16566:3;16551:19;;16544:44;6693:262:37::1;::::0;16115:3:46;16100:19;6693:262:37::1;;;;;;;6966:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;6966:23:37::1;5794:1202:::0;;;;;;;;:::o;11421:459::-;11520:34;11571:20;;;:8;:20;;;;;:28;;;11492:16;;11520:34;11571:28;;11557:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11557:43:37;-1:-1:-1;11520:80:37;-1:-1:-1;11610:13:37;11656:1;11638:202;11664:9;929:14:13;11659:2:37;:24;11638:202;;;11709:18;;;;:14;:18;;;;;;:32;;;11705:125;;11788:2;11761:17;11779:5;11761:24;;;;;;;;:::i;:::-;;;;;;;;;;:29;11808:7;;;;:::i;:::-;;;;11705:125;11685:4;;;;:::i;:::-;;;;11638:202;;3093:102:7;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;7226:2195:37:-;7373:13;7389:20;;;:8;:20;;;;;:26;;;;7443:29;;;;;;;;;;;;7499:28;;;;-1:-1:-1;;;7556:30:37;;;;;-1:-1:-1;;;7613:28:37;;;;;-1:-1:-1;;;7676:36:37;;;;7875:12;7867:47;;;;-1:-1:-1;;;7867:47:37;;16801:2:46;7867:47:37;;;16783:21:46;16840:2;16820:18;;;16813:30;-1:-1:-1;;;16859:18:46;;;16852:52;16921:18;;7867:47:37;16599:346:46;7867:47:37;8010:8;8000:18;;:7;:18;;;7992:64;;;;-1:-1:-1;;;7992:64:37;;17152:2:46;7992:64:37;;;17134:21:46;17191:2;17171:18;;;17164:30;17230:34;17210:18;;;17203:62;-1:-1:-1;;;17281:18:46;;;17274:31;17322:19;;7992:64:37;16950:397:46;7992:64:37;8150:5;8137:9;:18;;8129:72;;;;-1:-1:-1;;;8129:72:37;;17554:2:46;8129:72:37;;;17536:21:46;17593:2;17573:18;;;17566:30;17632:34;17612:18;;;17605:62;-1:-1:-1;;;17683:18:46;;;17676:39;17732:19;;8129:72:37;17352:405:46;8129:72:37;8277:15;8265:9;:27;;;8261:436;;;8412:1;8394:15;:19;;;:48;;;;;8427:15;8417:25;;:7;:25;;;8394:48;8369:154;;;;-1:-1:-1;;;8369:154:37;;17964:2:46;8369:154:37;;;17946:21:46;18003:2;17983:18;;;17976:30;18042:34;18022:18;;;18015:62;-1:-1:-1;;;18093:18:46;;;18086:45;18148:19;;8369:154:37;17762:411:46;8369:154:37;8633:20;;;;:8;:20;;;;;:34;;;-1:-1:-1;;;;;8633:34:37;8596:33;8606:10;;8642;8596:9;:33::i;:::-;-1:-1:-1;;;;;8596:71:37;;8588:98;;;;-1:-1:-1;;;8588:98:37;;18380:2:46;8588:98:37;;;18362:21:46;18419:2;18399:18;;;18392:30;-1:-1:-1;;;18438:18:46;;;18431:44;18492:18;;8588:98:37;18178:338:46;8588:98:37;8777:15;8767:7;:25;;;8759:55;;;;-1:-1:-1;;;8759:55:37;;18723:2:46;8759:55:37;;;18705:21:46;18762:2;18742:18;;;18735:30;-1:-1:-1;;;18781:18:46;;;18774:47;18838:18;;8759:55:37;18521:341:46;8759:55:37;8879:31;;;;:19;:31;;;;;:44;;8914:9;;8879:31;:44;;8914:9;;8879:44;:::i;:::-;;;;-1:-1:-1;;8999:20:37;;;;:8;:20;;;;;:28;;:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;9105:38;9111:10;9123:19;:9;929:14:13;;838:112;9123:19:37;9105:5;:38::i;:::-;9265:10;9227:14;:35;9242:19;:9;929:14:13;;838:112;9242:19:37;9227:35;;;;;;;;;;;-1:-1:-1;9227:35:37;:48;9371:10;9320:19;:9;929:14:13;;838:112;9320:19:37;9341:20;;;;:8;:20;;;;;;;;;:28;;;9291:91;;9341:28;;;;19350:42:46;;9341:20:37;;9291:91;;19323:18:46;9291:91:37;;;;;;;9393:21;:9;1043:19:13;;1061:1;1043:19;;;956:123;9393:21:37;7310:2111;;;;;;7226:2195;;;:::o;4539:654::-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;19605:2:46;3157:201:5;;;19587:21:46;19644:2;19624:18;;;19617:30;19683:34;19663:18;;;19656:62;-1:-1:-1;;;19734:18:46;;;19727:44;19788:19;;3157:201:5;19403:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;4737:29:37::1;4751:5;4758:7;4737:13;:29::i;:::-;4776:16;:14;:16::i;:::-;4864:25;4882:6;4864:17;:25::i;:::-;4993:8;5003:20;:9;:18;:20::i;:::-;4976:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4959:7;:71;;;;;;;;;;;;:::i;:::-;;5085:21;:9;1043:19:13::0;;1061:1;1043:19;;;956:123;5085:21:37::1;5163:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;5163:23:37::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;20608:36:46;;3553:14:5;;20596:2:46;20581:18;3553:14:5;;;;;;;3479:99;3101:483;4539:654:37;;;;;:::o;5722:315:7:-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;10294:197:37:-;1334:13:0;:11;:13::i;:::-;10380:20:37::1;::::0;;;:8:::1;:20;::::0;;;;;;:28:::1;;:39:::0;;-1:-1:-1;;;;10380:39:37::1;-1:-1:-1::0;;;10380:39:37::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10434:50;;::::1;::::0;::::1;::::0;-1:-1:-1;;10380:20:37;;10434:50:::1;:::i;:::-;;;;;;;;10294:197:::0;;:::o;10616:375::-;7571:4:7;7594:16;;;:7;:16;;;;;;10682:13:37;;-1:-1:-1;;;;;7594:16:7;10707:77:37;;;;-1:-1:-1;;;10707:77:37;;21406:2:46;10707:77:37;;;21388:21:46;21445:2;21425:18;;;21418:30;21484:34;21464:18;;;21457:62;-1:-1:-1;;;21535:18:46;;;21528:45;21590:19;;10707:77:37;21204:411:46;10707:77:37;10921:24;;;;:14;:24;;;;;;10912:7;;10921:35;;:33;:35::i;:::-;10963:19;:8;:17;:19::i;:::-;10895:88;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10881:103;;10616:375;;;:::o;11109:216::-;11153:13;11295:7;11278:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;11264:54;;11109:216;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;24011:2:46;2401:73:0::1;::::0;::::1;23993:21:46::0;24050:2;24030:18;;;24023:30;24089:34;24069:18;;;24062:62;-1:-1:-1;;;24140:18:46;;;24133:36;24186:19;;2401:73:0::1;23809:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;10030:209:37:-;1334:13:0;:11;:13::i;:::-;10120:20:37::1;::::0;;;:8:::1;:20;::::0;;;;;:30:::1;;:43:::0;;-1:-1:-1;;;;10120:43:37::1;-1:-1:-1::0;;;10120:43:37::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10178:54;;10120:43;;10178:54:::1;::::0;::::1;::::0;10120:20;;;10178:54:::1;:::i;1987:344:7:-:0;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;1060:166:17;12173:133:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;14285:2:46;12246:53:7;;;14267:21:46;14324:2;14304:18;;;14297:30;-1:-1:-1;;;14343:18:46;;;14336:54;14407:18;;12246:53:7;14083:348:46;11464:182:7;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;14048:308:37:-;14164:7;14139:21;:32;;14131:74;;;;-1:-1:-1;;;14131:74:37;;24418:2:46;14131:74:37;;;24400:21:46;24457:2;24437:18;;;24430:30;24496:31;24476:18;;;24469:59;24545:18;;14131:74:37;24216:353:46;14131:74:37;14217:12;14235:10;-1:-1:-1;;;;;14235:15:37;14258:7;14235:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14216:54;;;14288:7;14280:69;;;;-1:-1:-1;;;14280:69:37;;24986:2:46;14280:69:37;;;24968:21:46;25025:2;25005:18;;;24998:30;25064:34;25044:18;;;25037:62;-1:-1:-1;;;25115:18:46;;;25108:47;25172:19;;14280:69:37;24784:413:46;7789:272:7;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;25404:2:46;10855:92:7;;;25386:21:46;25443:2;25423:18;;;25416:30;25482:34;25462:18;;;25455:62;-1:-1:-1;;;25533:18:46;;;25526:35;25578:19;;10855:92:7;25202:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;25810:2:46;10957:65:7;;;25792:21:46;25849:2;25829:18;;;25822:30;25888:34;25868:18;;;25861:62;-1:-1:-1;;;25939:18:46;;;25932:34;25983:19;;10957:65:7;25608:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;26215:2:46;1654:68:0;;;26197:21:46;;;26234:18;;;26227:30;26293:34;26273:18;;;26266:62;26345:18;;1654:68:0;26013:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;11782:307:7:-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;26576:2:46;11915:55:7;;;26558:21:46;26615:2;26595:18;;;26588:30;26654:27;26634:18;;;26627:55;26699:18;;11915:55:7;26374:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;14591:512:37:-;14679:7;14698:14;14821:42;14865:13;14810:69;;;;;;;;26902:25:46;;;26958:2;26943:18;;26936:34;26890:2;26875:18;;26728:248;14810:69:37;;;;;;;-1:-1:-1;;14810:69:37;;;;;;14800:80;;14810:69;14800:80;;;;3435:88;14908:67;;;27212:25:46;14945:4:37;27291:18:46;;;27284:43;14952:10:37;27343:18:46;;;27336:43;27395:18;;;;27388:34;;;14908:67:37;;;;;;;;;;27184:19:46;;;14908:67:37;;;14898:78;;;;;;;;;;-1:-1:-1;;;14738:252:37;;;27691:27:46;27734:11;;;27727:27;;;;27770:12;;;27763:28;27807:12;;14738:252:37;;;;;;;;;;;;14715:285;;;;;;14698:302;;15010:24;15037:26;15052:10;;15037:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15037:6:37;;:26;-1:-1:-1;;15037:14:37;:26;-1:-1:-1;15037:26:37:i;:::-;15010:53;14591:512;-1:-1:-1;;;;;;14591:512:37:o;9351:427:7:-;-1:-1:-1;;;;;9430:16:7;;9422:61;;;;-1:-1:-1;;;9422:61:7;;28032:2:46;9422:61:7;;;28014:21:46;;;28051:18;;;28044:30;28110:34;28090:18;;;28083:62;28162:18;;9422:61:7;27830:356:46;9422:61:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;:30;9493:58;;;;-1:-1:-1;;;9493:58:7;;28393:2:46;9493:58:7;;;28375:21:46;28432:2;28412:18;;;28405:30;28471;28451:18;;;28444:58;28519:18;;9493:58:7;28191:352:46;9493:58:7;-1:-1:-1;;;;;9618:13:7;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:7;-1:-1:-1;;;;;9646:21:7;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;9479:494:37;9427:546;:::o;1605:149:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1708:39:7::1;1732:5;1739:7;1708:23;:39::i;1003:95:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;392:703:30:-:0;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:30;;;;;;;;;;;;-1:-1:-1;;;691:10:30;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:30;;-1:-1:-1;837:2:30;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:30;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:30;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:30;;;;;;;;-1:-1:-1;1036:11:30;1045:2;1036:11;;:::i;:::-;;;908:150;;6898:305:7;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;4402:227:31:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;:::-;-1:-1:-1;4613:9:31;4402:227;-1:-1:-1;;;4402:227:31:o;1760:160:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1873:13:7;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1896:17:7;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;1104:111:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;12858:853:7:-:0;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;12858:853;;;;;;:::o;2243:1373:31:-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:31;;-1:-1:-1;3563:35:31;3543:56;;548:631;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;766:34;;-1:-1:-1;;;766:34:31;;30446:2:46;766:34:31;;;30428:21:46;30485:2;30465:18;;;30458:30;30524:26;30504:18;;;30497:54;30568:18;;766:34:31;30244:348:46;708:465:31;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;881:41;;-1:-1:-1;;;881:41:31;;30799:2:46;881:41:31;;;30781:21:46;30838:2;30818:18;;;30811:30;30877:33;30857:18;;;30850:61;30928:18;;881:41:31;30597:355:46;817:356:31;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;998:44;;-1:-1:-1;;;998:44:31;;31159:2:46;998:44:31;;;31141:21:46;31198:2;31178:18;;;31171:30;31237:34;31217:18;;;31210:62;-1:-1:-1;;;31288:18:46;;;31281:32;31330:19;;998:44:31;30957:398:46;939:234:31;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;1118:44;;-1:-1:-1;;;1118:44:31;;31562:2:46;1118:44:31;;;31544:21:46;31601:2;31581:18;;;31574:30;31640:34;31620:18;;;31613:62;-1:-1:-1;;;31691:18:46;;;31684:32;31733:19;;1118:44:31;31360:398:46;5810:1603:31;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:31;;-1:-1:-1;6962:30:31;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:31;;-1:-1:-1;7071:30:31;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;31990:25:46;;;32063:4;32051:17;;32031:18;;;32024:45;;;;32085:18;;;32078:34;;;32128:18;;;32121:34;;;7224:24:31;;31962:19:46;;7224:24:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:31;;-1:-1:-1;;7224:24:31;;;-1:-1:-1;;;;;;;7262:20:31;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:31;;-1:-1:-1;5810:1603:31;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:31;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:46;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:46:o;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:46;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:46;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:46:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:46;;1343:180;-1:-1:-1;1343:180:46:o;1736:131::-;-1:-1:-1;;;;;1811:31:46;;1801:42;;1791:70;;1857:1;1854;1847:12;1872:315;1940:6;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2056:9;2043:23;2075:31;2100:5;2075:31;:::i;:::-;2125:5;2177:2;2162:18;;;;2149:32;;-1:-1:-1;;;1872:315:46:o;2192:658::-;2363:2;2415:21;;;2485:13;;2388:18;;;2507:22;;;2334:4;;2363:2;2586:15;;;;2560:2;2545:18;;;2334:4;2629:195;2643:6;2640:1;2637:13;2629:195;;;2708:13;;-1:-1:-1;;;;;2704:39:46;2692:52;;2799:15;;;;2764:12;;;;2740:1;2658:9;2629:195;;;-1:-1:-1;2841:3:46;;2192:658;-1:-1:-1;;;;;;2192:658:46:o;3037:456::-;3114:6;3122;3130;3183:2;3171:9;3162:7;3158:23;3154:32;3151:52;;;3199:1;3196;3189:12;3151:52;3238:9;3225:23;3257:31;3282:5;3257:31;:::i;:::-;3307:5;-1:-1:-1;3364:2:46;3349:18;;3336:32;3377:33;3336:32;3377:33;:::i;:::-;3037:456;;3429:7;;-1:-1:-1;;;3483:2:46;3468:18;;;;3455:32;;3037:456::o;4397:248::-;4465:6;4473;4526:2;4514:9;4505:7;4501:23;4497:32;4494:52;;;4542:1;4539;4532:12;4494:52;-1:-1:-1;;4565:23:46;;;4635:2;4620:18;;;4607:32;;-1:-1:-1;4397:248:46:o;4929:247::-;4988:6;5041:2;5029:9;5020:7;5016:23;5012:32;5009:52;;;5057:1;5054;5047:12;5009:52;5096:9;5083:23;5115:31;5140:5;5115:31;:::i;5181:163::-;5248:20;;5308:10;5297:22;;5287:33;;5277:61;;5334:1;5331;5324:12;5277:61;5181:163;;;:::o;5349:829::-;5474:6;5482;5490;5498;5506;5514;5522;5530;5583:3;5571:9;5562:7;5558:23;5554:33;5551:53;;;5600:1;5597;5590:12;5551:53;5639:9;5626:23;5658:31;5683:5;5658:31;:::i;:::-;5708:5;-1:-1:-1;5760:2:46;5745:18;;5732:32;;-1:-1:-1;5783:37:46;5816:2;5801:18;;5783:37;:::i;:::-;5773:47;;5839:37;5872:2;5861:9;5857:18;5839:37;:::i;:::-;5829:47;;5895:38;5928:3;5917:9;5913:19;5895:38;:::i;:::-;5885:48;;5952:38;5985:3;5974:9;5970:19;5952:38;:::i;:::-;5942:48;;6009:38;6042:3;6031:9;6027:19;6009:38;:::i;:::-;5999:48;;6099:3;6088:9;6084:19;6071:33;6113;6138:7;6113:33;:::i;:::-;6165:7;6155:17;;;5349:829;;;;;;;;;;;:::o;6183:632::-;6354:2;6406:21;;;6476:13;;6379:18;;;6498:22;;;6325:4;;6354:2;6577:15;;;;6551:2;6536:18;;;6325:4;6620:169;6634:6;6631:1;6628:13;6620:169;;;6695:13;;6683:26;;6764:15;;;;6729:12;;;;6656:1;6649:9;6620:169;;6820:416;6885:6;6893;6946:2;6934:9;6925:7;6921:23;6917:32;6914:52;;;6962:1;6959;6952:12;6914:52;7001:9;6988:23;7020:31;7045:5;7020:31;:::i;:::-;7070:5;-1:-1:-1;7127:2:46;7112:18;;7099:32;7169:15;;7162:23;7150:36;;7140:64;;7200:1;7197;7190:12;7140:64;7223:7;7213:17;;;6820:416;;;;;:::o;7241:659::-;7320:6;7328;7336;7389:2;7377:9;7368:7;7364:23;7360:32;7357:52;;;7405:1;7402;7395:12;7357:52;7441:9;7428:23;7418:33;;7502:2;7491:9;7487:18;7474:32;7525:18;7566:2;7558:6;7555:14;7552:34;;;7582:1;7579;7572:12;7552:34;7620:6;7609:9;7605:22;7595:32;;7665:7;7658:4;7654:2;7650:13;7646:27;7636:55;;7687:1;7684;7677:12;7636:55;7727:2;7714:16;7753:2;7745:6;7742:14;7739:34;;;7769:1;7766;7759:12;7739:34;7814:7;7809:2;7800:6;7796:2;7792:15;7788:24;7785:37;7782:57;;;7835:1;7832;7825:12;7782:57;7866:2;7862;7858:11;7848:21;;7888:6;7878:16;;;;;7241:659;;;;;:::o;7905:127::-;7966:10;7961:3;7957:20;7954:1;7947:31;7997:4;7994:1;7987:15;8021:4;8018:1;8011:15;8037:632;8102:5;8132:18;8173:2;8165:6;8162:14;8159:40;;;8179:18;;:::i;:::-;8254:2;8248:9;8222:2;8308:15;;-1:-1:-1;;8304:24:46;;;8330:2;8300:33;8296:42;8284:55;;;8354:18;;;8374:22;;;8351:46;8348:72;;;8400:18;;:::i;:::-;8440:10;8436:2;8429:22;8469:6;8460:15;;8499:6;8491;8484:22;8539:3;8530:6;8525:3;8521:16;8518:25;8515:45;;;8556:1;8553;8546:12;8515:45;8606:6;8601:3;8594:4;8586:6;8582:17;8569:44;8661:1;8654:4;8645:6;8637;8633:19;8629:30;8622:41;;;;8037:632;;;;;:::o;8674:222::-;8717:5;8770:3;8763:4;8755:6;8751:17;8747:27;8737:55;;8788:1;8785;8778:12;8737:55;8810:80;8886:3;8877:6;8864:20;8857:4;8849:6;8845:17;8810:80;:::i;8901:948::-;9026:6;9034;9042;9050;9058;9111:3;9099:9;9090:7;9086:23;9082:33;9079:53;;;9128:1;9125;9118:12;9079:53;9167:9;9154:23;9186:31;9211:5;9186:31;:::i;:::-;9236:5;-1:-1:-1;9288:2:46;9273:18;;9260:32;;-1:-1:-1;9343:2:46;9328:18;;9315:32;9366:18;9396:14;;;9393:34;;;9423:1;9420;9413:12;9393:34;9446:50;9488:7;9479:6;9468:9;9464:22;9446:50;:::i;:::-;9436:60;;9549:2;9538:9;9534:18;9521:32;9505:48;;9578:2;9568:8;9565:16;9562:36;;;9594:1;9591;9584:12;9562:36;9617:52;9661:7;9650:8;9639:9;9635:24;9617:52;:::i;:::-;9607:62;;9722:3;9711:9;9707:19;9694:33;9678:49;;9752:2;9742:8;9739:16;9736:36;;;9768:1;9765;9758:12;9736:36;;9791:52;9835:7;9824:8;9813:9;9809:24;9791:52;:::i;:::-;9781:62;;;8901:948;;;;;;;;:::o;9854:795::-;9949:6;9957;9965;9973;10026:3;10014:9;10005:7;10001:23;9997:33;9994:53;;;10043:1;10040;10033:12;9994:53;10082:9;10069:23;10101:31;10126:5;10101:31;:::i;:::-;10151:5;-1:-1:-1;10208:2:46;10193:18;;10180:32;10221:33;10180:32;10221:33;:::i;:::-;10273:7;-1:-1:-1;10327:2:46;10312:18;;10299:32;;-1:-1:-1;10382:2:46;10367:18;;10354:32;10409:18;10398:30;;10395:50;;;10441:1;10438;10431:12;10395:50;10464:22;;10517:4;10509:13;;10505:27;-1:-1:-1;10495:55:46;;10546:1;10543;10536:12;10495:55;10569:74;10635:7;10630:2;10617:16;10612:2;10608;10604:11;10569:74;:::i;:::-;10559:84;;;9854:795;;;;;;;:::o;10654:252::-;10721:6;10729;10782:2;10770:9;10761:7;10757:23;10753:32;10750:52;;;10798:1;10795;10788:12;10750:52;10834:9;10821:23;10811:33;;10863:37;10896:2;10885:9;10881:18;10863:37;:::i;:::-;10853:47;;10654:252;;;;;:::o;11093:388::-;11161:6;11169;11222:2;11210:9;11201:7;11197:23;11193:32;11190:52;;;11238:1;11235;11228:12;11190:52;11277:9;11264:23;11296:31;11321:5;11296:31;:::i;:::-;11346:5;-1:-1:-1;11403:2:46;11388:18;;11375:32;11416:33;11375:32;11416:33;:::i;11486:380::-;11565:1;11561:12;;;;11608;;;11629:61;;11683:4;11675:6;11671:17;11661:27;;11629:61;11736:2;11728:6;11725:14;11705:18;11702:38;11699:161;;11782:10;11777:3;11773:20;11770:1;11763:31;11817:4;11814:1;11807:15;11845:4;11842:1;11835:15;11699:161;;11486:380;;;:::o;12704:127::-;12765:10;12760:3;12756:20;12753:1;12746:31;12796:4;12793:1;12786:15;12820:4;12817:1;12810:15;12836:127;12897:10;12892:3;12888:20;12885:1;12878:31;12928:4;12925:1;12918:15;12952:4;12949:1;12942:15;12968:135;13007:3;13028:17;;;13025:43;;13048:18;;:::i;:::-;-1:-1:-1;13095:1:46;13084:13;;12968:135::o;13108:125::-;13148:4;13176:1;13173;13170:8;13167:34;;;13181:18;;:::i;:::-;-1:-1:-1;13218:9:46;;13108:125::o;13238:410::-;13440:2;13422:21;;;13479:2;13459:18;;;13452:30;13518:34;13513:2;13498:18;;13491:62;-1:-1:-1;;;13584:2:46;13569:18;;13562:44;13638:3;13623:19;;13238:410::o;13653:168::-;13693:7;13759:1;13755;13751:6;13747:14;13744:1;13741:21;13736:1;13729:9;13722:17;13718:45;13715:71;;;13766:18;;:::i;:::-;-1:-1:-1;13806:9:46;;13653:168::o;13826:127::-;13887:10;13882:3;13878:20;13875:1;13868:31;13918:4;13915:1;13908:15;13942:4;13939:1;13932:15;13958:120;13998:1;14024;14014:35;;14029:18;;:::i;:::-;-1:-1:-1;14063:9:46;;13958:120::o;14846:228::-;14885:3;14913:10;14950:2;14947:1;14943:10;14980:2;14977:1;14973:10;15011:3;15007:2;15003:12;14998:3;14995:21;14992:47;;;15019:18;;:::i;:::-;15055:13;;14846:228;-1:-1:-1;;;;14846:228:46:o;18867:128::-;18907:3;18938:1;18934:6;18931:1;18928:13;18925:39;;;18944:18;;:::i;:::-;-1:-1:-1;18980:9:46;;18867:128::o;19000:201::-;19038:3;19066:10;19111:2;19104:5;19100:14;19138:2;19129:7;19126:15;19123:41;;19144:18;;:::i;:::-;19193:1;19180:15;;19000:201;-1:-1:-1;;;19000:201:46:o;19818:633::-;20098:3;20136:6;20130:13;20152:53;20198:6;20193:3;20186:4;20178:6;20174:17;20152:53;:::i;:::-;20268:13;;20227:16;;;;20290:57;20268:13;20227:16;20324:4;20312:17;;20290:57;:::i;:::-;-1:-1:-1;;;20369:20:46;;20398:18;;;20443:1;20432:13;;19818:633;-1:-1:-1;;;;19818:633:46:o;20655:127::-;20716:10;20711:3;20707:20;20704:1;20697:31;20747:4;20744:1;20737:15;20771:4;20768:1;20761:15;20787:412;20960:2;20945:18;;20993:1;20982:13;;20972:144;;21038:10;21033:3;21029:20;21026:1;21019:31;21073:4;21070:1;21063:15;21101:4;21098:1;21091:15;20972:144;21125:25;;;21181:2;21166:18;21159:34;20787:412;:::o;21746:973::-;21831:12;;21796:3;;21886:1;21906:18;;;;21959;;;;21986:61;;22040:4;22032:6;22028:17;22018:27;;21986:61;22066:2;22114;22106:6;22103:14;22083:18;22080:38;22077:161;;22160:10;22155:3;22151:20;22148:1;22141:31;22195:4;22192:1;22185:15;22223:4;22220:1;22213:15;22077:161;22254:18;22281:104;;;;22399:1;22394:319;;;;22247:466;;22281:104;-1:-1:-1;;22314:24:46;;22302:37;;22359:16;;;;-1:-1:-1;22281:104:46;;22394:319;21693:1;21686:14;;;21730:4;21717:18;;22488:1;22502:165;22516:6;22513:1;22510:13;22502:165;;;22594:14;;22581:11;;;22574:35;22637:16;;;;22531:10;;22502:165;;;22506:3;;22696:6;22691:3;22687:16;22680:23;;22247:466;;;;;;;21746:973;;;;:::o;22724:714::-;23049:3;23077:38;23111:3;23103:6;23077:38;:::i;:::-;23144:6;23138:13;23160:52;23205:6;23201:2;23194:4;23186:6;23182:17;23160:52;:::i;:::-;-1:-1:-1;;;23234:15:46;;23258:18;;;23301:13;;23323:65;23301:13;23375:1;23364:13;;23357:4;23345:17;;23323:65;:::i;:::-;23408:20;23430:1;23404:28;;22724:714;-1:-1:-1;;;;;22724:714:46:o;23443:361::-;23672:3;23700:38;23734:3;23726:6;23700:38;:::i;:::-;-1:-1:-1;;;23747:24:46;;23795:2;23787:11;;23443:361;-1:-1:-1;;;23443:361:46:o;28548:407::-;28750:2;28732:21;;;28789:2;28769:18;;;28762:30;28828:34;28823:2;28808:18;;28801:62;-1:-1:-1;;;28894:2:46;28879:18;;28872:41;28945:3;28930:19;;28548:407::o;28960:112::-;28992:1;29018;29008:35;;29023:18;;:::i;:::-;-1:-1:-1;29057:9:46;;28960:112::o;29077:414::-;29279:2;29261:21;;;29318:2;29298:18;;;29291:30;29357:34;29352:2;29337:18;;29330:62;-1:-1:-1;;;29423:2:46;29408:18;;29401:48;29481:3;29466:19;;29077:414::o;29496:489::-;-1:-1:-1;;;;;29765:15:46;;;29747:34;;29817:15;;29812:2;29797:18;;29790:43;29864:2;29849:18;;29842:34;;;29912:3;29907:2;29892:18;;29885:31;;;29690:4;;29933:46;;29959:19;;29951:6;29933:46;:::i;29990:249::-;30059:6;30112:2;30100:9;30091:7;30087:23;30083:32;30080:52;;;30128:1;30125;30118:12;30080:52;30160:9;30154:16;30179:30;30203:5;30179:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2541200",
                "executionCost": "2748",
                "totalCost": "2543948"
              },
              "external": {
                "PRESALE_TYPEHASH()": "284",
                "approve(address,uint256)": "infinite",
                "balanceOf(address)": "2650",
                "buyEdition(uint256,bytes)": "infinite",
                "contractURI()": "infinite",
                "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": "infinite",
                "depositedForEdition(uint256)": "2549",
                "editions(uint256)": "9205",
                "getApproved(uint256)": "4815",
                "getOwnersOfEdition(uint256)": "infinite",
                "getTokenIdsOfEdition(uint256)": "infinite",
                "initialize(address,uint256,string,string,string)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "owner()": "2399",
                "ownerOf(uint256)": "2583",
                "renounceOwnership()": "infinite",
                "royaltyInfo(uint256,uint256)": "11666",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26789",
                "setEndTime(uint256,uint32)": "28709",
                "setStartTime(uint256,uint32)": "28708",
                "supportsInterface(bytes4)": "infinite",
                "symbol()": "infinite",
                "tokenToEdition(uint256)": "2550",
                "tokenURI(uint256)": "infinite",
                "totalSupply()": "2490",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite",
                "withdrawFunds(uint256)": "infinite",
                "withdrawnForEdition(uint256)": "2505"
              },
              "internal": {
                "_sendFunds(address payable,uint256)": "infinite",
                "getSigner(bytes calldata,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "PRESALE_TYPEHASH()": "d4ae7522",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "buyEdition(uint256,bytes)": "abccf3dd",
              "contractURI()": "e8a3d485",
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": "73aaf879",
              "depositedForEdition(uint256)": "e1a3d573",
              "editions(uint256)": "279c806e",
              "getApproved(uint256)": "081812fc",
              "getOwnersOfEdition(uint256)": "13dd2960",
              "getTokenIdsOfEdition(uint256)": "74e79189",
              "initialize(address,uint256,string,string,string)": "abfc83a0",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "renounceOwnership()": "715018a6",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setEndTime(uint256,uint32)": "bb314ca1",
              "setStartTime(uint256,uint32)": "fbab9e04",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenToEdition(uint256)": "602787ed",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply()": "18160ddd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdrawFunds(uint256)": "155dd5ee",
              "withdrawnForEdition(uint256)": "d3bb0528"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum ArtistV2.TimeType\",\"name\":\"timeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"newTime\",\"type\":\"uint32\"}],\"name\":\"AuctionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"presaleQuantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"EditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"}],\"name\":\"EditionPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PRESALE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"buyEdition\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_presaleQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_signerAddress\",\"type\":\"address\"}],\"name\":\"createEdition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositedForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"editions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"presaleQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"getOwnersOfEdition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"getTokenIdsOfEdition\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_artistId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"setEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"}],\"name\":\"setStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawnForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SoundXYZ - @gigamesh & @vigneshka\",\"details\":\"Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyEdition(uint256,bytes)\":{\"params\":{\"_editionId\":\"The id of the edition to purchase\",\"_signature\":\"A signed message for authorizing presale purchases\"}},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)\":{\"params\":{\"_endTime\":\"The end time of the auction, in seconds since unix epoch.\",\"_fundingRecipient\":\"The account that will receive sales revenue.\",\"_presaleQuantity\":\"The quantity of presale tokens.\",\"_price\":\"The price at which each token will be sold, in ETH.\",\"_quantity\":\"The maximum number of tokens that can be sold.\",\"_royaltyBPS\":\"The royalty amount in bps.\",\"_signerAddress\":\"signer address.\",\"_startTime\":\"The start time of the auction, in seconds since unix epoch.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getOwnersOfEdition(uint256)\":{\"params\":{\"_editionId\":\"edition id\"}},\"getTokenIdsOfEdition(uint256)\":{\"params\":{\"_editionId\":\"edition id\"}},\"initialize(address,uint256,string,string,string)\":{\"params\":{\"_name\":\"Name of artist\",\"_owner\":\"Owner of edition\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"Sale price for the token\",\"_tokenId\":\"token id\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-165\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Artist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyEdition(uint256,bytes)\":{\"notice\":\"Creates a new token for the given edition, and assigns it to the buyer\"},\"contractURI()\":{\"notice\":\"Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\"},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)\":{\"notice\":\"Creates a new edition.\"},\"getOwnersOfEdition(uint256)\":{\"notice\":\"Get owners of a given edition id\"},\"getTokenIdsOfEdition(uint256)\":{\"notice\":\"Get token ids for a given edition id\"},\"initialize(address,uint256,string,string,string)\":{\"notice\":\"Initializes the contract\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Get royalty information for token\"},\"setEndTime(uint256,uint32)\":{\"notice\":\"Sets the end time for an edition\"},\"setStartTime(uint256,uint32)\":{\"notice\":\"Sets the start time for an edition\"},\"supportsInterface(bytes4)\":{\"notice\":\"Informs other contracts which interfaces this contract supports\"},\"tokenURI(uint256)\":{\"notice\":\"Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\"},\"totalSupply()\":{\"notice\":\"The total number of tokens created by this contract\"}},\"notice\":\"This contract is used to create & sell song NFTs for the artist who owns the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistV2.sol\":\"ArtistV2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n        require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n        return _IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeTo} and {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"../ERC1967/ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\\n *\\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\\n * conflict with the storage layout of the implementation behind the proxy.\\n *\\n * _Available since v3.4._\\n */\\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the proxy with `beacon`.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\\n     * constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract with the interface {IBeacon}.\\n     */\\n    constructor(address beacon, bytes memory data) payable {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current beacon address.\\n     */\\n    function _beacon() internal view virtual returns (address) {\\n        return _getBeacon();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address of the associated beacon.\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return IBeacon(_getBeacon()).implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract.\\n     * - The implementation returned by `beacon` must be a contract.\\n     */\\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n}\\n\",\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../../access/Ownable.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\\n * implementation contract, which is where they will delegate all function calls.\\n *\\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\\n */\\ncontract UpgradeableBeacon is IBeacon, Ownable {\\n    address private _implementation;\\n\\n    /**\\n     * @dev Emitted when the implementation returned by the beacon is changed.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\\n     * beacon.\\n     */\\n    constructor(address implementation_) {\\n        _setImplementation(implementation_);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function implementation() public view virtual override returns (address) {\\n        return _implementation;\\n    }\\n\\n    /**\\n     * @dev Upgrades the beacon to a new implementation.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * Requirements:\\n     *\\n     * - msg.sender must be the owner of the contract.\\n     * - `newImplementation` must be a contract.\\n     */\\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Sets the implementation contract address for this beacon\\n     *\\n     * Requirements:\\n     *\\n     * - `newImplementation` must be a contract.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"UpgradeableBeacon: implementation is not a contract\\\");\\n        _implementation = newImplementation;\\n    }\\n}\\n\",\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\"},\"contracts/Artist.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\n\\n// This contract is a combination of Mirror.xyz's Editions.sol and Zora's SingleEditionMintable.sol\\n\\n/**\\n * @title Artist\\n * @author SoundXYZ\\n */\\ncontract Artist is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // todo (optimization): link Strings as a deployed library\\n    using Strings for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n    }\\n\\n    // ============ Storage ============\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId;\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n\\n    // ============ Events ============\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer\\n    );\\n\\n    // ============ Methods ============\\n\\n    /**\\n      @param _owner Owner of edition\\n      @param _name Name of artist\\n    */\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set token id start to be 1 not 0\\n        atTokenId.increment();\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime\\n    ) external onlyOwner {\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    function buyEdition(uint256 _editionId) external payable {\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(editions[_editionId].quantity > 0, 'Edition does not exist');\\n        // Check that there are still tokens available to purchase.\\n        require(editions[_editionId].numSold < editions[_editionId].quantity, 'This edition is already sold out.');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= editions[_editionId].price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases before the start time\\n        require(editions[_editionId].startTime < block.timestamp, \\\"Auction hasn't started\\\");\\n        // Don't allow purchases after the end time\\n        require(editions[_editionId].endTime > block.timestamp, 'Auction has ended');\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, atTokenId.current());\\n        // Update the deposited total for the edition\\n        depositedForEdition[_editionId] += msg.value;\\n        // Increment the number of tokens sold for this edition.\\n        editions[_editionId].numSold++;\\n        // Store the mapping of token id to the edition being purchased.\\n        tokenToEdition[atTokenId.current()] = _editionId;\\n\\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\\n\\n        atTokenId.increment();\\n    }\\n\\n    // ============ Operational Methods ============\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n    }\\n\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n    }\\n\\n    // ============ NFT Methods ============\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\\n    }\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    // ============ Extensions =================\\n\\n    /**\\n        @dev Get token ids for a given edition id\\n        @param _editionId edition id\\n     */\\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                tokenIdsOfEdition[index] = id;\\n                index++;\\n            }\\n        }\\n        return tokenIdsOfEdition;\\n    }\\n\\n    /**\\n        @dev Get owners of a given edition id\\n        @param _editionId edition id\\n     */\\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\\n                index++;\\n            }\\n        }\\n        return ownersOfEdition;\\n    }\\n\\n    /**\\n        @dev Get royalty information for token\\n        @param _editionId edition id\\n        @param _salePrice Sale price for the token\\n     */\\n    function royaltyInfo(uint256 _editionId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        Edition memory edition = editions[_editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    function totalSupply() external view returns (uint256) {\\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\\n    }\\n\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    // ============ Private Methods ============\\n\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n}\\n\",\"keccak256\":\"0x275df23e9824418bb46b4643f2cee3b4871481f1a4be57f357af6753b485aab0\",\"license\":\"GPL-3.0-or-later\"},\"contracts/ArtistCreator.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';\\nimport './Artist.sol';\\n\\ncontract ArtistCreator is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSAUpgradeable for bytes32;\\n\\n    // ============ Storage ============\\n\\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\\n    CountersUpgradeable.Counter private atArtistId;\\n    // address used for signature verification, changeable by owner\\n    address public admin;\\n    bytes32 public DOMAIN_SEPARATOR;\\n    address public beaconAddress;\\n    // registry of created contracts\\n    address[] public artistContracts;\\n\\n    // ============ Events ============\\n\\n    /// Emitted when an Artist is created\\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\\n\\n    // ============ Functions ============\\n\\n    /// Initializes factory\\n    function initialize() public initializer {\\n        __Ownable_init_unchained();\\n\\n        // set admin for artist deployment authorization\\n        admin = msg.sender;\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n\\n        // set up beacon with msg.sender as the owner\\n        UpgradeableBeacon _beacon = new UpgradeableBeacon(address(new Artist()));\\n        _beacon.transferOwnership(msg.sender);\\n        beaconAddress = address(_beacon);\\n\\n        // Set artist id start to be 1 not 0\\n        atArtistId.increment();\\n    }\\n\\n    /// Creates a new artist contract as a factory with a deterministic address\\n    /// Important: None of these fields (except the Url fields with the same hash) can be changed after calling\\n    /// @param _name Name of the artist\\n    function createArtist(\\n        bytes calldata signature,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public returns (address) {\\n        require((getSigner(signature) == admin), 'invalid authorization signature');\\n\\n        BeaconProxy proxy = new BeaconProxy(\\n            beaconAddress,\\n            abi.encodeWithSelector(\\n                Artist(address(0)).initialize.selector,\\n                msg.sender,\\n                atArtistId.current(),\\n                _name,\\n                _symbol,\\n                _baseURI\\n            )\\n        );\\n\\n        // add to registry\\n        artistContracts.push(address(proxy));\\n\\n        emit CreatedArtist(atArtistId.current(), _name, _symbol, address(proxy));\\n\\n        atArtistId.increment();\\n\\n        return address(proxy);\\n    }\\n\\n    /// Get signer address of signature\\n    function getSigner(bytes calldata signature) public view returns (address) {\\n        require(admin != address(0), 'whitelist not enabled');\\n        // Verify EIP-712 signature by recreating the data structure\\n        // that we signed on the client side, and then using that to recover\\n        // the address that signed the signature for this data.\\n        bytes32 digest = keccak256(\\n            abi.encodePacked('\\\\x19\\\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, msg.sender)))\\n        );\\n        // Use the recover method to see what address was used to create\\n        // the signature on this data.\\n        // Note that if the digest doesn't exactly match what was signed we'll\\n        // get a random recovered address.\\n        address recoveredAddress = digest.recover(signature);\\n        return recoveredAddress;\\n    }\\n\\n    /// Sets the admin for authorizing artist deployment\\n    /// @param _newAdmin address of new admin\\n    function setAdmin(address _newAdmin) external {\\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\\n        admin = _newAdmin;\\n    }\\n\\n    function _authorizeUpgrade(address) internal override onlyOwner {}\\n}\\n\",\"keccak256\":\"0x57b84dba37d2e931d2566252fbe738ad57cb6369f050ac83dd8eed7168e21196\",\"license\":\"GPL-3.0-or-later\"},\"contracts/ArtistV2.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport {ArtistCreator} from './ArtistCreator.sol';\\nimport {ECDSA} from '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\\n\\n/// @title Artist\\n/// @author SoundXYZ - @gigamesh & @vigneshka\\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\\ncontract ArtistV2 is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // ================================\\n    // TYPES\\n    // ================================\\n\\n    using Strings for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSA for bytes32;\\n\\n    enum TimeType {\\n        START,\\n        END\\n    }\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n        // quantity of presale tokens\\n        uint32 presaleQuantity;\\n        // whitelist signer address\\n        address signerAddress;\\n    }\\n\\n    // ================================\\n    // STORAGE\\n    // ================================\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId;\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n    // The presale typehash (used for checking signature validity)\\n    bytes32 public constant PRESALE_TYPEHASH =\\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)');\\n\\n    // ================================\\n    // EVENTS\\n    // ================================\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime,\\n        uint32 presaleQuantity,\\n        address signerAddress\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer\\n    );\\n\\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\\n\\n    // ================================\\n    // FUNCTIONS - PUBLIC & EXTERNAL\\n    // ================================\\n\\n    /// @notice Initializes the contract\\n    /// @param _owner Owner of edition\\n    /// @param _name Name of artist\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set token id start to be 1 not 0\\n        atTokenId.increment();\\n\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new edition.\\n    /// @param _fundingRecipient The account that will receive sales revenue.\\n    /// @param _price The price at which each token will be sold, in ETH.\\n    /// @param _quantity The maximum number of tokens that can be sold.\\n    /// @param _royaltyBPS The royalty amount in bps.\\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\\n    /// @param _presaleQuantity The quantity of presale tokens.\\n    /// @param _signerAddress signer address.\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime,\\n        uint32 _presaleQuantity,\\n        address _signerAddress\\n    ) external onlyOwner {\\n        require(_presaleQuantity < _quantity + 1, 'Presale quantity too big');\\n\\n        if (_presaleQuantity > 0) {\\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\\n        }\\n\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime,\\n            presaleQuantity: _presaleQuantity,\\n            signerAddress: _signerAddress\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime,\\n            _presaleQuantity,\\n            _signerAddress\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\\n    /// @param _editionId The id of the edition to purchase\\n    /// @param _signature A signed message for authorizing presale purchases\\n    function buyEdition(uint256 _editionId, bytes calldata _signature) external payable {\\n        // Caching variables locally to reduce reads\\n        uint256 price = editions[_editionId].price;\\n        uint32 quantity = editions[_editionId].quantity;\\n        uint32 numSold = editions[_editionId].numSold;\\n        uint32 startTime = editions[_editionId].startTime;\\n        uint32 endTime = editions[_editionId].endTime;\\n        uint32 presaleQuantity = editions[_editionId].presaleQuantity;\\n\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(quantity > 0, 'Edition does not exist');\\n        // Check that there are still tokens available to purchase.\\n        require(numSold < quantity, 'This edition is already sold out.');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\\n\\n        // If the open auction hasn't started...\\n        if (startTime > block.timestamp) {\\n            // Check that presale tokens are still available\\n            require(\\n                presaleQuantity > 0 && numSold < presaleQuantity,\\n                'No presale available & open auction not started'\\n            );\\n\\n            // Check that the signature is valid.\\n            require(getSigner(_signature, _editionId) == editions[_editionId].signerAddress, 'Invalid signer');\\n        }\\n\\n        // Don't allow purchases after the end time\\n        require(endTime > block.timestamp, 'Auction has ended');\\n\\n        // Update the deposited total for the edition\\n        depositedForEdition[_editionId] += msg.value;\\n\\n        // Increment the number of tokens sold for this edition.\\n        editions[_editionId].numSold++;\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, atTokenId.current());\\n\\n        // Store the mapping of token id to the edition being purchased.\\n        tokenToEdition[atTokenId.current()] = _editionId;\\n\\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\\n\\n        atTokenId.increment();\\n    }\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    /// @notice Sets the start time for an edition\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\\n    }\\n\\n    /// @notice Sets the end time for an edition\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\\n    }\\n\\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\\n    }\\n\\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    /// @notice Get token ids for a given edition id\\n    /// @param _editionId edition id\\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                tokenIdsOfEdition[index] = id;\\n                index++;\\n            }\\n        }\\n        return tokenIdsOfEdition;\\n    }\\n\\n    /// @notice Get owners of a given edition id\\n    /// @param _editionId edition id\\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\\n                index++;\\n            }\\n        }\\n        return ownersOfEdition;\\n    }\\n\\n    /// @notice Get royalty information for token\\n    /// @param _tokenId token id\\n    /// @param _salePrice Sale price for the token\\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        uint256 editionId = tokenToEdition[_tokenId];\\n        Edition memory edition = editions[editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    /// @notice The total number of tokens created by this contract\\n    function totalSupply() external view returns (uint256) {\\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\\n    }\\n\\n    /// @notice Informs other contracts which interfaces this contract supports\\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    // ================================\\n    // FUNCTIONS - PRIVATE\\n    // ================================\\n\\n    /// @notice Sends funds to an address\\n    /// @param _recipient The address to send funds to\\n    /// @param _amount The amount of funds to send\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n\\n    /// @notice Gets signer address to validate presale purchase\\n    /// @param _signature signed message\\n    /// @param _editionId edition id\\n    /// @return address of signer\\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\\n    function getSigner(bytes calldata _signature, uint256 _editionId) private view returns (address) {\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                '\\\\x19\\\\x01',\\n                keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid)),\\n                keccak256(abi.encode(PRESALE_TYPEHASH, address(this), msg.sender, _editionId))\\n            )\\n        );\\n        address recoveredAddress = digest.recover(_signature);\\n        return recoveredAddress;\\n    }\\n}\\n\",\"keccak256\":\"0x16b7d698df8337e2723c5b75f117c40fc5358ab120e48e564a6e1b6a9e81bd41\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 6111,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "baseURI",
                "offset": 0,
                "slot": "201",
                "type": "t_string_storage"
              },
              {
                "astId": 6114,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "atTokenId",
                "offset": 0,
                "slot": "202",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 6117,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "atEditionId",
                "offset": 0,
                "slot": "203",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 6122,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "editions",
                "offset": 0,
                "slot": "204",
                "type": "t_mapping(t_uint256,t_struct(Edition)6109_storage)"
              },
              {
                "astId": 6126,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "tokenToEdition",
                "offset": 0,
                "slot": "205",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 6130,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "depositedForEdition",
                "offset": 0,
                "slot": "206",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 6134,
                "contract": "contracts/ArtistV2.sol:ArtistV2",
                "label": "withdrawnForEdition",
                "offset": 0,
                "slot": "207",
                "type": "t_mapping(t_uint256,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_address_payable": {
                "encoding": "inplace",
                "label": "address payable",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_struct(Edition)6109_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ArtistV2.Edition)",
                "numberOfBytes": "32",
                "value": "t_struct(Edition)6109_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(Edition)6109_storage": {
                "encoding": "inplace",
                "label": "struct ArtistV2.Edition",
                "members": [
                  {
                    "astId": 6092,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "fundingRecipient",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address_payable"
                  },
                  {
                    "astId": 6094,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "price",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 6096,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "numSold",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6098,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "quantity",
                    "offset": 4,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6100,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "royaltyBPS",
                    "offset": 8,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6102,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "startTime",
                    "offset": 12,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6104,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "endTime",
                    "offset": 16,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6106,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "presaleQuantity",
                    "offset": 20,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6108,
                    "contract": "contracts/ArtistV2.sol:ArtistV2",
                    "label": "signerAddress",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_address"
                  }
                ],
                "numberOfBytes": "128"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "buyEdition(uint256,bytes)": {
                "notice": "Creates a new token for the given edition, and assigns it to the buyer"
              },
              "contractURI()": {
                "notice": "Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront"
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": {
                "notice": "Creates a new edition."
              },
              "getOwnersOfEdition(uint256)": {
                "notice": "Get owners of a given edition id"
              },
              "getTokenIdsOfEdition(uint256)": {
                "notice": "Get token ids for a given edition id"
              },
              "initialize(address,uint256,string,string,string)": {
                "notice": "Initializes the contract"
              },
              "royaltyInfo(uint256,uint256)": {
                "notice": "Get royalty information for token"
              },
              "setEndTime(uint256,uint32)": {
                "notice": "Sets the end time for an edition"
              },
              "setStartTime(uint256,uint32)": {
                "notice": "Sets the start time for an edition"
              },
              "supportsInterface(bytes4)": {
                "notice": "Informs other contracts which interfaces this contract supports"
              },
              "tokenURI(uint256)": {
                "notice": "Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]"
              },
              "totalSupply()": {
                "notice": "The total number of tokens created by this contract"
              }
            },
            "notice": "This contract is used to create & sell song NFTs for the artist who owns the contract.",
            "version": 1
          }
        }
      },
      "contracts/ArtistV3.sol": {
        "ArtistV3": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "enum ArtistV3.TimeType",
                  "name": "timeType",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint32",
                  "name": "newTime",
                  "type": "uint32"
                }
              ],
              "name": "AuctionTimeSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "EditionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                }
              ],
              "name": "EditionPurchased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "PermissionedQuantitySet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "SignerAddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                }
              ],
              "name": "buyEdition",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                }
              ],
              "name": "createEdition",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "depositedForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "editionCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "editions",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_artistId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "ownersOfTokenIds",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "setEndTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "setPermissionedQuantity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_newSignerAddress",
                  "type": "address"
                }
              ],
              "name": "setSignerAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                }
              ],
              "name": "setStartTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "withdrawFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdrawnForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "SoundXYZ - @gigamesh & @vigneshka",
            "details": "Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "buyEdition(uint256,bytes)": {
                "params": {
                  "_editionId": "The id of the edition to purchase",
                  "_signature": "A signed message for authorizing permissioned purchases"
                }
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": {
                "params": {
                  "_endTime": "The end time of the auction, in seconds since unix epoch.",
                  "_fundingRecipient": "The account that will receive sales revenue.",
                  "_permissionedQuantity": "The quantity of tokens that require a signature to buy.",
                  "_price": "The price at which each token will be sold, in ETH.",
                  "_quantity": "The maximum number of tokens that can be sold.",
                  "_royaltyBPS": "The royalty amount in bps.",
                  "_signerAddress": "signer address.",
                  "_startTime": "The start time of the auction, in seconds since unix epoch."
                }
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "initialize(address,uint256,string,string,string)": {
                "params": {
                  "_name": "Name of artist",
                  "_owner": "Owner of edition"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "royaltyInfo(uint256,uint256)": {
                "params": {
                  "_salePrice": "Sale price for the token",
                  "_tokenId": "token id"
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "supportsInterface(bytes4)": {
                "details": "https://eips.ethereum.org/EIPS/eip-165"
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenURI(uint256)": {
                "details": "Concatenate the baseURI, editionId and tokenId, to create URI."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Artist",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_7068": {
                  "entryPoint": null,
                  "id": 7068,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:264:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "143:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "153:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "165:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "176:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "161:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "161:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "153:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "195:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "206:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "188:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "188:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "188:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "233:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "244:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "229:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "229:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "249:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "222:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "222:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "222:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "115:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "123:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "134:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14:248:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604080517fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e34656020820152469181019190915260600160408051601f1981840301815291905280516020909101206080526080516133ad61007c600039600061214f01526133ad6000f3fe6080604052600436106101ee5760003560e01c806370a082311161010d578063b88d4fde116100a0578063e1a3d5731161006f578063e1a3d57314610676578063e8a3d485146106a3578063e985e9c5146106b8578063f2fde38b14610701578063fbab9e041461072157600080fd5b8063b88d4fde146105e9578063bb314ca114610609578063c87b56dd14610629578063d3bb05281461064957600080fd5b806395d89b41116100dc57806395d89b4114610581578063a22cb46514610596578063abccf3dd146105b6578063abfc83a0146105c957600080fd5b806370a082311461050e578063715018a61461052e57806373aaf879146105435780638da5cb5b1461056357600080fd5b80632a55205a1161018557806352f5c2e41161015457806352f5c2e41461048157806356dee996146104ae578063602787ed146104ce5780636352211e146104ee57600080fd5b80632a55205a146103ed57806342842e0e1461042c5780634bf440261461044c57806352e25bf21461046157600080fd5b8063155dd5ee116101c1578063155dd5ee146102a457806318160ddd146102c457806323b872dd146102e7578063279c806e1461030757600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610282575b600080fd5b3480156101ff57600080fd5b5061021361020e3660046129c5565b610741565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d61076c565b60405161021f9190612a41565b34801561025657600080fd5b5061026a610265366004612a54565b6107fe565b6040516001600160a01b03909116815260200161021f565b34801561028e57600080fd5b506102a261029d366004612a82565b610825565b005b3480156102b057600080fd5b506102a26102bf366004612a54565b61093f565b3480156102d057600080fd5b506102d961099f565b60405190815260200161021f565b3480156102f357600080fd5b506102a2610302366004612aae565b6109eb565b34801561031357600080fd5b5061038f610322366004612a54565b60cc6020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919263ffffffff808416936401000000008104821693600160401b8204831693600160601b8304841693600160801b8404811693600160a01b900416911689565b604080516001600160a01b039a8b168152602081019990995263ffffffff978816908901529486166060880152928516608087015290841660a0860152831660c085015290911660e08301529091166101008201526101200161021f565b3480156103f957600080fd5b5061040d610408366004612aef565b610a1c565b604080516001600160a01b03909316835260208301919091520161021f565b34801561043857600080fd5b506102a2610447366004612aae565b610b18565b34801561045857600080fd5b506102d9610b33565b34801561046d57600080fd5b506102a261047c366004612b2a565b610b4f565b34801561048d57600080fd5b506104a161049c366004612b56565b610cb2565b60405161021f9190612bcb565b3480156104ba57600080fd5b506102a26104c9366004612c18565b610d6b565b3480156104da57600080fd5b506102d96104e9366004612a54565b610e2f565b3480156104fa57600080fd5b5061026a610509366004612a54565b610e51565b34801561051a57600080fd5b506102d9610529366004612c48565b610eb1565b34801561053a57600080fd5b506102a2610f37565b34801561054f57600080fd5b506102a261055e366004612c65565b610f4b565b34801561056f57600080fd5b506097546001600160a01b031661026a565b34801561058d57600080fd5b5061023d611354565b3480156105a257600080fd5b506102a26105b1366004612cfb565b611363565b6102a26105c4366004612d2e565b61136e565b3480156105d557600080fd5b506102a26105e4366004612e56565b611733565b3480156105f557600080fd5b506102a2610604366004612efb565b6118aa565b34801561061557600080fd5b506102a2610624366004612b2a565b6118e2565b34801561063557600080fd5b5061023d610644366004612a54565b611951565b34801561065557600080fd5b506102d9610664366004612a54565b60cf6020526000908152604090205481565b34801561068257600080fd5b506102d9610691366004612a54565b60ce6020526000908152604090205481565b3480156106af57600080fd5b5061023d611a1a565b3480156106c457600080fd5b506102136106d3366004612f7b565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561070d57600080fd5b506102a261071c366004612c48565b611a42565b34801561072d57600080fd5b506102a261073c366004612b2a565b611abb565b600063152a902d60e11b6001600160e01b031983161480610766575061076682611b29565b92915050565b60606065805461077b90612fa9565b80601f01602080910402602001604051908101604052809291908181526020018280546107a790612fa9565b80156107f45780601f106107c9576101008083540402835291602001916107f4565b820191906000526020600020905b8154815290600101906020018083116107d757829003601f168201915b5050505050905090565b600061080982611b79565b506000908152606960205260409020546001600160a01b031690565b600061083082610e51565b9050806001600160a01b0316836001600160a01b0316036108a25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108be57506108be81336106d3565b6109305760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610899565b61093a8383611bd8565b505050565b600081815260cf602090815260408083205460ce9092528220546109639190612ff3565b600083815260ce602090815260408083205460cf83528184205560cc90915290205490915061099b906001600160a01b031682611c46565b5050565b60008060015b60cb548110156109e557600081815260cc60205260409020600201546109d19063ffffffff168361300a565b9150806109dd81613022565b9150506109a5565b50919050565b6109f53382611d53565b610a115760405162461bcd60e51b81526004016108999061303b565b61093a838383611dd2565b6000806000610a2a85610e2f565b600081815260cc602090815260409182902082516101208101845281546001600160a01b03908116808352600184015494830194909452600283015463ffffffff80821696840196909652640100000000810486166060840152600160401b810486166080840152600160601b8104861660a0840152600160801b8104861660c0840152600160a01b900490941660e082015260039091015490921661010083015291925090610ae25751925060009150610b119050565b6080810151815163ffffffff90911690612710610aff8389613089565b610b0991906130a8565b945094505050505b9250929050565b61093a838383604051806020016040528060008152506118aa565b60006001610b4060cb5490565b610b4a9190612ff3565b905090565b610b57611f6e565b600082815260cc6020526040902060020154610b8290640100000000900463ffffffff1660016130ca565b63ffffffff168163ffffffff1610610bdc5760405162461bcd60e51b815260206004820152601860248201527f4d757374206e6f7420657863656564207175616e7469747900000000000000006044820152606401610899565b600082815260cc60205260409020600301546001600160a01b0316610c435760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610899565b600082815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8616908102919091179091558251858152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a15050565b606060008267ffffffffffffffff811115610ccf57610ccf612daa565b604051908082528060200260200182016040528015610cf8578160200160208202803683370190505b50905060005b83811015610d6357610d27858583818110610d1b57610d1b6130f2565b90506020020135610e51565b828281518110610d3957610d396130f2565b6001600160a01b039092166020928302919091019091015280610d5b81613022565b915050610cfe565b509392505050565b610d73611f6e565b6001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610899565b600082815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03851690811790915591518481527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a25050565b6000608082901c808203610766575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806107665760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610899565b60006001600160a01b038216610f1b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610899565b506001600160a01b031660009081526068602052604090205490565b610f3f611f6e565b610f496000611fc8565b565b610f53611f6e565b610f5e8660016130ca565b63ffffffff168263ffffffff1610610fb85760405162461bcd60e51b815260206004820152601d60248201527f5065726d697373696f6e6564207175616e7469747920746f6f206269670000006044820152606401610899565b60008663ffffffff16116110025760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610899565b6001600160a01b0388166110585760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610899565b8363ffffffff168363ffffffff16116110c45760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610899565b63ffffffff821615611126576001600160a01b0381166111265760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610899565b604051806101200160405280896001600160a01b03168152602001888152602001600063ffffffff1681526020018763ffffffff1681526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff168152602001826001600160a01b031681525060cc60006111aa60cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355938501516001830155918401516002820180546060870151608088015160a089015160c08a015160e08b015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b93909116929092029190911790556101009093015160039093018054909216921691909117905560cb54604080516001600160a01b03808c168252602082018b905263ffffffff808b16938301939093528289166060830152828816608083015282871660a083015291851660c082015290831660e08201527fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3906101000160405180910390a261134a60cb80546001019055565b5050505050505050565b60606066805461077b90612fa9565b61099b33838361201a565b600083815260cc60205260409020600181015460029091015463ffffffff640100000000820481169181811691600160601b8204811691600160801b8104821691600160a01b90910416846113fe5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610899565b8463ffffffff168463ffffffff16106114635760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610899565b853410156114c55760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610899565b428363ffffffff1611156115d35760008163ffffffff161180156114f457508063ffffffff168463ffffffff16105b6115665760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610899565b600089815260cc60205260409020600301546001600160a01b031661158c89898c6120e8565b6001600160a01b0316146115d35760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610899565b428263ffffffff161161161c5760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610899565b600089815260cc60205260409020600201805463ffffffff191663ffffffff600187011690811790915560808a901b1761165e6097546001600160a01b031690565b60008b815260cc60205260409020546001600160a01b039182169116036116a85760008a815260ce60205260408120805434929061169d90849061300a565b909155506116ca9050565b60008a815260cc60205260409020546116ca906001600160a01b031634611c46565b6116d433826121e7565b60008a815260cc602090815260409182902060020154915163ffffffff9092168252339183918d917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a450505050505050505050565b600054610100900460ff16158080156117535750600054600160ff909116105b8061176d5750303b15801561176d575060005460ff166001145b6117d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610899565b6000805460ff1916600117905580156117f3576000805461ff0019166101001790555b6117fd8484612329565b61180561235a565b61180e86611a42565b8161181886612389565b604051602001611829929190613108565b60405160208183030381529060405260c9908051906020019061184d929190612916565b5061185c60cb80546001019055565b80156118a2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6118b43383611d53565b6118d05760405162461bcd60e51b81526004016108999061303b565b6118dc84848484612401565b50505050565b6118ea611f6e565b600082815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff85169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90610e23906001908690613159565b6000818152606760205260409020546060906001600160a01b03166119d05760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610899565b60006119db83610e2f565b905060c96119e882612389565b6119f185612389565b604051602001611a039392919061321e565b604051602081830303815290604052915050919050565b606060c9604051602001611a2e9190613264565b604051602081830303815290604052905090565b611a4a611f6e565b6001600160a01b038116611aaf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610899565b611ab881611fc8565b50565b611ac3611f6e565b600082815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff861690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c91610e2391908690613159565b60006001600160e01b031982166380ac58cd60e01b1480611b5a57506001600160e01b03198216635b5e139f60e01b145b8061076657506301ffc9a760e01b6001600160e01b0319831614610766565b6000818152606760205260409020546001600160a01b0316611ab85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610899565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611c0d82610e51565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b80471015611c965760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610899565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ce3576040519150601f19603f3d011682016040523d82523d6000602084013e611ce8565b606091505b505090508061093a5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610899565b600080611d5f83610e51565b9050806001600160a01b0316846001600160a01b03161480611da657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611dca5750836001600160a01b0316611dbf846107fe565b6001600160a01b0316145b949350505050565b826001600160a01b0316611de582610e51565b6001600160a01b031614611e495760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610899565b6001600160a01b038216611eab5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610899565b611eb6600082611bd8565b6001600160a01b0383166000908152606860205260408120805460019290611edf908490612ff3565b90915550506001600160a01b0382166000908152606860205260408120805460019290611f0d90849061300a565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610f495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610899565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361207b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610899565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b604080517fb0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d045602080830191909152308284015233606083015260808083018590528351808403909101815260a08301909352825192019190912061190160f01b60c08301527f000000000000000000000000000000000000000000000000000000000000000060c283015260e282015260009081906101020160405160208183030381529060405280519060200120905060006121dd86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506124349050565b9695505050505050565b6001600160a01b03821661223d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610899565b6000818152606760205260409020546001600160a01b0316156122a25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610899565b6001600160a01b03821660009081526068602052604081208054600192906122cb90849061300a565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff166123505760405162461bcd60e51b81526004016108999061328a565b61099b8282612450565b600054610100900460ff166123815760405162461bcd60e51b81526004016108999061328a565b610f4961249e565b6060816000036123b05750506040805180820190915260018152600360fc1b602082015290565b60408051604e8082526080820190925290602082018180368337019050509050604e5b82156123f257600a8084066030018284015290920491600019016123d3565b604e8190039101908152919050565b61240c848484611dd2565b612418848484846124ce565b6118dc5760405162461bcd60e51b8152600401610899906132d5565b600080600061244385856125cf565b91509150610d638161263a565b600054610100900460ff166124775760405162461bcd60e51b81526004016108999061328a565b815161248a906065906020850190612916565b50805161093a906066906020840190612916565b600054610100900460ff166124c55760405162461bcd60e51b81526004016108999061328a565b610f4933611fc8565b60006001600160a01b0384163b156125c457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612512903390899088908890600401613327565b6020604051808303816000875af192505050801561254d575060408051601f3d908101601f1916820190925261254a9181019061335a565b60015b6125aa573d80801561257b576040519150601f19603f3d011682016040523d82523d6000602084013e612580565b606091505b5080516000036125a25760405162461bcd60e51b8152600401610899906132d5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611dca565b506001949350505050565b60008082516041036126055760208301516040840151606085015160001a6125f9878285856127f0565b94509450505050610b11565b825160400361262e57602083015160408401516126238683836128dd565b935093505050610b11565b50600090506002610b11565b600081600481111561264e5761264e613143565b036126565750565b600181600481111561266a5761266a613143565b036126b75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610899565b60028160048111156126cb576126cb613143565b036127185760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610899565b600381600481111561272c5761272c613143565b036127845760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610899565b600481600481111561279857612798613143565b03611ab85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610899565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561282757506000905060036128d4565b8460ff16601b1415801561283f57508460ff16601c14155b1561285057506000905060046128d4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128a4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128cd576000600192509250506128d4565b9150600090505b94509492505050565b6000806001600160ff1b038316816128fa60ff86901c601b61300a565b9050612908878288856127f0565b935093505050935093915050565b82805461292290612fa9565b90600052602060002090601f016020900481019282612944576000855561298a565b82601f1061295d57805160ff191683800117855561298a565b8280016001018555821561298a579182015b8281111561298a57825182559160200191906001019061296f565b5061299692915061299a565b5090565b5b80821115612996576000815560010161299b565b6001600160e01b031981168114611ab857600080fd5b6000602082840312156129d757600080fd5b81356129e2816129af565b9392505050565b60005b83811015612a045781810151838201526020016129ec565b838111156118dc5750506000910152565b60008151808452612a2d8160208601602086016129e9565b601f01601f19169290920160200192915050565b6020815260006129e26020830184612a15565b600060208284031215612a6657600080fd5b5035919050565b6001600160a01b0381168114611ab857600080fd5b60008060408385031215612a9557600080fd5b8235612aa081612a6d565b946020939093013593505050565b600080600060608486031215612ac357600080fd5b8335612ace81612a6d565b92506020840135612ade81612a6d565b929592945050506040919091013590565b60008060408385031215612b0257600080fd5b50508035926020909101359150565b803563ffffffff81168114612b2557600080fd5b919050565b60008060408385031215612b3d57600080fd5b82359150612b4d60208401612b11565b90509250929050565b60008060208385031215612b6957600080fd5b823567ffffffffffffffff80821115612b8157600080fd5b818501915085601f830112612b9557600080fd5b813581811115612ba457600080fd5b8660208260051b8501011115612bb957600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015612c0c5783516001600160a01b031683529284019291840191600101612be7565b50909695505050505050565b60008060408385031215612c2b57600080fd5b823591506020830135612c3d81612a6d565b809150509250929050565b600060208284031215612c5a57600080fd5b81356129e281612a6d565b600080600080600080600080610100898b031215612c8257600080fd5b8835612c8d81612a6d565b975060208901359650612ca260408a01612b11565b9550612cb060608a01612b11565b9450612cbe60808a01612b11565b9350612ccc60a08a01612b11565b9250612cda60c08a01612b11565b915060e0890135612cea81612a6d565b809150509295985092959890939650565b60008060408385031215612d0e57600080fd5b8235612d1981612a6d565b915060208301358015158114612c3d57600080fd5b600080600060408486031215612d4357600080fd5b83359250602084013567ffffffffffffffff80821115612d6257600080fd5b818601915086601f830112612d7657600080fd5b813581811115612d8557600080fd5b876020828501011115612d9757600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612ddb57612ddb612daa565b604051601f8501601f19908116603f01168101908282118183101715612e0357612e03612daa565b81604052809350858152868686011115612e1c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612e4757600080fd5b6129e283833560208501612dc0565b600080600080600060a08688031215612e6e57600080fd5b8535612e7981612a6d565b945060208601359350604086013567ffffffffffffffff80821115612e9d57600080fd5b612ea989838a01612e36565b94506060880135915080821115612ebf57600080fd5b612ecb89838a01612e36565b93506080880135915080821115612ee157600080fd5b50612eee88828901612e36565b9150509295509295909350565b60008060008060808587031215612f1157600080fd5b8435612f1c81612a6d565b93506020850135612f2c81612a6d565b925060408501359150606085013567ffffffffffffffff811115612f4f57600080fd5b8501601f81018713612f6057600080fd5b612f6f87823560208401612dc0565b91505092959194509250565b60008060408385031215612f8e57600080fd5b8235612f9981612a6d565b91506020830135612c3d81612a6d565b600181811c90821680612fbd57607f821691505b6020821081036109e557634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561300557613005612fdd565b500390565b6000821982111561301d5761301d612fdd565b500190565b60006001820161303457613034612fdd565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008160001904831182151516156130a3576130a3612fdd565b500290565b6000826130c557634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff8083168185168083038211156130e9576130e9612fdd565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b6000835161311a8184602088016129e9565b83519083019061312e8183602088016129e9565b602f60f81b9101908152600101949350505050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061317b57634e487b7160e01b600052602160045260246000fd5b9281526020015290565b8054600090600181811c908083168061319f57607f831692505b602080841082036131c057634e487b7160e01b600052602260045260246000fd5b8180156131d457600181146131e557613212565b60ff19861689528489019650613212565b60008881526020902060005b8681101561320a5781548b8201529085019083016131f1565b505084890196505b50505050505092915050565b600061322a8286613185565b845161323a8183602089016129e9565b602f60f81b910190815283516132578160018401602088016129e9565b0160010195945050505050565b60006132708284613185565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906121dd90830184612a15565b60006020828403121561336c57600080fd5b81516129e2816129af56fea2646970667358221220c45af8bb7aa7a5d92c51681107f0c881d7fd260c590e8c87d5c5c0d17abe2d6764736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 PUSH1 0x20 DUP3 ADD MSTORE CHAINID SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x33AD PUSH2 0x7C PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x214F ADD MSTORE PUSH2 0x33AD PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1EE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x6A3 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x701 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x581 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xABCCF3DD EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x5C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x50E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x52E JUMPI DUP1 PUSH4 0x73AAF879 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x185 JUMPI DUP1 PUSH4 0x52F5C2E4 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x155DD5EE GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x282 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x20E CALLDATASIZE PUSH1 0x4 PUSH2 0x29C5 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x76C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21F SWAP2 SWAP1 PUSH2 0x2A41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26A PUSH2 0x265 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0x2A82 JUMP JUMPDEST PUSH2 0x825 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0x93F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x99F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x302 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0x9EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38F PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP4 DIV DUP5 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND SWAP2 AND DUP10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH4 0xFFFFFFFF SWAP8 DUP9 AND SWAP1 DUP10 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP3 DUP6 AND PUSH1 0x80 DUP8 ADD MSTORE SWAP1 DUP5 AND PUSH1 0xA0 DUP7 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP6 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40D PUSH2 0x408 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AEF JUMP JUMPDEST PUSH2 0xA1C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2A JUMP JUMPDEST PUSH2 0xB4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A1 PUSH2 0x49C CALLDATASIZE PUSH1 0x4 PUSH2 0x2B56 JUMP JUMPDEST PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21F SWAP2 SWAP1 PUSH2 0x2BCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C18 JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x4E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0xE2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26A PUSH2 0x509 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0xE51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x529 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C48 JUMP JUMPDEST PUSH2 0xEB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0xF37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x2C65 JUMP JUMPDEST PUSH2 0xF4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x1354 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x5B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CFB JUMP JUMPDEST PUSH2 0x1363 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0x5C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x136E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E56 JUMP JUMPDEST PUSH2 0x1733 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x604 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EFB JUMP JUMPDEST PUSH2 0x18AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2A JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0x1951 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x664 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x682 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x691 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x1A1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x6D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x71C CALLDATASIZE PUSH1 0x4 PUSH2 0x2C48 JUMP JUMPDEST PUSH2 0x1A42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x73C CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2A JUMP JUMPDEST PUSH2 0x1ABB JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x766 JUMPI POP PUSH2 0x766 DUP3 PUSH2 0x1B29 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x77B SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7A7 SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7F4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7C9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7F4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7D7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x809 DUP3 PUSH2 0x1B79 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x830 DUP3 PUSH2 0xE51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x8BE JUMPI POP PUSH2 0x8BE DUP2 CALLER PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x930 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x93A DUP4 DUP4 PUSH2 0x1BD8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x963 SWAP2 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x99B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x1C46 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x9D1 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x300A JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x9DD DUP2 PUSH2 0x3022 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x9A5 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9F5 CALLER DUP3 PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0xA11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x303B JUMP JUMPDEST PUSH2 0x93A DUP4 DUP4 DUP4 PUSH2 0x1DD2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA2A DUP6 PUSH2 0xE2F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x120 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH5 0x100000000 DUP2 DIV DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP7 AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP5 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0xAE2 JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xB11 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xAFF DUP4 DUP10 PUSH2 0x3089 JUMP JUMPDEST PUSH2 0xB09 SWAP2 SWAP1 PUSH2 0x30A8 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x93A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xB40 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB4A SWAP2 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB57 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xB82 SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH2 0x30CA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND LT PUSH2 0xBDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374206E6F7420657863656564207175616E746974790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP6 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCCF JUMPI PUSH2 0xCCF PUSH2 0x2DAA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xCF8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD63 JUMPI PUSH2 0xD27 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD1B JUMPI PUSH2 0xD1B PUSH2 0x30F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xE51 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD39 JUMPI PUSH2 0xD39 PUSH2 0x30F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0xD5B DUP2 PUSH2 0x3022 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCFE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xD73 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP5 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x766 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x766 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xF1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xF3F PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0xF49 PUSH1 0x0 PUSH2 0x1FC8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF53 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0xF5E DUP7 PUSH1 0x1 PUSH2 0x30CA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND LT PUSH2 0xFB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5065726D697373696F6E6564207175616E7469747920746F6F20626967000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x1058 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT PUSH2 0x10C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x1126 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1126 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x11AA PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE SWAP4 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP2 DUP5 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0xE0 DUP12 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP12 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP10 AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 DUP9 AND PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP8 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP2 DUP6 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x134A PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x77B SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST PUSH2 0x99B CALLER DUP4 DUP4 PUSH2 0x201A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV AND DUP5 PUSH2 0x13FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST DUP6 CALLVALUE LT ISZERO PUSH2 0x14C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x14F4 JUMPI POP DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT JUMPDEST PUSH2 0x1566 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x158C DUP10 DUP10 DUP13 PUSH2 0x20E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x161C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF PUSH1 0x1 DUP8 ADD AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP11 SWAP1 SHL OR PUSH2 0x165E PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x16A8 JUMPI PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x169D SWAP1 DUP5 SWAP1 PUSH2 0x300A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x16CA SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x16CA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x1C46 JUMP JUMPDEST PUSH2 0x16D4 CALLER DUP3 PUSH2 0x21E7 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP14 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1753 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x176D JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x176D JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x17D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x17F3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x17FD DUP5 DUP5 PUSH2 0x2329 JUMP JUMPDEST PUSH2 0x1805 PUSH2 0x235A JUMP JUMPDEST PUSH2 0x180E DUP7 PUSH2 0x1A42 JUMP JUMPDEST DUP2 PUSH2 0x1818 DUP7 PUSH2 0x2389 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1829 SWAP3 SWAP2 SWAP1 PUSH2 0x3108 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x184D SWAP3 SWAP2 SWAP1 PUSH2 0x2916 JUMP JUMPDEST POP PUSH2 0x185C PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x18A2 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18B4 CALLER DUP4 PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x303B JUMP JUMPDEST PUSH2 0x18DC DUP5 DUP5 DUP5 DUP5 PUSH2 0x2401 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x18EA PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0xE23 SWAP1 PUSH1 0x1 SWAP1 DUP7 SWAP1 PUSH2 0x3159 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19DB DUP4 PUSH2 0xE2F JUMP JUMPDEST SWAP1 POP PUSH1 0xC9 PUSH2 0x19E8 DUP3 PUSH2 0x2389 JUMP JUMPDEST PUSH2 0x19F1 DUP6 PUSH2 0x2389 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A03 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x321E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A2E SWAP2 SWAP1 PUSH2 0x3264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1A4A PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1AAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1AB8 DUP2 PUSH2 0x1FC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1AC3 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0xE23 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0x3159 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1B5A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x766 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x766 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1C0D DUP3 PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1C96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1CE3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x93A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D5F DUP4 PUSH2 0xE51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1DA6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x1DCA JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DBF DUP5 PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DE5 DUP3 PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1EB6 PUSH1 0x0 DUP3 PUSH2 0x1BD8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1EDF SWAP1 DUP5 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1F0D SWAP1 DUP5 SWAP1 PUSH2 0x300A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x207B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xB0B05FBA96C122A3DB5D352971BB77A4E982B43F6B3A779BEB0DCCE9D261D045 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP3 DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP4 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xC0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xC2 DUP4 ADD MSTORE PUSH1 0xE2 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x102 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x21DD DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH2 0x2434 SWAP1 POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x223D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x22A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x22CB SWAP1 DUP5 SWAP1 PUSH2 0x300A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2350 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST PUSH2 0x99B DUP3 DUP3 PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST PUSH2 0xF49 PUSH2 0x249E JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x23B0 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4E DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x4E JUMPDEST DUP3 ISZERO PUSH2 0x23F2 JUMPI PUSH1 0xA DUP1 DUP5 MOD PUSH1 0x30 ADD DUP3 DUP5 ADD MSTORE SWAP1 SWAP3 DIV SWAP2 PUSH1 0x0 NOT ADD PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x4E DUP2 SWAP1 SUB SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x240C DUP5 DUP5 DUP5 PUSH2 0x1DD2 JUMP JUMPDEST PUSH2 0x2418 DUP5 DUP5 DUP5 DUP5 PUSH2 0x24CE JUMP JUMPDEST PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x32D5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2443 DUP6 DUP6 PUSH2 0x25CF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xD63 DUP2 PUSH2 0x263A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2477 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST DUP2 MLOAD PUSH2 0x248A SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2916 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x93A SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2916 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x24C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST PUSH2 0xF49 CALLER PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x25C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x2512 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3327 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x254D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x254A SWAP2 DUP2 ADD SWAP1 PUSH2 0x335A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x25AA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x257B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2580 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x25A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x32D5 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x1DCA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x2605 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x25F9 DUP8 DUP3 DUP6 DUP6 PUSH2 0x27F0 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xB11 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x262E JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2623 DUP7 DUP4 DUP4 PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xB11 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xB11 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x264E JUMPI PUSH2 0x264E PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x2656 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x266A JUMPI PUSH2 0x266A PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x26B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x26CB JUMPI PUSH2 0x26CB PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x2718 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x272C JUMPI PUSH2 0x272C PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x2784 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2798 JUMPI PUSH2 0x2798 PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x1AB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x2827 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x28D4 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x283F JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2850 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x28CD JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x28D4 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x28FA PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x300A JUMP JUMPDEST SWAP1 POP PUSH2 0x2908 DUP8 DUP3 DUP9 DUP6 PUSH2 0x27F0 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2922 SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2944 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x298A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x295D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x298A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x298A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x298A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x296F JUMP JUMPDEST POP PUSH2 0x2996 SWAP3 SWAP2 POP PUSH2 0x299A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2996 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x299B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E2 DUP2 PUSH2 0x29AF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x29EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x18DC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2A2D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x29E2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2AA0 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2ACE DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2ADE DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2B4D PUSH1 0x20 DUP5 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2BB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C0C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2BE7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2C3D DUP2 PUSH2 0x2A6D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E2 DUP2 PUSH2 0x2A6D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2C82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2C8D DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x2CA2 PUSH1 0x40 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP6 POP PUSH2 0x2CB0 PUSH1 0x60 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP5 POP PUSH2 0x2CBE PUSH1 0x80 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP4 POP PUSH2 0x2CCC PUSH1 0xA0 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP3 POP PUSH2 0x2CDA PUSH1 0xC0 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x2CEA DUP2 PUSH2 0x2A6D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2D19 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2D43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2D97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2DDB JUMPI PUSH2 0x2DDB PUSH2 0x2DAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2E03 JUMPI PUSH2 0x2E03 PUSH2 0x2DAA JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2E1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29E2 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2DC0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2E6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2E79 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2E9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EA9 DUP10 DUP4 DUP11 ADD PUSH2 0x2E36 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2EBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ECB DUP10 DUP4 DUP11 ADD PUSH2 0x2E36 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EEE DUP9 DUP3 DUP10 ADD PUSH2 0x2E36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2F11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2F1C DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2F2C DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x2F60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F6F DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2DC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2F99 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2C3D DUP2 PUSH2 0x2A6D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2FBD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x9E5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3005 JUMPI PUSH2 0x3005 PUSH2 0x2FDD JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x301D JUMPI PUSH2 0x301D PUSH2 0x2FDD JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3034 JUMPI PUSH2 0x3034 PUSH2 0x2FDD JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x30A3 JUMPI PUSH2 0x30A3 PUSH2 0x2FDD JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30C5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x30E9 JUMPI PUSH2 0x30E9 PUSH2 0x2FDD JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x311A DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x29E9 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x312E DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x317B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x319F JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x31C0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x31D4 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x31E5 JUMPI PUSH2 0x3212 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x3212 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x320A JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x31F1 JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x322A DUP3 DUP7 PUSH2 0x3185 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x323A DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3257 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x29E9 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3270 DUP3 DUP5 PUSH2 0x3185 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x21DD SWAP1 DUP4 ADD DUP5 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x336C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29E2 DUP2 PUSH2 0x29AF JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 GAS 0xF8 0xBB PUSH27 0xA7A5D92C51681107F0C881D7FD260C590E8C87D5C5C0D17ABE2D67 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "1465:15721:38:-:0;;;4752:130;;;;;;;;;-1:-1:-1;4805:69:38;;;4816:42;4805:69;;;188:25:46;4860:13:38;229:18:46;;;222:34;;;;161:18;;4805:69:38;;;-1:-1:-1;;4805:69:38;;;;;;;;;4795:80;;4805:69;4795:80;;;;4776:99;;1465:15721;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@__ERC721_init_891": {
                  "entryPoint": 9001,
                  "id": 891,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__ERC721_init_unchained_909": {
                  "entryPoint": 9296,
                  "id": 909,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__Ownable_init_26": {
                  "entryPoint": 9050,
                  "id": 26,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Ownable_init_unchained_37": {
                  "entryPoint": 9374,
                  "id": 37,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 7128,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 9422,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_checkOwner_68": {
                  "entryPoint": 8046,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 7507,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_1423": {
                  "entryPoint": 8679,
                  "id": 1423,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 7033,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 9217,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_sendFunds_7856": {
                  "entryPoint": 7238,
                  "id": 7856,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 8218,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_throwError_4335": {
                  "entryPoint": 9786,
                  "id": 4335,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 8136,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 7634,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 2085,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 3761,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@buyEdition_7403": {
                  "entryPoint": 4974,
                  "id": 7403,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@contractURI_7620": {
                  "entryPoint": 6682,
                  "id": 7620,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@createEdition_7224": {
                  "entryPoint": 3915,
                  "id": 7224,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@depositedForEdition_6988": {
                  "entryPoint": null,
                  "id": 6988,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@editionCount_7750": {
                  "entryPoint": 2867,
                  "id": 7750,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@editions_6980": {
                  "entryPoint": null,
                  "id": 6980,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1121": {
                  "entryPoint": 2046,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_7899": {
                  "entryPoint": 8424,
                  "id": 7899,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_7116": {
                  "entryPoint": 5939,
                  "id": 7116,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 1900,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 3665,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownersOfTokenIds_7822": {
                  "entryPoint": 3250,
                  "id": 7822,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@recover_4427": {
                  "entryPoint": 9268,
                  "id": 4427,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 3895,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@royaltyInfo_7679": {
                  "entryPoint": 2588,
                  "id": 7679,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 2840,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 6314,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 4963,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setEndTime_7485": {
                  "entryPoint": 6370,
                  "id": 7485,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setPermissionedQuantity_7566": {
                  "entryPoint": 2895,
                  "id": 7566,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSignerAddress_7518": {
                  "entryPoint": 3435,
                  "id": 7518,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setStartTime_7460": {
                  "entryPoint": 6843,
                  "id": 7460,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_7737": {
                  "entryPoint": 1857,
                  "id": 7737,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 6953,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 4948,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_13591": {
                  "entryPoint": 9097,
                  "id": 13591,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenToEdition_7775": {
                  "entryPoint": 3631,
                  "id": 7775,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_7604": {
                  "entryPoint": 6481,
                  "id": 7604,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalSupply_7713": {
                  "entryPoint": 2463,
                  "id": 7713,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 2539,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 6722,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_4400": {
                  "entryPoint": 9679,
                  "id": 4400,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_4474": {
                  "entryPoint": 10461,
                  "id": 4474,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_4585": {
                  "entryPoint": 10224,
                  "id": 4585,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@withdrawFunds_7435": {
                  "entryPoint": 2367,
                  "id": 7435,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawnForEdition_6992": {
                  "entryPoint": null,
                  "id": 6992,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 11712,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_string": {
                  "entryPoint": 11830,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 11336,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address": {
                  "entryPoint": 11365,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 8
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 12155,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 10926,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 12027,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 11515,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 10882,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 11862,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 11094,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 10693,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 13146,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 10836,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": 11288,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 11566,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 10991,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint32": {
                  "entryPoint": 11050,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint32": {
                  "entryPoint": 11025,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 10773,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_storage": {
                  "entryPoint": 12677,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12552,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12830,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12900,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 10,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 13095,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11211,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256__to_t_bytes32_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_enum$_TimeType_$6948_t_uint256__to_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": 12633,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 10817,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 13013,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c53858417cc2deddabfdd18e140b000124e262663bcfa24067fc0dd85fca2395__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12938,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12347,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f00aaf61ff36edcd294c208e7662638284f52536fb65dcd56ec734d9148f916d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 12298,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint32": {
                  "entryPoint": 12490,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 12456,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 12425,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 12275,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 10729,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 12201,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 12322,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 12253,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 12611,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 12530,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 11690,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 10861,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 10671,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:33775:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "645:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "655:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "664:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "659:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "724:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "749:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "754:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "745:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "745:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "768:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "773:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "764:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "764:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "758:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "758:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "738:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "738:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "685:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "688:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "682:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "682:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "696:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "698:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "707:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "710:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "703:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "703:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "678:3:46",
                                "statements": []
                              },
                              "src": "674:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "813:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "826:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "831:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "822:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "822:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "840:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "815:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "815:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "815:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "802:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "805:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "799:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "796:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "623:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "628:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "633:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "905:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "915:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "935:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "929:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "929:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "919:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "957:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "962:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "950:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "950:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1011:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1000:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1000:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1022:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1027:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1018:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1018:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1034:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "978:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "978:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "978:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1050:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1065:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1078:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1086:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1074:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1074:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1095:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1091:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1091:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1070:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1070:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1061:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1061:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1102:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1057:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1057:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1050:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "882:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "889:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "897:3:46",
                            "type": ""
                          }
                        ],
                        "src": "855:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1239:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1256:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1267:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1249:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1249:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1249:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1279:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1305:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1317:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1328:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1313:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1313:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1287:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1287:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1279:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1208:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1219:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1230:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1118:220:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1413:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1459:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1468:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1471:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1461:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1461:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1461:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1434:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1430:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1430:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1455:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1426:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1426:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1423:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1484:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1507:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1494:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1484:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1379:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1390:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1402:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1343:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1629:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1639:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1651:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1662:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1647:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1647:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1639:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1681:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1696:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1712:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1717:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1708:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1708:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1721:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1704:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1704:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1692:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1692:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1674:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1674:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1674:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1598:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1609:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1620:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1528:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1781:86:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1845:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1854:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1857:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1847:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1847:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1847:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1804:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1815:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1830:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1835:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1826:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1826:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1839:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1822:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1822:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1811:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1811:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1801:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1801:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1794:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1794:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1791:70:46"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1770:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1736:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1959:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2005:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2014:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2017:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2007:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2007:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2007:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1980:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1989:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1976:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1976:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2001:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1972:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1972:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1969:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2030:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2056:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2043:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2043:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2034:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2100:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2075:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2075:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2075:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2115:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2125:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2115:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2139:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2166:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2177:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2162:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2162:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2149:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2149:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2139:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1917:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1928:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1872:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2293:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2303:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2315:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2326:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2311:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2311:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2303:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2345:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2356:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2338:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2338:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2338:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2262:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2273:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2284:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2192:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2478:352:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2524:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2533:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2536:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2526:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2526:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2526:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2499:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2508:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2495:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2495:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2520:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2491:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2491:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2488:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2549:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2575:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2562:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2562:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2553:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2619:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2594:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2594:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2594:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2634:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2644:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2634:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2658:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2690:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2701:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2686:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2686:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2673:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2673:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2662:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2739:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2714:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2714:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2714:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2756:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2766:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2756:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2782:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2809:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2820:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2805:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2805:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2792:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2792:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2782:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2428:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2439:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2451:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2459:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2467:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2374:456:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3164:565:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3174:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3186:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3197:3:46",
                                    "type": "",
                                    "value": "288"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3182:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3182:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3174:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3210:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3228:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3233:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3224:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3224:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3237:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3220:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3220:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3214:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3255:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3270:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3278:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3266:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3266:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3248:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3248:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3248:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3302:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3313:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3298:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3298:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3318:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3291:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3291:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3291:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3334:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3344:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3338:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3374:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3385:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3370:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3370:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3394:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3402:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3390:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3390:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3363:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3363:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3363:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3426:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3437:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3422:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3422:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "3446:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3454:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3442:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3442:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3415:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3415:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3415:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3478:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3489:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3474:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3474:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3499:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3507:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3495:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3495:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3467:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3467:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3467:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3531:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3542:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3527:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3527:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "3552:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3560:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3548:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3548:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3520:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3520:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3520:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3584:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3595:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3580:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3580:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3605:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3613:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3601:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3601:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3573:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3573:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3573:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3637:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3648:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3633:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3633:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "3658:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3666:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3654:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3654:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3626:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3626:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3626:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3690:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3701:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3686:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3686:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "3711:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3719:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3707:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3707:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3679:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3679:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3679:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3069:9:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "3080:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "3088:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "3096:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3104:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3112:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3120:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3128:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3136:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3144:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3155:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2835:894:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3821:161:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3867:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3876:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3879:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3869:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3869:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3869:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3842:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3851:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3838:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3838:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3863:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3834:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3834:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3831:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3892:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3915:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3902:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3902:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3892:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3934:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3961:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3972:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3957:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3957:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3944:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3944:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3934:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3779:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3790:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3802:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3810:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3734:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4116:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4126:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4138:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4149:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4134:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4134:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4126:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4168:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4183:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4199:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4204:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4195:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4195:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4208:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4191:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4191:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4179:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4179:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4161:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4161:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4161:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4232:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4243:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4228:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4228:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4248:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4221:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4221:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4221:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4077:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4088:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4096:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4107:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3987:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4314:115:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4324:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4346:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4333:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4333:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "4324:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4407:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4416:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4419:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4409:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4409:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4409:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4375:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "4386:5:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4393:10:46",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4382:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4382:22:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4372:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4372:33:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4365:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4365:41:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4362:61:46"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "4293:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4304:5:46",
                            "type": ""
                          }
                        ],
                        "src": "4266:163:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4520:166:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4566:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4575:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4578:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4568:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4568:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4568:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4541:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4550:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4537:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4562:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4533:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4533:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4530:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4591:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4614:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4601:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4601:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4591:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4633:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4665:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4676:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4661:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4661:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "4643:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4643:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4633:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4478:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4489:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4501:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4509:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4434:252:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4796:510:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4842:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4851:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4854:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4844:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4844:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4844:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4817:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4826:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4813:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4813:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4838:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4809:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4809:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4806:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4867:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4894:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4881:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4881:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4871:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4913:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4923:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4917:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4968:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4977:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4980:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4970:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4970:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4970:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4956:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4964:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4953:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4953:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4950:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4993:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5007:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5018:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5003:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5003:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4997:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5073:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5082:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5085:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5075:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5075:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5075:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5052:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5056:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5048:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5048:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5063:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5044:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5044:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5037:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5037:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5034:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5098:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5125:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5112:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5112:16:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5102:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5155:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5164:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5167:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5157:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5157:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5157:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5143:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5151:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5137:34:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5229:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5238:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5241:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5231:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5231:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5231:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5194:2:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5202:1:46",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5205:6:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5198:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5198:14:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5190:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5190:23:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5215:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5186:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5186:32:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5220:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5183:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5183:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5180:65:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5254:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5268:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5272:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5264:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5264:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5254:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5284:16:46",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "5294:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5284:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4754:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4765:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4777:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4785:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4691:615:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5462:507:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5472:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5482:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5476:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5493:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5511:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5522:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5507:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5507:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5497:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5541:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5552:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5534:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5534:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5564:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "5575:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "5568:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5590:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5610:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5604:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5604:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5594:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5633:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5641:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5626:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5626:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5626:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5657:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5668:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5679:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5664:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5664:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "5657:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5691:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5709:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5717:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5705:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5705:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "5695:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5729:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5738:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "5733:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5797:146:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "5818:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5833:6:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "5827:5:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5827:13:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5850:3:46",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "5855:1:46",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5846:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5846:11:46"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5859:1:46",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "5842:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5842:19:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5823:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5823:39:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5811:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5811:52:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5811:52:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5876:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "5887:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5892:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5883:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5883:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5876:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5908:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5922:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5930:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5918:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5918:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5908:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5759:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5762:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5756:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5756:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5770:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5772:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5781:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5784:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5777:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5777:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5772:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5752:3:46",
                                "statements": []
                              },
                              "src": "5748:195:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5952:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "5960:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5952:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5431:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5442:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5453:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5311:658:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6061:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6107:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6116:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6119:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6109:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6109:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6109:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6082:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6091:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6078:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6078:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6103:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6074:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6074:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6071:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6132:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6155:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6142:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6142:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6132:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6174:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6204:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6215:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6200:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6200:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6187:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6187:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6178:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6253:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6228:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6228:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6228:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6268:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6278:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6268:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6019:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6030:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6042:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6050:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5974:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6364:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6410:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6419:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6422:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6412:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6412:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6412:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6385:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6394:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6381:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6381:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6406:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6377:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6377:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6374:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6435:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6461:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6448:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6448:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6439:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6505:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6480:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6480:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6480:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6520:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6530:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6520:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6330:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6341:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6353:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6294:247:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6738:637:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6785:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6794:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6797:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6787:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6787:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6787:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6759:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6768:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6755:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6755:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6780:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6751:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6751:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6748:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6810:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6836:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6823:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6814:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6880:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6855:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6855:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6855:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6895:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6905:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6895:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6919:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6946:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6957:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6942:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6942:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6929:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6929:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6919:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6970:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7002:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7013:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6998:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6998:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "6980:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6980:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6970:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7026:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7058:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7069:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7054:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7054:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "7036:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7036:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7026:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7082:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7114:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7125:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7110:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7110:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "7092:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7092:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7082:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7139:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7171:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7182:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7167:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7167:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "7149:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7149:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "7139:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7196:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7228:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7239:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7224:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7224:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "7206:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7206:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "7196:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7253:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7285:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7296:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7281:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7281:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7268:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7268:33:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7257:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7335:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7310:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7310:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7310:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7352:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7362:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "7352:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6648:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6659:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6671:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6679:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6687:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6695:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6703:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "6711:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "6719:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "6727:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6546:829:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7464:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7510:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7519:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7522:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7512:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7512:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7512:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7485:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7494:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7481:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7481:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7506:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7477:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7477:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7474:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7535:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7561:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7548:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7548:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7539:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7605:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7580:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7580:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7580:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7620:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7630:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7620:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7644:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7676:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7687:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7672:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7672:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7659:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7659:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7648:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7748:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7757:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7760:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7750:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7750:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7750:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7713:7:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "7736:7:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "7729:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7729:15:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "7722:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7722:23:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7710:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7710:36:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7703:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7703:44:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7700:64:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7773:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7783:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7773:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7422:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7433:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7445:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7453:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7380:416:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7907:553:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7953:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7962:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7965:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7955:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7955:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7955:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7928:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7937:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7924:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7924:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7949:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7920:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7920:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7917:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7978:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8001:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7988:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7988:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7978:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8020:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8051:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8062:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8047:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8047:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8034:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8034:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8024:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8075:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8085:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8079:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8130:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8139:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8142:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8132:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8132:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8132:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8118:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8126:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8115:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8115:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8112:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8155:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8169:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8180:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8165:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8165:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8159:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8235:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8244:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8247:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8237:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8237:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8237:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "8214:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8218:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8210:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8210:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8225:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8206:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8206:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8199:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8199:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8196:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8260:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8287:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8274:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8274:16:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8264:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8317:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8326:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8329:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8319:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8319:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8319:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8305:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8313:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8302:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8302:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8299:34:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8383:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8392:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8395:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8385:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8385:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8385:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "8356:2:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "8360:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8352:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8352:15:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8369:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8348:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8348:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8374:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8345:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8345:37:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8342:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8408:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8422:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8426:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8418:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8418:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8408:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8438:16:46",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "8448:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8438:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7857:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7868:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7880:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7888:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7896:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7801:659:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8497:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8514:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8521:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8526:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8517:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8517:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8507:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8507:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8507:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8554:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8557:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8547:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8547:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8547:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8578:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8581:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8571:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8571:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8571:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8465:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8672:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8682:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8692:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8686:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8737:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8739:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8739:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8739:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8725:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8733:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8722:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8722:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8719:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8768:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8782:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "8778:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8778:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8772:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8794:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8814:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8808:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8808:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8798:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8826:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8848:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8872:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8880:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8868:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8868:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "8885:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "8864:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8864:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8890:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8860:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8860:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8895:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8856:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8856:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8844:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8844:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8830:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8958:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8960:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8960:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8960:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8917:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8929:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8914:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8914:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8937:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8949:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8934:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8934:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "8911:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8911:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8908:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8996:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9000:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8989:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8989:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8989:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9020:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "9029:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "9020:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9051:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9059:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9044:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9044:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9044:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9104:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9113:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9116:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9106:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9106:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9106:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "9085:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "9090:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9081:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9081:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9099:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9078:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9078:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9075:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9146:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9154:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9142:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9142:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9161:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9166:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "9129:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9129:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9129:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "9197:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "9205:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9193:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9193:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9214:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9189:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9189:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9221:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9182:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9182:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9182:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "8641:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8646:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8654:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8662:5:46",
                            "type": ""
                          }
                        ],
                        "src": "8597:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9287:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9336:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9345:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9348:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9338:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9338:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9338:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "9315:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9323:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9311:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9311:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9330:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9307:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9307:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9300:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9300:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9297:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9361:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9409:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9417:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9405:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9405:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9437:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "9424:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9424:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9446:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9370:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9370:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "9361:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "9261:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9269:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9277:5:46",
                            "type": ""
                          }
                        ],
                        "src": "9234:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9629:780:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9676:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9685:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9688:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9678:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9678:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9678:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9650:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9659:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9646:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9646:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9671:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9642:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9642:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9639:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9701:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9727:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9714:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9714:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9705:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9771:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9746:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9746:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9746:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9786:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9796:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9786:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9810:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9837:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9848:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9833:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9833:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9820:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9820:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9810:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9861:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9892:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9903:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9888:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9888:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9875:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9875:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9865:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9916:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9926:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9920:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9971:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9980:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9983:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9973:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9973:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9973:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9959:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9967:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9956:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9956:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9953:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9996:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10028:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10039:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10024:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10024:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10048:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10006:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10006:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9996:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10065:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10098:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10109:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10094:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10094:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10081:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10081:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10069:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10142:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10151:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10154:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10144:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10144:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10144:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10128:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10138:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10125:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10125:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10122:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10167:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10199:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10210:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10195:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10195:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10221:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10177:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10177:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10167:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10238:49:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10271:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10282:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10267:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10267:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10254:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10254:33:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10242:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10316:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10325:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10328:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10318:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10318:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10318:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10302:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10312:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10299:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10299:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10296:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10341:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10373:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10384:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10369:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10369:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10395:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10351:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10351:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "10341:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9563:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9574:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9586:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9594:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9602:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9610:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9618:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9461:948:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10544:665:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10591:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10600:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10603:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10593:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10593:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10593:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10565:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10574:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10561:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10561:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10586:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10557:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10557:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10554:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10616:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10642:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10629:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10629:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10620:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10686:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10661:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10661:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10661:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10701:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10711:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10701:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10725:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10757:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10768:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10753:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10753:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10740:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10740:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10729:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10806:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10781:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10781:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10781:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10823:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10833:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10823:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10849:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10876:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10887:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10872:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10872:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10859:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10859:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10849:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10900:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10931:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10942:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10927:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10927:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10914:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10914:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10904:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10989:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10998:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11001:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10991:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10991:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10991:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10961:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10969:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10958:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10958:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10955:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11014:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11028:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11039:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11024:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11024:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11018:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11094:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11103:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11106:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11096:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11096:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11096:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "11073:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11077:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11069:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11069:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11084:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11065:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11065:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11058:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11058:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11055:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11119:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11168:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11172:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11164:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11164:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11190:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "11177:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11177:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11195:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "11129:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11129:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11119:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10486:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10497:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10509:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10517:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10525:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10533:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10414:795:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11301:301:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11347:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11356:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11359:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11349:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11349:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11349:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11322:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11331:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11318:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11318:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11343:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11314:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11314:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11311:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11372:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11398:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11385:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11385:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11376:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11442:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11417:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11417:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11417:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11457:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11467:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11457:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11481:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11513:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11524:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11509:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11509:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11496:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11496:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11485:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11562:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11537:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11537:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11537:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11579:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11589:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11579:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11259:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11270:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11282:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11290:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11214:388:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11662:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11672:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11686:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "11689:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "11682:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11682:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "11672:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11703:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "11733:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11739:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "11729:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11729:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "11707:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11780:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11782:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "11796:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11804:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "11792:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11792:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "11782:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "11760:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11753:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11753:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11750:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11870:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11891:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11898:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11903:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "11894:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11894:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11884:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11884:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11884:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11935:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11938:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11928:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11928:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11928:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11966:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11956:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11956:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "11826:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "11849:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11857:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11846:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11846:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "11823:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11823:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11820:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "11642:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "11651:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11607:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12166:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12183:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12194:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12176:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12176:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12176:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12217:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12228:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12213:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12213:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12233:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12206:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12206:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12206:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12267:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12252:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12272:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12245:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12245:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12245:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12327:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12338:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12323:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12323:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12343:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12316:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12316:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12316:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12356:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12368:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12379:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12364:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12364:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12356:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12143:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12157:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11992:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12568:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12585:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12596:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12578:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12578:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12578:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12619:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12630:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12615:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12615:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12635:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12608:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12608:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12608:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12658:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12669:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12654:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12654:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12674:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12647:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12647:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12647:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12729:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12740:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12725:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12725:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12745:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12718:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12718:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12718:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12787:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12799:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12810:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12795:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12795:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12787:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12545:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12559:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12394:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12857:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12874:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12881:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12886:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12877:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12877:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12867:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12867:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12867:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12914:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12917:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12907:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12907:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12907:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12938:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12941:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12931:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12931:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12931:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12825:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13006:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13028:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13030:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13030:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13030:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13022:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13025:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13019:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13019:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13016:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13059:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13071:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13074:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "13067:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13067:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "13059:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12988:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12991:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "12997:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12957:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13135:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13162:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13164:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13164:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13164:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13151:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "13158:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "13154:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13154:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13148:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13148:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13145:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13193:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13204:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13207:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13200:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13200:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "13193:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13118:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13121:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "13127:3:46",
                            "type": ""
                          }
                        ],
                        "src": "13087:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13267:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13298:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13300:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13300:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13300:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13283:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13294:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "13290:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13290:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "13280:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13280:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13277:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13329:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13340:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13347:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13336:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13336:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "13329:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "13249:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "13259:3:46",
                            "type": ""
                          }
                        ],
                        "src": "13220:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13534:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13551:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13562:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13544:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13544:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13585:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13596:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13581:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13581:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13601:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13574:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13574:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13624:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13635:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13620:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13620:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13640:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13613:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13613:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13613:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13695:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13706:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13691:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13711:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13684:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13684:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13684:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13737:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13749:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13760:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13745:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13745:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13737:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13511:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13525:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13360:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13827:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13886:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13888:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13888:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13888:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "13858:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "13851:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13851:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "13844:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13844:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "13866:1:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13877:1:46",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "13873:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13873:6:46"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "13881:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "13869:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13869:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13863:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13863:21:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "13840:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13840:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13837:71:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13917:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "13932:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "13935:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "13928:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13928:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "13917:7:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13806:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13809:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "13815:7:46",
                            "type": ""
                          }
                        ],
                        "src": "13775:168:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13994:171:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14025:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14046:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14053:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "14058:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "14049:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14049:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14039:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14039:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14039:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14090:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14093:4:46",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14083:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14083:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14083:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14118:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14121:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14111:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14111:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14111:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14014:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14007:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14007:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14004:132:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14145:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14154:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14157:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "14150:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14150:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "14145:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "13979:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "13982:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "13988:1:46",
                            "type": ""
                          }
                        ],
                        "src": "13948:217:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14217:181:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14227:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14237:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14231:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14256:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14271:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14274:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "14267:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14267:10:46"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14260:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14286:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14301:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14304:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "14297:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14297:10:46"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14290:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14341:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14343:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14343:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14343:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14322:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14331:2:46"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14335:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14327:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14327:12:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14319:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14319:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14316:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14372:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14383:3:46"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14388:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14379:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14379:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "14372:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14200:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14203:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "14209:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14170:228:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14577:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14594:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14605:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14587:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14587:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14587:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14628:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14639:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14624:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14624:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14644:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14617:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14617:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14617:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14667:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14678:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14663:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14663:18:46"
                                  },
                                  {
                                    "hexValue": "4d757374206e6f7420657863656564207175616e74697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14683:26:46",
                                    "type": "",
                                    "value": "Must not exceed quantity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14656:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14656:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14656:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14719:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14731:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14742:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14727:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14727:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14719:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f00aaf61ff36edcd294c208e7662638284f52536fb65dcd56ec734d9148f916d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14554:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14568:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14403:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14930:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14947:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14958:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14940:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14940:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14940:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14981:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14992:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14977:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14977:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14997:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14970:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14970:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14970:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15020:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15031:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15016:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15016:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15036:28:46",
                                    "type": "",
                                    "value": "Edition must have a signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15009:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15009:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15009:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15074:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15086:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15097:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15082:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15082:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15074:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14907:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14921:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14756:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15238:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15248:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15260:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15271:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15256:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15256:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15248:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15290:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15301:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15283:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15283:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15283:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15328:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15339:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15324:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15324:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15348:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15356:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15344:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15344:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15317:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15317:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15317:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15199:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15210:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15218:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15229:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15111:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15411:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15428:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15435:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15440:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "15431:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15431:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15421:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15421:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15421:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15468:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15471:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15461:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15461:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15461:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15492:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15495:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15485:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15485:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15485:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "15379:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15685:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15702:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15713:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15695:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15695:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15695:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15736:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15747:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15732:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15732:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15752:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15725:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15725:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15725:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15775:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15786:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15771:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15771:18:46"
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15791:28:46",
                                    "type": "",
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15764:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15764:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15764:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15829:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15841:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15852:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15837:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15837:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15829:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15662:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15676:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15511:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16040:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16057:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16068:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16050:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16050:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16050:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16091:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16102:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16087:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16087:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16107:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16080:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16080:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16080:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16130:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16141:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16126:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16126:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16146:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16119:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16119:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16119:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16182:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16194:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16205:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16190:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16190:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16182:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16017:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16031:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15866:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16393:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16410:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16421:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16403:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16403:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16403:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16444:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16455:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16440:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16440:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16460:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16433:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16433:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16433:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16483:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16494:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16479:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16479:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16499:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16472:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16472:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16472:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16554:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16565:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16550:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16550:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16570:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16543:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16543:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16543:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16591:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16603:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16614:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16599:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16599:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16591:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16370:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16384:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16219:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16803:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16820:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16831:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16813:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16813:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16813:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16854:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16865:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16850:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16850:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16870:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16843:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16843:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16843:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16893:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16904:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16889:18:46"
                                  },
                                  {
                                    "hexValue": "5065726d697373696f6e6564207175616e7469747920746f6f20626967",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16909:31:46",
                                    "type": "",
                                    "value": "Permissioned quantity too big"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16882:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16882:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16882:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16950:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16962:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16973:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16958:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16958:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16950:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c53858417cc2deddabfdd18e140b000124e262663bcfa24067fc0dd85fca2395__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16780:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16794:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16629:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17161:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17178:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17189:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17171:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17171:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17171:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17212:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17223:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17208:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17208:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17228:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17201:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17201:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17251:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17262:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17247:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17247:18:46"
                                  },
                                  {
                                    "hexValue": "4d75737420736574207175616e74697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17267:19:46",
                                    "type": "",
                                    "value": "Must set quantity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17240:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17240:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17240:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17296:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17308:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17319:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17304:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17304:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17296:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17138:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17152:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16987:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17507:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17524:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17535:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17517:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17517:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17517:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17558:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17569:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17554:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17554:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17574:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17547:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17547:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17547:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17597:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17608:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17593:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17593:18:46"
                                  },
                                  {
                                    "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17613:27:46",
                                    "type": "",
                                    "value": "Must set fundingRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17586:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17586:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17586:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17650:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17662:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17673:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17658:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17658:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17650:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17484:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17498:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17333:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17861:230:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17878:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17889:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17871:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17871:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17871:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17912:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17923:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17908:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17908:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17928:2:46",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17901:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17901:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17901:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17951:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17962:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17947:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17947:18:46"
                                  },
                                  {
                                    "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e207374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17967:34:46",
                                    "type": "",
                                    "value": "End time must be greater than st"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17940:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17940:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17940:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18022:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18033:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18018:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18018:18:46"
                                  },
                                  {
                                    "hexValue": "6172742074696d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18038:10:46",
                                    "type": "",
                                    "value": "art time"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18011:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18011:38:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18011:38:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18058:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18070:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18081:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18066:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18066:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18058:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17838:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17852:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17687:404:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18391:512:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18401:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18413:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18424:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18409:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18409:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18401:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18437:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18455:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18460:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "18451:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18451:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18464:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "18447:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18447:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18441:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18482:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18497:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18505:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18493:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18493:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18475:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18475:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18475:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18529:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18540:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18525:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18525:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18545:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18518:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18518:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18518:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18561:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18571:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "18565:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18601:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18612:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18597:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18597:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18621:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18629:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18617:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18617:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18590:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18590:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18590:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18653:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18664:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18649:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18649:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18673:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18681:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18669:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18669:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18642:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18642:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18642:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18705:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18716:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18701:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18701:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "18726:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18734:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18722:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18722:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18694:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18694:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18694:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18758:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18769:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18754:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18754:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "18779:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18787:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18775:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18775:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18747:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18747:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18811:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18822:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18807:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18807:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "18832:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18840:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18828:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18828:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18800:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18800:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18800:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18864:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18875:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18860:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18860:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "18885:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18893:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18881:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18881:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18853:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18853:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18853:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18304:9:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "18315:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "18323:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "18331:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18339:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18347:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18355:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18363:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18371:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18382:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18096:807:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19082:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19099:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19110:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19092:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19092:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19092:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19133:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19144:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19129:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19129:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19149:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19122:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19122:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19122:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19172:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19183:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19168:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19168:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19188:24:46",
                                    "type": "",
                                    "value": "Edition does not exist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19161:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19161:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19161:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19222:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19234:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19245:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19230:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19230:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19222:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19059:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19073:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18908:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19433:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19450:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19461:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19443:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19443:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19443:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19484:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19495:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19480:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19480:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19500:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19473:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19473:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19473:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19523:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19534:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19519:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19519:18:46"
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f7574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19539:34:46",
                                    "type": "",
                                    "value": "This edition is already sold out"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19512:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19512:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19512:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19594:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19605:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19590:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19590:18:46"
                                  },
                                  {
                                    "hexValue": "2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19610:3:46",
                                    "type": "",
                                    "value": "."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19583:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19583:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19583:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19623:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19635:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19646:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19631:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19631:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19623:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19410:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19424:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19259:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19835:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19852:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19863:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19845:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19845:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19845:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19886:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19897:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19882:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19882:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19902:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19875:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19875:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19875:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19925:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19936:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19921:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19921:18:46"
                                  },
                                  {
                                    "hexValue": "4d7573742073656e6420656e6f75676820746f20707572636861736520746865",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19941:34:46",
                                    "type": "",
                                    "value": "Must send enough to purchase the"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19914:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19914:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19914:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19996:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20007:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19992:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19992:18:46"
                                  },
                                  {
                                    "hexValue": "2065646974696f6e2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20012:11:46",
                                    "type": "",
                                    "value": " edition."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19985:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19985:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19985:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20033:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20045:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20056:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20041:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20041:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20033:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19812:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19826:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19661:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20245:249:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20262:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20273:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20255:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20255:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20255:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20296:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20307:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20292:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20292:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20312:2:46",
                                    "type": "",
                                    "value": "59"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20285:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20285:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20285:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20335:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20346:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20331:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20331:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20351:34:46",
                                    "type": "",
                                    "value": "No permissioned tokens available"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20324:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20324:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20324:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20406:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20417:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20402:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20402:18:46"
                                  },
                                  {
                                    "hexValue": "2026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20422:29:46",
                                    "type": "",
                                    "value": " & open auction not started"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20395:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20395:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20395:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20461:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20473:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20484:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20469:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20469:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20461:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20222:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20236:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20071:423:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20673:164:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20690:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20701:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20683:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20683:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20683:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20724:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20735:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20720:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20720:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20740:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20713:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20713:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20713:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20763:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20774:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20759:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20759:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20779:16:46",
                                    "type": "",
                                    "value": "Invalid signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20752:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20752:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20752:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20805:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20817:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20828:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20813:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20813:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20805:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20650:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20664:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20499:338:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21016:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21033:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21044:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21026:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21026:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21026:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21067:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21078:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21063:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21063:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21083:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21056:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21056:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21056:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21106:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21117:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21102:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21102:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e2068617320656e646564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21122:19:46",
                                    "type": "",
                                    "value": "Auction has ended"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21095:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21095:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21095:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21151:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21163:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21174:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21159:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21159:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21151:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20993:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21007:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20842:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21287:93:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21297:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21309:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21320:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21305:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21305:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21297:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21339:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "21354:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21362:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21350:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21350:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21332:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21332:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21332:42:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21256:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21267:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21278:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21188:192:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21559:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21576:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21587:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21569:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21569:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21569:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21610:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21621:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21606:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21606:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21626:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21599:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21599:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21599:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21649:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21660:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21645:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21645:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21665:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21638:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21638:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21638:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21720:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21731:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21716:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21716:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21736:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21709:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21709:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21709:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21762:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21774:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21785:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21770:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21770:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21762:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21536:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21550:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21385:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22088:345:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22098:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22118:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22112:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22112:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "22102:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "22160:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22168:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22156:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22156:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "22175:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22180:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "22134:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22134:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22134:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22196:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "22213:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22218:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22209:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22209:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22200:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22234:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22256:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22250:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22250:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22238:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22298:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22306:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22294:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22313:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22320:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "22272:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22272:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22272:57:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22338:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22355:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22362:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22351:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22351:20:46"
                              },
                              "variables": [
                                {
                                  "name": "end_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22342:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "22387:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22394:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22380:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22380:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22380:18:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22407:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "22418:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22425:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22414:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22414:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "22407:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "22056:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22061:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22069:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "22080:3:46",
                            "type": ""
                          }
                        ],
                        "src": "21800:633:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22545:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "22555:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22567:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22578:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22563:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22563:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22555:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22597:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "22612:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22620:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22608:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22608:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22590:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22590:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22590:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22514:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22525:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22536:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22438:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22669:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22686:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22693:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22698:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "22689:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22689:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22679:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22679:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22679:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22726:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22729:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22719:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22719:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22719:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22750:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22753:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22743:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22743:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22743:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22637:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22909:272:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "22919:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22931:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22942:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22927:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22927:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22919:4:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22987:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23008:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "23015:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "23020:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "23011:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23011:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23001:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23001:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23001:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23052:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23055:4:46",
                                          "type": "",
                                          "value": "0x21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23045:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23045:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23045:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23080:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23083:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23073:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23073:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23073:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "22967:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22975:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "22964:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22964:13:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22957:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22957:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "22954:144:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23114:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23125:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23107:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23107:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23107:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23152:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23163:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23148:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23148:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23168:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23141:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23141:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23141:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_TimeType_$6948_t_uint256__to_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22870:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22881:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22889:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22900:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22769:412:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23360:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23377:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23388:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23370:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23370:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23370:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23411:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23422:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23407:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23407:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23427:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23400:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23400:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23400:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23450:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23461:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23446:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23446:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23466:34:46",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23439:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23439:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23439:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23521:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23532:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23517:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23517:18:46"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23537:17:46",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23510:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23510:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23510:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23564:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23576:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23587:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23572:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23572:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23564:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23337:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23351:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23186:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23658:65:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23675:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "23678:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23668:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23668:14:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23668:14:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23691:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23709:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23712:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "23699:9:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23699:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "23691:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "23641:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "23649:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23602:121:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23786:915:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23796:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "23819:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23813:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23813:12:46"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "23800:9:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23834:15:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23848:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "23838:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23858:11:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23868:1:46",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23862:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23878:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23892:2:46"
                                  },
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "23896:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "23888:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23888:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "23878:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23915:44:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "23945:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23956:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "23941:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23941:18:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "23919:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23998:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "24000:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "24014:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24022:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "24010:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24010:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "24000:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "23978:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "23971:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23971:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "23968:61:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24038:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "24048:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "24042:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24109:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24130:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24137:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24142:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "24133:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24133:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24123:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24123:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24123:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24174:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24177:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24167:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24167:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24167:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24202:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24205:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24195:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24195:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24195:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "24065:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "24088:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "24096:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "24085:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24085:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "24062:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24062:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "24059:161:46"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "24270:97:46",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "24291:3:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24300:9:46"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "24315:3:46",
                                                      "type": "",
                                                      "value": "255"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24311:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "24311:8:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "24296:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24296:24:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "24284:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24284:37:46"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "24284:37:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "24334:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "24345:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "24350:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24341:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24341:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "24334:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "24263:104:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24268:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "24383:312:46",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "24397:51:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "24442:5:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "24412:29:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24412:36:46"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "24401:7:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "24461:10:46",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24470:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "24465:1:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "24538:111:46",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "24567:3:46"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "24572:1:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "24563:3:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "24563:11:46"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "24582:7:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "24576:5:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "24576:14:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24556:6:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "24556:35:46"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "24556:35:46"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "24608:27:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24623:7:46"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24632:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24619:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "24619:16:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24608:7:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "24495:1:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "24498:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "24492:2:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24492:13:46"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "24506:19:46",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "24508:15:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24517:1:46"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "24520:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24513:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "24513:10:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24508:1:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "24488:3:46",
                                          "statements": []
                                        },
                                        "src": "24484:165:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "24662:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "24673:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "24678:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24669:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24669:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "24662:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "24376:319:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24381:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "outOfPlaceEncoding",
                                "nodeType": "YulIdentifier",
                                "src": "24236:18:46"
                              },
                              "nodeType": "YulSwitch",
                              "src": "24229:466:46"
                            }
                          ]
                        },
                        "name": "abi_encode_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "23763:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "23770:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "23778:3:46",
                            "type": ""
                          }
                        ],
                        "src": "23728:973:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25039:381:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25049:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25085:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25093:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "25059:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25059:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25053:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25106:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25126:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25120:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25120:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25110:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25168:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25176:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25164:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25164:17:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25183:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25187:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25142:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25142:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25142:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25203:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25220:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25224:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25216:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25216:15:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25207:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25247:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25254:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25240:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25240:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25240:18:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25267:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25289:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25283:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25283:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25271:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "25331:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25339:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25327:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25327:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25350:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25357:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25346:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25346:13:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25361:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25305:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25305:65:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25305:65:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25379:35:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25394:5:46"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25401:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25390:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25390:20:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25412:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25386:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25386:28:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25379:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "24999:3:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "25004:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25012:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25020:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25031:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24706:714:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25662:124:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25672:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25708:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25716:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "25682:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25682:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25676:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25736:2:46"
                                  },
                                  {
                                    "hexValue": "73746f726566726f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25740:12:46",
                                    "type": "",
                                    "value": "storefront"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25729:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25729:24:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25729:24:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25762:18:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25773:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25777:2:46",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25769:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25769:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25762:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25638:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25643:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25654:3:46",
                            "type": ""
                          }
                        ],
                        "src": "25425:361:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25965:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25982:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25993:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25975:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25975:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25975:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26016:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26027:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26012:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26012:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26032:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26005:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26005:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26005:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26055:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26066:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26051:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26051:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26071:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26044:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26044:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26044:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26126:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26137:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26122:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26122:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26142:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26115:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26115:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26115:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26160:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26172:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26183:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26168:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26168:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26160:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25942:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25956:4:46",
                            "type": ""
                          }
                        ],
                        "src": "25791:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26372:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26389:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26400:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26382:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26382:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26382:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26423:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26434:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26419:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26419:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26439:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26412:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26412:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26412:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26462:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26473:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26458:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26458:18:46"
                                  },
                                  {
                                    "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26478:31:46",
                                    "type": "",
                                    "value": "Insufficient balance for send"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26451:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26451:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26451:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26519:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26531:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26542:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26527:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26527:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26519:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26349:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26363:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26198:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26747:14:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26749:10:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "26756:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "26749:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "26731:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "26739:3:46",
                            "type": ""
                          }
                        ],
                        "src": "26556:205:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26940:239:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26957:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26968:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26950:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26950:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26991:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27002:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26987:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26987:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27007:2:46",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26980:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26980:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26980:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27030:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27041:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27026:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27026:18:46"
                                  },
                                  {
                                    "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27046:34:46",
                                    "type": "",
                                    "value": "Unable to send value: recipient "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27019:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27019:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27019:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27101:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27112:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27097:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27097:18:46"
                                  },
                                  {
                                    "hexValue": "6d61792068617665207265766572746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27117:19:46",
                                    "type": "",
                                    "value": "may have reverted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27090:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27090:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27090:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27146:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27158:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27169:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27154:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27154:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27146:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26917:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26931:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26766:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27358:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27375:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27386:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27368:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27368:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27368:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27409:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27420:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27405:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27405:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27425:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27398:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27398:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27448:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27459:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27444:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27444:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27464:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27437:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27437:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27437:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27519:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27530:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27515:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27515:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27535:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27508:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27508:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27508:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27552:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27564:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27575:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27560:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27560:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27552:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27335:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27349:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27184:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27764:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27781:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27792:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27774:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27774:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27774:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27815:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27826:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27811:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27811:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27831:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27804:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27804:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27804:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27854:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27865:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27850:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27850:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27870:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27843:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27843:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27843:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27925:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27936:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27921:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27921:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27941:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27914:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27914:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27914:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27957:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27969:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27980:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27965:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27965:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27957:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27741:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27755:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27590:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28169:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28186:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28197:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28179:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28179:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28179:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28220:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28231:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28216:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28216:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28236:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28209:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28209:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28209:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28259:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28270:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28255:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28255:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28275:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28248:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28248:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28248:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28319:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28331:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28342:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28327:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28327:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28319:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28146:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28160:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27995:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28530:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28547:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28558:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28540:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28540:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28581:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28592:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28577:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28577:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28597:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28570:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28570:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28570:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28620:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28631:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28616:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28616:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28636:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28609:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28609:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28609:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28673:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28685:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28696:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28681:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28681:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28673:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28507:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28521:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28356:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28895:262:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "28905:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28917:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28928:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28913:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28913:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28905:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28948:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "28959:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28941:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28941:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28941:25:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28975:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28993:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28998:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "28989:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28989:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29002:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "28985:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28985:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "28979:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29024:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29035:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29020:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29020:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29044:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29052:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29040:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29040:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29013:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29013:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29013:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29076:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29087:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29072:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29072:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "29096:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "29104:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29092:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29092:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29065:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29065:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29065:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29128:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29139:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29124:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29124:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "29144:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29117:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29117:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29117:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256__to_t_bytes32_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28840:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "28851:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "28859:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "28867:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "28875:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28886:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28710:447:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29410:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "29427:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29436:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29441:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "29432:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29432:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29420:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29420:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29420:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "29467:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29472:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29463:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29463:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "29476:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29456:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29456:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29456:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "29503:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29508:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29499:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29499:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29513:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29492:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29492:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29492:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29529:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "29540:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29545:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29536:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29536:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "29529:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "29378:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "29383:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29391:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "29402:3:46",
                            "type": ""
                          }
                        ],
                        "src": "29162:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29733:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29750:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29761:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29743:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29743:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29743:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29784:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29795:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29780:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29780:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29800:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29773:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29773:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29773:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29823:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29834:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29819:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29819:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29839:34:46",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29812:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29812:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29812:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29883:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29895:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29906:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29891:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29891:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29883:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29710:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29724:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29559:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30094:178:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30111:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30122:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30104:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30104:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30104:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30145:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30156:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30141:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30141:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30161:2:46",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30134:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30134:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30134:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30184:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30195:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30180:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30180:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30200:30:46",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30173:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30173:58:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30173:58:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30240:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30252:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30263:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30248:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30248:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30240:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30071:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30085:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29920:352:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30451:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30468:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30479:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30461:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30461:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30461:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30502:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30513:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30498:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30498:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30518:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30491:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30491:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30491:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30541:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30552:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30537:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30557:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30530:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30530:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30530:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30612:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30623:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30608:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30608:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30628:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30601:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30601:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30601:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30651:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30663:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30674:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30659:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30659:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30651:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30428:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30442:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30277:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30863:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30880:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30891:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30873:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30873:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30873:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30914:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30925:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30910:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30910:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30930:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30903:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30903:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30903:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30953:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30964:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30949:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30949:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30969:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30942:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30942:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30942:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31024:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31035:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31020:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31020:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31040:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31013:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31013:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31013:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31070:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31082:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31093:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31078:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31078:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31070:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30840:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30854:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30689:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31311:286:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31321:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31339:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31344:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "31335:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31335:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31348:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "31331:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31331:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31325:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31366:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "31381:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31389:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "31377:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31377:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31359:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31359:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31359:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31413:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31424:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31409:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31409:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31433:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31441:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "31429:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31429:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31402:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31402:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31402:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31465:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31476:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31461:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31461:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "31481:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31454:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31454:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31454:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31508:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31519:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31504:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31504:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31524:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31497:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31497:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31497:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31537:54:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "31563:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31575:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31586:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31571:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31571:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "31545:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31545:46:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31537:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31256:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "31267:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "31275:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "31283:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31291:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31302:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31108:489:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31682:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31728:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31737:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31740:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31730:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31730:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31730:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "31703:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31712:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31699:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31699:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31724:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31695:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31695:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "31692:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31753:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31772:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31766:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31766:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "31757:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31815:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "31791:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31791:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31791:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31830:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "31840:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "31830:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31648:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "31659:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31671:6:46",
                            "type": ""
                          }
                        ],
                        "src": "31602:249:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32030:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32047:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32058:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32040:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32040:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32040:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32081:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32092:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32077:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32077:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32097:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32070:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32070:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32070:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32120:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32131:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32116:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32116:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32136:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32109:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32109:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32109:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32172:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32184:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32195:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32180:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32180:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32172:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32007:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32021:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31856:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32383:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32400:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32411:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32393:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32393:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32434:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32445:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32430:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32430:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32450:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32423:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32423:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32423:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32484:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32469:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32489:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32462:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32462:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32462:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32532:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32544:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32555:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32540:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32540:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32532:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32360:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32374:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32209:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32743:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32760:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32771:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32753:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32753:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32753:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32794:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32805:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32790:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32790:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32810:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32783:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32783:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32783:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32833:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32844:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32829:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32849:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32822:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32822:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32822:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32904:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32915:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32900:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32900:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32920:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32893:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32893:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32893:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32934:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32946:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32957:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32942:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32942:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32934:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32720:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32734:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32569:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33146:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33163:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33174:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33156:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33156:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33156:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33197:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33208:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33193:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33193:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33213:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33186:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33186:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33186:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33236:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33247:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33232:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33232:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33252:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33225:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33225:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33225:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33307:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33318:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33303:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33303:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33323:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33296:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33296:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33296:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33337:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33349:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33360:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33345:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33345:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "33337:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "33123:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "33137:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32972:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33556:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "33566:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33578:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33589:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33574:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33574:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "33566:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33609:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33620:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33602:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33602:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33602:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33647:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33658:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33643:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33643:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33667:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33675:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "33663:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33663:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33636:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33636:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33636:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33701:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33712:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33697:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33697:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "33717:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33690:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33690:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33690:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33744:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33755:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33740:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33740:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "33760:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33733:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33733:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33733:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "33501:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "33512:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "33520:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "33528:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33536:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "33547:4:46",
                            "type": ""
                          }
                        ],
                        "src": "33375:398:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 288)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _2))\n        mstore(add(headStart, 256), and(value8, _1))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        value4 := abi_decode_uint32(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint32(add(headStart, 192))\n        let value_1 := calldataload(add(headStart, 224))\n        validator_revert_address(value_1)\n        value7 := value_1\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_f00aaf61ff36edcd294c208e7662638284f52536fb65dcd56ec734d9148f916d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Must not exceed quantity\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Edition must have a signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Signer address cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c53858417cc2deddabfdd18e140b000124e262663bcfa24067fc0dd85fca2395__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Permissioned quantity too big\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Must set quantity\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Must set fundingRecipient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"End time must be greater than st\")\n        mstore(add(headStart, 96), \"art time\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Edition does not exist\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"This edition is already sold out\")\n        mstore(add(headStart, 96), \".\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"Must send enough to purchase the\")\n        mstore(add(headStart, 96), \" edition.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 59)\n        mstore(add(headStart, 64), \"No permissioned tokens available\")\n        mstore(add(headStart, 96), \" & open auction not started\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Auction has ended\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        mstore(end_2, \"/\")\n        end := add(end_2, 1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_enum$_TimeType_$6948_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        if iszero(lt(value0, 2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_string_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := 0\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        let _2 := 32\n        if eq(outOfPlaceEncoding, lt(length, _2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, length)\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        let length := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), _1, length)\n        let end_1 := add(_1, length)\n        mstore(end_1, \"/\")\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(end_1, 1), length_1)\n        end := add(add(end_1, length_1), 1)\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        mstore(_1, \"storefront\")\n        end := add(_1, 10)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Insufficient balance for send\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Unable to send value: recipient \")\n        mstore(add(headStart, 96), \"may have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256__to_t_bytes32_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "6999": [
                  {
                    "length": 32,
                    "start": 8527
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101ee5760003560e01c806370a082311161010d578063b88d4fde116100a0578063e1a3d5731161006f578063e1a3d57314610676578063e8a3d485146106a3578063e985e9c5146106b8578063f2fde38b14610701578063fbab9e041461072157600080fd5b8063b88d4fde146105e9578063bb314ca114610609578063c87b56dd14610629578063d3bb05281461064957600080fd5b806395d89b41116100dc57806395d89b4114610581578063a22cb46514610596578063abccf3dd146105b6578063abfc83a0146105c957600080fd5b806370a082311461050e578063715018a61461052e57806373aaf879146105435780638da5cb5b1461056357600080fd5b80632a55205a1161018557806352f5c2e41161015457806352f5c2e41461048157806356dee996146104ae578063602787ed146104ce5780636352211e146104ee57600080fd5b80632a55205a146103ed57806342842e0e1461042c5780634bf440261461044c57806352e25bf21461046157600080fd5b8063155dd5ee116101c1578063155dd5ee146102a457806318160ddd146102c457806323b872dd146102e7578063279c806e1461030757600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610282575b600080fd5b3480156101ff57600080fd5b5061021361020e3660046129c5565b610741565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d61076c565b60405161021f9190612a41565b34801561025657600080fd5b5061026a610265366004612a54565b6107fe565b6040516001600160a01b03909116815260200161021f565b34801561028e57600080fd5b506102a261029d366004612a82565b610825565b005b3480156102b057600080fd5b506102a26102bf366004612a54565b61093f565b3480156102d057600080fd5b506102d961099f565b60405190815260200161021f565b3480156102f357600080fd5b506102a2610302366004612aae565b6109eb565b34801561031357600080fd5b5061038f610322366004612a54565b60cc6020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919263ffffffff808416936401000000008104821693600160401b8204831693600160601b8304841693600160801b8404811693600160a01b900416911689565b604080516001600160a01b039a8b168152602081019990995263ffffffff978816908901529486166060880152928516608087015290841660a0860152831660c085015290911660e08301529091166101008201526101200161021f565b3480156103f957600080fd5b5061040d610408366004612aef565b610a1c565b604080516001600160a01b03909316835260208301919091520161021f565b34801561043857600080fd5b506102a2610447366004612aae565b610b18565b34801561045857600080fd5b506102d9610b33565b34801561046d57600080fd5b506102a261047c366004612b2a565b610b4f565b34801561048d57600080fd5b506104a161049c366004612b56565b610cb2565b60405161021f9190612bcb565b3480156104ba57600080fd5b506102a26104c9366004612c18565b610d6b565b3480156104da57600080fd5b506102d96104e9366004612a54565b610e2f565b3480156104fa57600080fd5b5061026a610509366004612a54565b610e51565b34801561051a57600080fd5b506102d9610529366004612c48565b610eb1565b34801561053a57600080fd5b506102a2610f37565b34801561054f57600080fd5b506102a261055e366004612c65565b610f4b565b34801561056f57600080fd5b506097546001600160a01b031661026a565b34801561058d57600080fd5b5061023d611354565b3480156105a257600080fd5b506102a26105b1366004612cfb565b611363565b6102a26105c4366004612d2e565b61136e565b3480156105d557600080fd5b506102a26105e4366004612e56565b611733565b3480156105f557600080fd5b506102a2610604366004612efb565b6118aa565b34801561061557600080fd5b506102a2610624366004612b2a565b6118e2565b34801561063557600080fd5b5061023d610644366004612a54565b611951565b34801561065557600080fd5b506102d9610664366004612a54565b60cf6020526000908152604090205481565b34801561068257600080fd5b506102d9610691366004612a54565b60ce6020526000908152604090205481565b3480156106af57600080fd5b5061023d611a1a565b3480156106c457600080fd5b506102136106d3366004612f7b565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561070d57600080fd5b506102a261071c366004612c48565b611a42565b34801561072d57600080fd5b506102a261073c366004612b2a565b611abb565b600063152a902d60e11b6001600160e01b031983161480610766575061076682611b29565b92915050565b60606065805461077b90612fa9565b80601f01602080910402602001604051908101604052809291908181526020018280546107a790612fa9565b80156107f45780601f106107c9576101008083540402835291602001916107f4565b820191906000526020600020905b8154815290600101906020018083116107d757829003601f168201915b5050505050905090565b600061080982611b79565b506000908152606960205260409020546001600160a01b031690565b600061083082610e51565b9050806001600160a01b0316836001600160a01b0316036108a25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108be57506108be81336106d3565b6109305760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610899565b61093a8383611bd8565b505050565b600081815260cf602090815260408083205460ce9092528220546109639190612ff3565b600083815260ce602090815260408083205460cf83528184205560cc90915290205490915061099b906001600160a01b031682611c46565b5050565b60008060015b60cb548110156109e557600081815260cc60205260409020600201546109d19063ffffffff168361300a565b9150806109dd81613022565b9150506109a5565b50919050565b6109f53382611d53565b610a115760405162461bcd60e51b81526004016108999061303b565b61093a838383611dd2565b6000806000610a2a85610e2f565b600081815260cc602090815260409182902082516101208101845281546001600160a01b03908116808352600184015494830194909452600283015463ffffffff80821696840196909652640100000000810486166060840152600160401b810486166080840152600160601b8104861660a0840152600160801b8104861660c0840152600160a01b900490941660e082015260039091015490921661010083015291925090610ae25751925060009150610b119050565b6080810151815163ffffffff90911690612710610aff8389613089565b610b0991906130a8565b945094505050505b9250929050565b61093a838383604051806020016040528060008152506118aa565b60006001610b4060cb5490565b610b4a9190612ff3565b905090565b610b57611f6e565b600082815260cc6020526040902060020154610b8290640100000000900463ffffffff1660016130ca565b63ffffffff168163ffffffff1610610bdc5760405162461bcd60e51b815260206004820152601860248201527f4d757374206e6f7420657863656564207175616e7469747900000000000000006044820152606401610899565b600082815260cc60205260409020600301546001600160a01b0316610c435760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610899565b600082815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8616908102919091179091558251858152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a15050565b606060008267ffffffffffffffff811115610ccf57610ccf612daa565b604051908082528060200260200182016040528015610cf8578160200160208202803683370190505b50905060005b83811015610d6357610d27858583818110610d1b57610d1b6130f2565b90506020020135610e51565b828281518110610d3957610d396130f2565b6001600160a01b039092166020928302919091019091015280610d5b81613022565b915050610cfe565b509392505050565b610d73611f6e565b6001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610899565b600082815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03851690811790915591518481527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a25050565b6000608082901c808203610766575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806107665760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610899565b60006001600160a01b038216610f1b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610899565b506001600160a01b031660009081526068602052604090205490565b610f3f611f6e565b610f496000611fc8565b565b610f53611f6e565b610f5e8660016130ca565b63ffffffff168263ffffffff1610610fb85760405162461bcd60e51b815260206004820152601d60248201527f5065726d697373696f6e6564207175616e7469747920746f6f206269670000006044820152606401610899565b60008663ffffffff16116110025760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610899565b6001600160a01b0388166110585760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610899565b8363ffffffff168363ffffffff16116110c45760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610899565b63ffffffff821615611126576001600160a01b0381166111265760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610899565b604051806101200160405280896001600160a01b03168152602001888152602001600063ffffffff1681526020018763ffffffff1681526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff168152602001826001600160a01b031681525060cc60006111aa60cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355938501516001830155918401516002820180546060870151608088015160a089015160c08a015160e08b015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b93909116929092029190911790556101009093015160039093018054909216921691909117905560cb54604080516001600160a01b03808c168252602082018b905263ffffffff808b16938301939093528289166060830152828816608083015282871660a083015291851660c082015290831660e08201527fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3906101000160405180910390a261134a60cb80546001019055565b5050505050505050565b60606066805461077b90612fa9565b61099b33838361201a565b600083815260cc60205260409020600181015460029091015463ffffffff640100000000820481169181811691600160601b8204811691600160801b8104821691600160a01b90910416846113fe5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610899565b8463ffffffff168463ffffffff16106114635760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610899565b853410156114c55760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610899565b428363ffffffff1611156115d35760008163ffffffff161180156114f457508063ffffffff168463ffffffff16105b6115665760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610899565b600089815260cc60205260409020600301546001600160a01b031661158c89898c6120e8565b6001600160a01b0316146115d35760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610899565b428263ffffffff161161161c5760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610899565b600089815260cc60205260409020600201805463ffffffff191663ffffffff600187011690811790915560808a901b1761165e6097546001600160a01b031690565b60008b815260cc60205260409020546001600160a01b039182169116036116a85760008a815260ce60205260408120805434929061169d90849061300a565b909155506116ca9050565b60008a815260cc60205260409020546116ca906001600160a01b031634611c46565b6116d433826121e7565b60008a815260cc602090815260409182902060020154915163ffffffff9092168252339183918d917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a450505050505050505050565b600054610100900460ff16158080156117535750600054600160ff909116105b8061176d5750303b15801561176d575060005460ff166001145b6117d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610899565b6000805460ff1916600117905580156117f3576000805461ff0019166101001790555b6117fd8484612329565b61180561235a565b61180e86611a42565b8161181886612389565b604051602001611829929190613108565b60405160208183030381529060405260c9908051906020019061184d929190612916565b5061185c60cb80546001019055565b80156118a2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6118b43383611d53565b6118d05760405162461bcd60e51b81526004016108999061303b565b6118dc84848484612401565b50505050565b6118ea611f6e565b600082815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff85169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90610e23906001908690613159565b6000818152606760205260409020546060906001600160a01b03166119d05760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610899565b60006119db83610e2f565b905060c96119e882612389565b6119f185612389565b604051602001611a039392919061321e565b604051602081830303815290604052915050919050565b606060c9604051602001611a2e9190613264565b604051602081830303815290604052905090565b611a4a611f6e565b6001600160a01b038116611aaf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610899565b611ab881611fc8565b50565b611ac3611f6e565b600082815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff861690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c91610e2391908690613159565b60006001600160e01b031982166380ac58cd60e01b1480611b5a57506001600160e01b03198216635b5e139f60e01b145b8061076657506301ffc9a760e01b6001600160e01b0319831614610766565b6000818152606760205260409020546001600160a01b0316611ab85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610899565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611c0d82610e51565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b80471015611c965760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610899565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ce3576040519150601f19603f3d011682016040523d82523d6000602084013e611ce8565b606091505b505090508061093a5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610899565b600080611d5f83610e51565b9050806001600160a01b0316846001600160a01b03161480611da657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611dca5750836001600160a01b0316611dbf846107fe565b6001600160a01b0316145b949350505050565b826001600160a01b0316611de582610e51565b6001600160a01b031614611e495760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610899565b6001600160a01b038216611eab5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610899565b611eb6600082611bd8565b6001600160a01b0383166000908152606860205260408120805460019290611edf908490612ff3565b90915550506001600160a01b0382166000908152606860205260408120805460019290611f0d90849061300a565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610f495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610899565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361207b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610899565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b604080517fb0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d045602080830191909152308284015233606083015260808083018590528351808403909101815260a08301909352825192019190912061190160f01b60c08301527f000000000000000000000000000000000000000000000000000000000000000060c283015260e282015260009081906101020160405160208183030381529060405280519060200120905060006121dd86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506124349050565b9695505050505050565b6001600160a01b03821661223d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610899565b6000818152606760205260409020546001600160a01b0316156122a25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610899565b6001600160a01b03821660009081526068602052604081208054600192906122cb90849061300a565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff166123505760405162461bcd60e51b81526004016108999061328a565b61099b8282612450565b600054610100900460ff166123815760405162461bcd60e51b81526004016108999061328a565b610f4961249e565b6060816000036123b05750506040805180820190915260018152600360fc1b602082015290565b60408051604e8082526080820190925290602082018180368337019050509050604e5b82156123f257600a8084066030018284015290920491600019016123d3565b604e8190039101908152919050565b61240c848484611dd2565b612418848484846124ce565b6118dc5760405162461bcd60e51b8152600401610899906132d5565b600080600061244385856125cf565b91509150610d638161263a565b600054610100900460ff166124775760405162461bcd60e51b81526004016108999061328a565b815161248a906065906020850190612916565b50805161093a906066906020840190612916565b600054610100900460ff166124c55760405162461bcd60e51b81526004016108999061328a565b610f4933611fc8565b60006001600160a01b0384163b156125c457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612512903390899088908890600401613327565b6020604051808303816000875af192505050801561254d575060408051601f3d908101601f1916820190925261254a9181019061335a565b60015b6125aa573d80801561257b576040519150601f19603f3d011682016040523d82523d6000602084013e612580565b606091505b5080516000036125a25760405162461bcd60e51b8152600401610899906132d5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611dca565b506001949350505050565b60008082516041036126055760208301516040840151606085015160001a6125f9878285856127f0565b94509450505050610b11565b825160400361262e57602083015160408401516126238683836128dd565b935093505050610b11565b50600090506002610b11565b600081600481111561264e5761264e613143565b036126565750565b600181600481111561266a5761266a613143565b036126b75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610899565b60028160048111156126cb576126cb613143565b036127185760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610899565b600381600481111561272c5761272c613143565b036127845760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610899565b600481600481111561279857612798613143565b03611ab85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610899565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561282757506000905060036128d4565b8460ff16601b1415801561283f57508460ff16601c14155b1561285057506000905060046128d4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128a4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128cd576000600192509250506128d4565b9150600090505b94509492505050565b6000806001600160ff1b038316816128fa60ff86901c601b61300a565b9050612908878288856127f0565b935093505050935093915050565b82805461292290612fa9565b90600052602060002090601f016020900481019282612944576000855561298a565b82601f1061295d57805160ff191683800117855561298a565b8280016001018555821561298a579182015b8281111561298a57825182559160200191906001019061296f565b5061299692915061299a565b5090565b5b80821115612996576000815560010161299b565b6001600160e01b031981168114611ab857600080fd5b6000602082840312156129d757600080fd5b81356129e2816129af565b9392505050565b60005b83811015612a045781810151838201526020016129ec565b838111156118dc5750506000910152565b60008151808452612a2d8160208601602086016129e9565b601f01601f19169290920160200192915050565b6020815260006129e26020830184612a15565b600060208284031215612a6657600080fd5b5035919050565b6001600160a01b0381168114611ab857600080fd5b60008060408385031215612a9557600080fd5b8235612aa081612a6d565b946020939093013593505050565b600080600060608486031215612ac357600080fd5b8335612ace81612a6d565b92506020840135612ade81612a6d565b929592945050506040919091013590565b60008060408385031215612b0257600080fd5b50508035926020909101359150565b803563ffffffff81168114612b2557600080fd5b919050565b60008060408385031215612b3d57600080fd5b82359150612b4d60208401612b11565b90509250929050565b60008060208385031215612b6957600080fd5b823567ffffffffffffffff80821115612b8157600080fd5b818501915085601f830112612b9557600080fd5b813581811115612ba457600080fd5b8660208260051b8501011115612bb957600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015612c0c5783516001600160a01b031683529284019291840191600101612be7565b50909695505050505050565b60008060408385031215612c2b57600080fd5b823591506020830135612c3d81612a6d565b809150509250929050565b600060208284031215612c5a57600080fd5b81356129e281612a6d565b600080600080600080600080610100898b031215612c8257600080fd5b8835612c8d81612a6d565b975060208901359650612ca260408a01612b11565b9550612cb060608a01612b11565b9450612cbe60808a01612b11565b9350612ccc60a08a01612b11565b9250612cda60c08a01612b11565b915060e0890135612cea81612a6d565b809150509295985092959890939650565b60008060408385031215612d0e57600080fd5b8235612d1981612a6d565b915060208301358015158114612c3d57600080fd5b600080600060408486031215612d4357600080fd5b83359250602084013567ffffffffffffffff80821115612d6257600080fd5b818601915086601f830112612d7657600080fd5b813581811115612d8557600080fd5b876020828501011115612d9757600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612ddb57612ddb612daa565b604051601f8501601f19908116603f01168101908282118183101715612e0357612e03612daa565b81604052809350858152868686011115612e1c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612e4757600080fd5b6129e283833560208501612dc0565b600080600080600060a08688031215612e6e57600080fd5b8535612e7981612a6d565b945060208601359350604086013567ffffffffffffffff80821115612e9d57600080fd5b612ea989838a01612e36565b94506060880135915080821115612ebf57600080fd5b612ecb89838a01612e36565b93506080880135915080821115612ee157600080fd5b50612eee88828901612e36565b9150509295509295909350565b60008060008060808587031215612f1157600080fd5b8435612f1c81612a6d565b93506020850135612f2c81612a6d565b925060408501359150606085013567ffffffffffffffff811115612f4f57600080fd5b8501601f81018713612f6057600080fd5b612f6f87823560208401612dc0565b91505092959194509250565b60008060408385031215612f8e57600080fd5b8235612f9981612a6d565b91506020830135612c3d81612a6d565b600181811c90821680612fbd57607f821691505b6020821081036109e557634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561300557613005612fdd565b500390565b6000821982111561301d5761301d612fdd565b500190565b60006001820161303457613034612fdd565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008160001904831182151516156130a3576130a3612fdd565b500290565b6000826130c557634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff8083168185168083038211156130e9576130e9612fdd565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b6000835161311a8184602088016129e9565b83519083019061312e8183602088016129e9565b602f60f81b9101908152600101949350505050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061317b57634e487b7160e01b600052602160045260246000fd5b9281526020015290565b8054600090600181811c908083168061319f57607f831692505b602080841082036131c057634e487b7160e01b600052602260045260246000fd5b8180156131d457600181146131e557613212565b60ff19861689528489019650613212565b60008881526020902060005b8681101561320a5781548b8201529085019083016131f1565b505084890196505b50505050505092915050565b600061322a8286613185565b845161323a8183602089016129e9565b602f60f81b910190815283516132578160018401602088016129e9565b0160010195945050505050565b60006132708284613185565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906121dd90830184612a15565b60006020828403121561336c57600080fd5b81516129e2816129af56fea2646970667358221220c45af8bb7aa7a5d92c51681107f0c881d7fd260c590e8c87d5c5c0d17abe2d6764736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1EE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x6A3 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x701 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x581 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xABCCF3DD EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x5C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x50E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x52E JUMPI DUP1 PUSH4 0x73AAF879 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x185 JUMPI DUP1 PUSH4 0x52F5C2E4 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x155DD5EE GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x282 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x20E CALLDATASIZE PUSH1 0x4 PUSH2 0x29C5 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x76C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21F SWAP2 SWAP1 PUSH2 0x2A41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26A PUSH2 0x265 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0x2A82 JUMP JUMPDEST PUSH2 0x825 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0x93F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x99F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x302 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0x9EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38F PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP4 DIV DUP5 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND SWAP2 AND DUP10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH4 0xFFFFFFFF SWAP8 DUP9 AND SWAP1 DUP10 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP3 DUP6 AND PUSH1 0x80 DUP8 ADD MSTORE SWAP1 DUP5 AND PUSH1 0xA0 DUP7 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP6 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40D PUSH2 0x408 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AEF JUMP JUMPDEST PUSH2 0xA1C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2A JUMP JUMPDEST PUSH2 0xB4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A1 PUSH2 0x49C CALLDATASIZE PUSH1 0x4 PUSH2 0x2B56 JUMP JUMPDEST PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21F SWAP2 SWAP1 PUSH2 0x2BCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C18 JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x4E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0xE2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26A PUSH2 0x509 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0xE51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x529 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C48 JUMP JUMPDEST PUSH2 0xEB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0xF37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x2C65 JUMP JUMPDEST PUSH2 0xF4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x1354 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x5B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CFB JUMP JUMPDEST PUSH2 0x1363 JUMP JUMPDEST PUSH2 0x2A2 PUSH2 0x5C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x136E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E56 JUMP JUMPDEST PUSH2 0x1733 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x604 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EFB JUMP JUMPDEST PUSH2 0x18AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2A JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH2 0x1951 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x664 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x682 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D9 PUSH2 0x691 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x1A1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x6D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x71C CALLDATASIZE PUSH1 0x4 PUSH2 0x2C48 JUMP JUMPDEST PUSH2 0x1A42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x73C CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2A JUMP JUMPDEST PUSH2 0x1ABB JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x766 JUMPI POP PUSH2 0x766 DUP3 PUSH2 0x1B29 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x77B SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7A7 SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7F4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7C9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7F4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7D7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x809 DUP3 PUSH2 0x1B79 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x830 DUP3 PUSH2 0xE51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x8BE JUMPI POP PUSH2 0x8BE DUP2 CALLER PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x930 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x93A DUP4 DUP4 PUSH2 0x1BD8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x963 SWAP2 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x99B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x1C46 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x9D1 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x300A JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x9DD DUP2 PUSH2 0x3022 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x9A5 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9F5 CALLER DUP3 PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0xA11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x303B JUMP JUMPDEST PUSH2 0x93A DUP4 DUP4 DUP4 PUSH2 0x1DD2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA2A DUP6 PUSH2 0xE2F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x120 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH5 0x100000000 DUP2 DIV DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP7 AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP5 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0xAE2 JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xB11 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xAFF DUP4 DUP10 PUSH2 0x3089 JUMP JUMPDEST PUSH2 0xB09 SWAP2 SWAP1 PUSH2 0x30A8 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x93A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xB40 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB4A SWAP2 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB57 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xB82 SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH2 0x30CA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND LT PUSH2 0xBDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374206E6F7420657863656564207175616E746974790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP6 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCCF JUMPI PUSH2 0xCCF PUSH2 0x2DAA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xCF8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD63 JUMPI PUSH2 0xD27 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD1B JUMPI PUSH2 0xD1B PUSH2 0x30F2 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xE51 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD39 JUMPI PUSH2 0xD39 PUSH2 0x30F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0xD5B DUP2 PUSH2 0x3022 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCFE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xD73 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP5 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x766 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x766 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xF1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xF3F PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0xF49 PUSH1 0x0 PUSH2 0x1FC8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF53 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0xF5E DUP7 PUSH1 0x1 PUSH2 0x30CA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND LT PUSH2 0xFB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5065726D697373696F6E6564207175616E7469747920746F6F20626967000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x1058 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT PUSH2 0x10C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x1126 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1126 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x11AA PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE SWAP4 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP2 DUP5 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0xE0 DUP12 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP12 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP10 AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 DUP9 AND PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP8 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP2 DUP6 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x134A PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x77B SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST PUSH2 0x99B CALLER DUP4 DUP4 PUSH2 0x201A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV AND DUP5 PUSH2 0x13FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST DUP6 CALLVALUE LT ISZERO PUSH2 0x14C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x14F4 JUMPI POP DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND LT JUMPDEST PUSH2 0x1566 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x158C DUP10 DUP10 DUP13 PUSH2 0x20E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x161C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF PUSH1 0x1 DUP8 ADD AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP11 SWAP1 SHL OR PUSH2 0x165E PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x16A8 JUMPI PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x169D SWAP1 DUP5 SWAP1 PUSH2 0x300A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x16CA SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x16CA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x1C46 JUMP JUMPDEST PUSH2 0x16D4 CALLER DUP3 PUSH2 0x21E7 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP14 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1753 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x176D JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x176D JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x17D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x17F3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x17FD DUP5 DUP5 PUSH2 0x2329 JUMP JUMPDEST PUSH2 0x1805 PUSH2 0x235A JUMP JUMPDEST PUSH2 0x180E DUP7 PUSH2 0x1A42 JUMP JUMPDEST DUP2 PUSH2 0x1818 DUP7 PUSH2 0x2389 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1829 SWAP3 SWAP2 SWAP1 PUSH2 0x3108 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x184D SWAP3 SWAP2 SWAP1 PUSH2 0x2916 JUMP JUMPDEST POP PUSH2 0x185C PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x18A2 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18B4 CALLER DUP4 PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x303B JUMP JUMPDEST PUSH2 0x18DC DUP5 DUP5 DUP5 DUP5 PUSH2 0x2401 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x18EA PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0xE23 SWAP1 PUSH1 0x1 SWAP1 DUP7 SWAP1 PUSH2 0x3159 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19DB DUP4 PUSH2 0xE2F JUMP JUMPDEST SWAP1 POP PUSH1 0xC9 PUSH2 0x19E8 DUP3 PUSH2 0x2389 JUMP JUMPDEST PUSH2 0x19F1 DUP6 PUSH2 0x2389 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A03 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x321E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A2E SWAP2 SWAP1 PUSH2 0x3264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1A4A PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1AAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1AB8 DUP2 PUSH2 0x1FC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1AC3 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0xE23 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0x3159 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1B5A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x766 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x766 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1C0D DUP3 PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1C96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1CE3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x93A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D5F DUP4 PUSH2 0xE51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1DA6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x1DCA JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DBF DUP5 PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DE5 DUP3 PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1EB6 PUSH1 0x0 DUP3 PUSH2 0x1BD8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1EDF SWAP1 DUP5 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1F0D SWAP1 DUP5 SWAP1 PUSH2 0x300A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x207B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xB0B05FBA96C122A3DB5D352971BB77A4E982B43F6B3A779BEB0DCCE9D261D045 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP3 DUP5 ADD MSTORE CALLER PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP4 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xC0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xC2 DUP4 ADD MSTORE PUSH1 0xE2 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x102 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x21DD DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH2 0x2434 SWAP1 POP JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x223D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x22A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x22CB SWAP1 DUP5 SWAP1 PUSH2 0x300A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2350 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST PUSH2 0x99B DUP3 DUP3 PUSH2 0x2450 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST PUSH2 0xF49 PUSH2 0x249E JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x23B0 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4E DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x4E JUMPDEST DUP3 ISZERO PUSH2 0x23F2 JUMPI PUSH1 0xA DUP1 DUP5 MOD PUSH1 0x30 ADD DUP3 DUP5 ADD MSTORE SWAP1 SWAP3 DIV SWAP2 PUSH1 0x0 NOT ADD PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x4E DUP2 SWAP1 SUB SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x240C DUP5 DUP5 DUP5 PUSH2 0x1DD2 JUMP JUMPDEST PUSH2 0x2418 DUP5 DUP5 DUP5 DUP5 PUSH2 0x24CE JUMP JUMPDEST PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x32D5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2443 DUP6 DUP6 PUSH2 0x25CF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xD63 DUP2 PUSH2 0x263A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2477 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST DUP2 MLOAD PUSH2 0x248A SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2916 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x93A SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2916 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x24C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x328A JUMP JUMPDEST PUSH2 0xF49 CALLER PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x25C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x2512 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3327 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x254D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x254A SWAP2 DUP2 ADD SWAP1 PUSH2 0x335A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x25AA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x257B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2580 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x25A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x899 SWAP1 PUSH2 0x32D5 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x1DCA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x2605 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x25F9 DUP8 DUP3 DUP6 DUP6 PUSH2 0x27F0 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xB11 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x262E JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2623 DUP7 DUP4 DUP4 PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xB11 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xB11 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x264E JUMPI PUSH2 0x264E PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x2656 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x266A JUMPI PUSH2 0x266A PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x26B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x26CB JUMPI PUSH2 0x26CB PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x2718 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x272C JUMPI PUSH2 0x272C PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x2784 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2798 JUMPI PUSH2 0x2798 PUSH2 0x3143 JUMP JUMPDEST SUB PUSH2 0x1AB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x2827 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x28D4 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x283F JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2850 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x28CD JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x28D4 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x28FA PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x300A JUMP JUMPDEST SWAP1 POP PUSH2 0x2908 DUP8 DUP3 DUP9 DUP6 PUSH2 0x27F0 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2922 SWAP1 PUSH2 0x2FA9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2944 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x298A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x295D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x298A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x298A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x298A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x296F JUMP JUMPDEST POP PUSH2 0x2996 SWAP3 SWAP2 POP PUSH2 0x299A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2996 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x299B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E2 DUP2 PUSH2 0x29AF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x29EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x18DC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2A2D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x29E2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2AA0 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2ACE DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2ADE DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2B4D PUSH1 0x20 DUP5 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2BB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C0C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2BE7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2C3D DUP2 PUSH2 0x2A6D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E2 DUP2 PUSH2 0x2A6D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2C82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2C8D DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x2CA2 PUSH1 0x40 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP6 POP PUSH2 0x2CB0 PUSH1 0x60 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP5 POP PUSH2 0x2CBE PUSH1 0x80 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP4 POP PUSH2 0x2CCC PUSH1 0xA0 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP3 POP PUSH2 0x2CDA PUSH1 0xC0 DUP11 ADD PUSH2 0x2B11 JUMP JUMPDEST SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x2CEA DUP2 PUSH2 0x2A6D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2D19 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2D43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2D97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2DDB JUMPI PUSH2 0x2DDB PUSH2 0x2DAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2E03 JUMPI PUSH2 0x2E03 PUSH2 0x2DAA JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2E1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29E2 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2DC0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2E6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2E79 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2E9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EA9 DUP10 DUP4 DUP11 ADD PUSH2 0x2E36 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2EBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ECB DUP10 DUP4 DUP11 ADD PUSH2 0x2E36 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EEE DUP9 DUP3 DUP10 ADD PUSH2 0x2E36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2F11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2F1C DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2F2C DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x2F60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F6F DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2DC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2F99 DUP2 PUSH2 0x2A6D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2C3D DUP2 PUSH2 0x2A6D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2FBD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x9E5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3005 JUMPI PUSH2 0x3005 PUSH2 0x2FDD JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x301D JUMPI PUSH2 0x301D PUSH2 0x2FDD JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3034 JUMPI PUSH2 0x3034 PUSH2 0x2FDD JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x30A3 JUMPI PUSH2 0x30A3 PUSH2 0x2FDD JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30C5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x30E9 JUMPI PUSH2 0x30E9 PUSH2 0x2FDD JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x311A DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x29E9 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x312E DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x317B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x319F JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x31C0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x31D4 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x31E5 JUMPI PUSH2 0x3212 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x3212 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x320A JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x31F1 JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x322A DUP3 DUP7 PUSH2 0x3185 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x323A DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x29E9 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3257 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x29E9 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3270 DUP3 DUP5 PUSH2 0x3185 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x21DD SWAP1 DUP4 ADD DUP5 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x336C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29E2 DUP2 PUSH2 0x29AF JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 GAS 0xF8 0xBB PUSH27 0xA7A5D92C51681107F0C881D7FD260C590E8C87D5C5C0D17ABE2D67 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ",
              "sourceMap": "1465:15721:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14625:301;;;;;;;;;;-1:-1:-1;14625:301:38;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;14625:301:38;;;;;;;;2931:98:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;;;;;-1:-1:-1;4407:167:7;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:46;;;1674:51;;1662:2;1647:18;4407:167:7;1528:203:46;3928:418:7;;;;;;;;;;-1:-1:-1;3928:418:7;;;;;:::i;:::-;;:::i;:::-;;10492:546:38;;;;;;;;;;-1:-1:-1;10492:546:38;;;;;:::i;:::-;;:::i;14258:229::-;;;;;;;;;;;;;:::i;:::-;;;2338:25:46;;;2326:2;2311:18;14258:229:38;2192:177:46;5084:327:7;;;;;;;;;;-1:-1:-1;5084:327:7;;;;;:::i;:::-;;:::i;2929:43:38:-;;;;;;;;;;-1:-1:-1;2929:43:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2929:43:38;;;;;;;;;;;;;;;;;-1:-1:-1;;;2929:43:38;;;;;-1:-1:-1;;;2929:43:38;;;;;-1:-1:-1;;;2929:43:38;;;;;-1:-1:-1;;;2929:43:38;;;;;;;;;;;-1:-1:-1;;;;;3266:15:46;;;3248:34;;3313:2;3298:18;;3291:34;;;;3344:10;3390:15;;;3370:18;;;3363:43;3442:15;;;3437:2;3422:18;;3415:43;3495:15;;;3489:3;3474:19;;3467:44;3548:15;;;3228:3;3527:19;;3520:44;3601:15;;3595:3;3580:19;;3573:44;3654:15;;;3648:3;3633:19;;3626:44;3707:15;;;3701:3;3686:19;;3679:44;3197:3;3182:19;2929:43:38;2835:894:46;13637:547:38;;;;;;;;;;-1:-1:-1;13637:547:38;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4179:32:46;;;4161:51;;4243:2;4228:18;;4221:34;;;;4134:18;13637:547:38;3987:274:46;5477:179:7;;;;;;;;;;-1:-1:-1;5477:179:7;;;;;:::i;:::-;;:::i;14995:173:38:-;;;;;;;;;;;;;:::i;11993:623::-;;;;;;;;;;-1:-1:-1;11993:623:38;;;;;:::i;:::-;;:::i;15608:308::-;;;;;;;;;;-1:-1:-1;15608:308:38;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11619:306::-;;;;;;;;;;-1:-1:-1;11619:306:38;;;;;:::i;:::-;;:::i;15174:428::-;;;;;;;;;;-1:-1:-1;15174:428:38;;;;;:::i;:::-;;:::i;2651:218:7:-;;;;;;;;;;-1:-1:-1;2651:218:7;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;;;;;-1:-1:-1;2390:204:7;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;6212:1453:38:-;;;;;;;;;;-1:-1:-1;6212:1453:38;;;;;:::i;:::-;;:::i;1441:85:0:-;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;3093:102:7;;;;;;;;;;;;;:::i;4641:153::-;;;;;;;;;;-1:-1:-1;4641:153:7;;;;;:::i;:::-;;:::i;7900:2586:38:-;;;;;;:::i;:::-;;:::i;5004:578::-;;;;;;;;;;-1:-1:-1;5004:578:38;;;;;:::i;:::-;;:::i;5722:315:7:-;;;;;;;;;;-1:-1:-1;5722:315:7;;;;;:::i;:::-;;:::i;11359:197:38:-;;;;;;;;;;-1:-1:-1;11359:197:38;;;;;:::i;:::-;;:::i;12920:329::-;;;;;;;;;;-1:-1:-1;12920:329:38;;;;;:::i;:::-;;:::i;3310:54::-;;;;;;;;;;-1:-1:-1;3310:54:38;;;;;:::i;:::-;;;;;;;;;;;;;;3169;;;;;;;;;;-1:-1:-1;3169:54:38;;;;;:::i;:::-;;;;;;;;;;;;;;13367:130;;;;;;;;;;;;;:::i;4860:162:7:-;;;;;;;;;;-1:-1:-1;4860:162:7;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;2321:198:0;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;11095:209:38:-;;;;;;;;;;-1:-1:-1;11095:209:38;;;;;:::i;:::-;;:::i;14625:301::-;14774:4;-1:-1:-1;;;;;;;;;14813:53:38;;;;:106;;;14870:49;14906:12;14870:35;:49::i;:::-;14794:125;14625:301;-1:-1:-1;;14625:301:38:o;2931:98:7:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;12194:2:46;4068:57:7;;;12176:21:46;12233:2;12213:18;;;12206:30;12272:34;12252:18;;;12245:62;-1:-1:-1;;;12323:18:46;;;12316:31;12364:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;12596:2:46;4136:171:7;;;12578:21:46;12635:2;12615:18;;;12608:30;12674:34;12654:18;;;12647:62;12745:32;12725:18;;;12718:60;12795:19;;4136:171:7;12394:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;10492:546:38:-;10629:27;10693:31;;;:19;:31;;;;;;;;;10659:19;:31;;;;;;:65;;10693:31;10659:65;:::i;:::-;10830:31;;;;:19;:31;;;;;;;;;10796:19;:31;;;;;:65;10972:8;:20;;;;;:37;10629:95;;-1:-1:-1;10961:70:38;;-1:-1:-1;;;;;10972:37:38;10629:95;10961:10;:70::i;:::-;10544:494;10492:546;:::o;14258:229::-;14304:7;;14368:1;14350:109;14376:11;929:14:13;14371:2:38;:26;14350:109;;;14428:12;;;;:8;:12;;;;;:20;;;14419:29;;14428:20;;14419:29;;:::i;:::-;;-1:-1:-1;14399:4:38;;;;:::i;:::-;;;;14350:109;;;-1:-1:-1;14475:5:38;14258:229;-1:-1:-1;14258:229:38:o;5084:327:7:-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;13637:547:38:-;13760:24;13786:21;13823:17;13843:24;13858:8;13843:14;:24::i;:::-;13877:22;13902:19;;;:8;:19;;;;;;;;;13877:44;;;;;;;;;-1:-1:-1;;;;;13877:44:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13877:44:38;;;;;;;;-1:-1:-1;;;13877:44:38;;;;;;;;-1:-1:-1;;;13877:44:38;;;;;;;;-1:-1:-1;;;13877:44:38;;;;;;;;;;;;;;;;;;;;;13823;;-1:-1:-1;13877:44:38;13932:107;;14000:24;;-1:-1:-1;14000:24:38;;-1:-1:-1;13992:36:38;;-1:-1:-1;13992:36:38;13932:107;14078:18;;;;14116:24;;14070:27;;;;;14170:6;14143:23;14070:27;14143:10;:23;:::i;:::-;14142:34;;;;:::i;:::-;14108:69;;;;;;;13637:547;;;;;;:::o;5477:179:7:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;14995:173:38:-;15042:7;15092:1;15068:21;:11;929:14:13;;838:112;15068:21:38;:25;;;;:::i;:::-;15061:32;;14995:173;:::o;11993:623::-;1334:13:0;:11;:13::i;:::-;12217:20:38::1;::::0;;;:8:::1;:20;::::0;;;;:29:::1;;::::0;:33:::1;::::0;:29;;::::1;;;12249:1;12217:33;:::i;:::-;12193:57;;:21;:57;;;12185:94;;;::::0;-1:-1:-1;;;12185:94:38;;14605:2:46;12185:94:38::1;::::0;::::1;14587:21:46::0;14644:2;14624:18;;;14617:30;14683:26;14663:18;;;14656:54;14727:18;;12185:94:38::1;14403:348:46::0;12185:94:38::1;12427:1;12381:20:::0;;;:8:::1;:20;::::0;;;;:34:::1;;::::0;-1:-1:-1;;;;;12381:34:38::1;12373:87;;;::::0;-1:-1:-1;;;12373:87:38;;14958:2:46;12373:87:38::1;::::0;::::1;14940:21:46::0;14997:2;14977:18;;;14970:30;15036:28;15016:18;;;15009:56;15082:18;;12373:87:38::1;14756:350:46::0;12373:87:38::1;12471:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:41:::1;;:65:::0;;-1:-1:-1;;;;12471:65:38::1;-1:-1:-1::0;;;12471:65:38::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12551:58;;15283:25:46;;;15324:18;;;15317:51;12551:58:38::1;::::0;15256:18:46;12551:58:38::1;;;;;;;11993:623:::0;;:::o;15608:308::-;15687:16;15715:23;15755:9;15741:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15741:31:38;;15715:57;;15787:9;15782:105;15802:20;;;15782:105;;;15855:21;15863:9;;15873:1;15863:12;;;;;;;:::i;:::-;;;;;;;15855:7;:21::i;:::-;15843:6;15850:1;15843:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15843:33:38;;;:9;;;;;;;;;;;:33;15824:3;;;;:::i;:::-;;;;15782:105;;;-1:-1:-1;15903:6:38;15608:308;-1:-1:-1;;;15608:308:38:o;11619:306::-;1334:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;11729:31:38;::::1;11721:70;;;::::0;-1:-1:-1;;;11721:70:38;;15713:2:46;11721:70:38::1;::::0;::::1;15695:21:46::0;15752:2;15732:18;;;15725:30;15791:28;15771:18;;;15764:56;15837:18;;11721:70:38::1;15511:350:46::0;11721:70:38::1;11802:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:34:::1;;:54:::0;;-1:-1:-1;;;;;;11802:54:38::1;-1:-1:-1::0;;;;;11802:54:38;::::1;::::0;;::::1;::::0;;;11871:47;;2338:25:46;;;11871:47:38::1;::::0;2311:18:46;11871:47:38::1;;;;;;;;11619:306:::0;;:::o;15174:428::-;15237:7;15352:3;15340:15;;;15453:14;;;15449:120;;-1:-1:-1;;15533:25:38;;;;:15;:25;;;;;;;15174:428::o;2651:218:7:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;16068:2:46;2784:56:7;;;16050:21:46;16107:2;16087:18;;;16080:30;-1:-1:-1;;;16126:18:46;;;16119:54;16190:18;;2784:56:7;15866:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;16421:2:46;2481:73:7;;;16403:21:46;16460:2;16440:18;;;16433:30;16499:34;16479:18;;;16472:62;-1:-1:-1;;;16550:18:46;;;16543:39;16599:19;;2481:73:7;16219:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;6212:1453:38:-;1334:13:0;:11;:13::i;:::-;6545::38::1;:9:::0;6557:1:::1;6545:13;:::i;:::-;6521:37;;:21;:37;;;6513:79;;;::::0;-1:-1:-1;;;6513:79:38;;16831:2:46;6513:79:38::1;::::0;::::1;16813:21:46::0;16870:2;16850:18;;;16843:30;16909:31;16889:18;;;16882:59;16958:18;;6513:79:38::1;16629:353:46::0;6513:79:38::1;6622:1;6610:9;:13;;;6602:43;;;::::0;-1:-1:-1;;;6602:43:38;;17189:2:46;6602:43:38::1;::::0;::::1;17171:21:46::0;17228:2;17208:18;;;17201:30;-1:-1:-1;;;17247:18:46;;;17240:47;17304:18;;6602:43:38::1;16987:341:46::0;6602:43:38::1;-1:-1:-1::0;;;;;6663:31:38;::::1;6655:69;;;::::0;-1:-1:-1;;;6655:69:38;;17535:2:46;6655:69:38::1;::::0;::::1;17517:21:46::0;17574:2;17554:18;;;17547:30;17613:27;17593:18;;;17586:55;17658:18;;6655:69:38::1;17333:349:46::0;6655:69:38::1;6753:10;6742:21;;:8;:21;;;6734:74;;;::::0;-1:-1:-1;;;6734:74:38;;17889:2:46;6734:74:38::1;::::0;::::1;17871:21:46::0;17928:2;17908:18;;;17901:30;17967:34;17947:18;;;17940:62;-1:-1:-1;;;18018:18:46;;;18011:38;18066:19;;6734:74:38::1;17687:404:46::0;6734:74:38::1;6823:25;::::0;::::1;::::0;6819:123:::1;;-1:-1:-1::0;;;;;6872:28:38;::::1;6864:67;;;::::0;-1:-1:-1;;;6864:67:38;;15713:2:46;6864:67:38::1;::::0;::::1;15695:21:46::0;15752:2;15732:18;;;15725:30;15791:28;15771:18;;;15764:56;15837:18;;6864:67:38::1;15511:350:46::0;6864:67:38::1;6986:355;;;;;;;;7026:17;-1:-1:-1::0;;;;;6986:355:38::1;;;;;7064:6;6986:355;;;;7093:1;6986:355;;;;;;7118:9;6986:355;;;;;;7153:11;6986:355;;;;;;7189:10;6986:355;;;;;;7222:8;6986:355;;;;;;7266:21;6986:355;;;;;;7316:14;-1:-1:-1::0;;;;;6986:355:38::1;;;::::0;6952:8:::1;:31;6961:21;:11;929:14:13::0;;838:112;6961:21:38::1;6952:31:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;6952:31:38;:389;;;;-1:-1:-1;;;;;;6952:389:38;;::::1;-1:-1:-1::0;;;;;6952:389:38;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;6952:389:38;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;6952:389:38;;;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;6952:389:38;-1:-1:-1;;;6952:389:38;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;6952:389:38;;;;;-1:-1:-1;;;6952:389:38;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;6952:389:38;-1:-1:-1;;;6952:389:38;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;6952:389:38;;-1:-1:-1;;;6952:389:38;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;7385:11:::1;929:14:13::0;7357:267:38::1;::::0;;-1:-1:-1;;;;;18493:15:46;;;18475:34;;18540:2;18525:18;;18518:34;;;18571:10;18617:15;;;18597:18;;;18590:43;;;;18669:15;;;18664:2;18649:18;;18642:43;18722:15;;;18716:3;18701:19;;18694:44;18775:15;;;18455:3;18754:19;;18747:44;18828:15;;;18822:3;18807:19;;18800:44;18881:15;;;18875:3;18860:19;;18853:44;7357:267:38::1;::::0;18424:3:46;18409:19;7357:267:38::1;;;;;;;7635:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;7635:23:38::1;6212:1453:::0;;;;;;;;:::o;3093:102:7:-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;7900:2586:38:-;8047:13;8063:20;;;:8;:20;;;;;:26;;;;8117:29;;;;;;;;;;;;8173:28;;;;-1:-1:-1;;;8230:30:38;;;;;-1:-1:-1;;;8287:28:38;;;;;-1:-1:-1;;;8355:41:38;;;;8559:12;8551:47;;;;-1:-1:-1;;;8551:47:38;;19110:2:46;8551:47:38;;;19092:21:46;19149:2;19129:18;;;19122:30;-1:-1:-1;;;19168:18:46;;;19161:52;19230:18;;8551:47:38;18908:346:46;8551:47:38;8694:8;8684:18;;:7;:18;;;8676:64;;;;-1:-1:-1;;;8676:64:38;;19461:2:46;8676:64:38;;;19443:21:46;19500:2;19480:18;;;19473:30;19539:34;19519:18;;;19512:62;-1:-1:-1;;;19590:18:46;;;19583:31;19631:19;;8676:64:38;19259:397:46;8676:64:38;8834:5;8821:9;:18;;8813:72;;;;-1:-1:-1;;;8813:72:38;;19863:2:46;8813:72:38;;;19845:21:46;19902:2;19882:18;;;19875:30;19941:34;19921:18;;;19914:62;-1:-1:-1;;;19992:18:46;;;19985:39;20041:19;;8813:72:38;19661:405:46;8813:72:38;8961:15;8949:9;:27;;;8945:463;;;9106:1;9083:20;:24;;;:58;;;;;9121:20;9111:30;;:7;:30;;;9083:58;9058:176;;;;-1:-1:-1;;;9058:176:38;;20273:2:46;9058:176:38;;;20255:21:46;20312:2;20292:18;;;20285:30;20351:34;20331:18;;;20324:62;20422:29;20402:18;;;20395:57;20469:19;;9058:176:38;20071:423:46;9058:176:38;9344:20;;;;:8;:20;;;;;:34;;;-1:-1:-1;;;;;9344:34:38;9307:33;9317:10;;9353;9307:9;:33::i;:::-;-1:-1:-1;;;;;9307:71:38;;9299:98;;;;-1:-1:-1;;;9299:98:38;;20701:2:46;9299:98:38;;;20683:21:46;20740:2;20720:18;;;20713:30;-1:-1:-1;;;20759:18:46;;;20752:44;20813:18;;9299:98:38;20499:338:46;9299:98:38;9488:15;9478:7;:25;;;9470:55;;;;-1:-1:-1;;;9470:55:38;;21044:2:46;9470:55:38;;;21026:21:46;21083:2;21063:18;;;21056:30;-1:-1:-1;;;21102:18:46;;;21095:47;21159:18;;9470:55:38;20842:341:46;9470:55:38;9604:15;9781:20;;;:8;:20;;;;;:28;;:42;;-1:-1:-1;;9781:42:38;9663:35;9696:1;9686:11;;9663:35;9781:42;;;;;;9678:3;9664:17;;;9663:35;10004:7;1513:6:0;;-1:-1:-1;;;;;1513:6:0;;1441:85;10004:7:38;9963:20;;;;:8;:20;;;;;:37;-1:-1:-1;;;;;9963:48:38;;;:37;;:48;9959:324;;10085:31;;;;:19;:31;;;;;:44;;10120:9;;10085:31;:44;;10120:9;;10085:44;:::i;:::-;;;;-1:-1:-1;9959:324:38;;-1:-1:-1;9959:324:38;;10223:20;;;;:8;:20;;;;;:37;10212:60;;-1:-1:-1;;;;;10223:37:38;10262:9;10212:10;:60::i;:::-;10358:26;10364:10;10376:7;10358:5;:26::i;:::-;10438:20;;;;:8;:20;;;;;;;;;:28;;;10400:79;;10438:28;;;;21332:42:46;;10468:10:38;;10429:7;;10438:20;;10400:79;;21305:18:46;10400:79:38;;;;;;;7984:2502;;;;;;;7900:2586;;;:::o;5004:578::-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;21587:2:46;3157:201:5;;;21569:21:46;21626:2;21606:18;;;21599:30;21665:34;21645:18;;;21638:62;-1:-1:-1;;;21716:18:46;;;21709:44;21770:19;;3157:201:5;21385:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;5202:29:38::1;5216:5;5223:7;5202:13;:29::i;:::-;5241:16;:14;:16::i;:::-;5329:25;5347:6;5329:17;:25::i;:::-;5458:8;5468:20;:9;:18;:20::i;:::-;5441:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5424:7;:71;;;;;;;;;;;;:::i;:::-;;5552:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;5552:23:38::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;22590:36:46;;3553:14:5;;22578:2:46;22563:18;3553:14:5;;;;;;;3479:99;3101:483;5004:578:38;;;;;:::o;5722:315:7:-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;11359:197:38:-;1334:13:0;:11;:13::i;:::-;11445:20:38::1;::::0;;;:8:::1;:20;::::0;;;;;;:28:::1;;:39:::0;;-1:-1:-1;;;;11445:39:38::1;-1:-1:-1::0;;;11445:39:38::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;11499:50;;::::1;::::0;::::1;::::0;-1:-1:-1;;11445:20:38;;11499:50:::1;:::i;12920:329::-:0;7571:4:7;7594:16;;;:7;:16;;;;;;12986:13:38;;-1:-1:-1;;;;;7594:16:7;13011:77:38;;;;-1:-1:-1;;;13011:77:38;;23388:2:46;13011:77:38;;;23370:21:46;23427:2;23407:18;;;23400:30;23466:34;23446:18;;;23439:62;-1:-1:-1;;;23517:18:46;;;23510:45;23572:19;;13011:77:38;23186:411:46;13011:77:38;13099:17;13119:24;13134:8;13119:14;:24::i;:::-;13099:44;;13185:7;13194:20;:9;:18;:20::i;:::-;13221:19;:8;:17;:19::i;:::-;13168:73;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13154:88;;;12920:329;;;:::o;13367:130::-;13411:13;13467:7;13450:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;13436:54;;13367:130;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;25993:2:46;2401:73:0::1;::::0;::::1;25975:21:46::0;26032:2;26012:18;;;26005:30;26071:34;26051:18;;;26044:62;-1:-1:-1;;;26122:18:46;;;26115:36;26168:19;;2401:73:0::1;25791:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;11095:209:38:-;1334:13:0;:11;:13::i;:::-;11185:20:38::1;::::0;;;:8:::1;:20;::::0;;;;;:30:::1;;:43:::0;;-1:-1:-1;;;;11185:43:38::1;-1:-1:-1::0;;;11185:43:38::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;11243:54;;11185:43;;11243:54:::1;::::0;::::1;::::0;11185:20;;;11243:54:::1;:::i;1987:344:7:-:0;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;1060:166:17;12173:133:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;16068:2:46;12246:53:7;;;16050:21:46;16107:2;16087:18;;;16080:30;-1:-1:-1;;;16126:18:46;;;16119:54;16190:18;;12246:53:7;15866:348:46;11464:182:7;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;16178:308:38:-;16294:7;16269:21;:32;;16261:74;;;;-1:-1:-1;;;16261:74:38;;26400:2:46;16261:74:38;;;26382:21:46;26439:2;26419:18;;;26412:30;26478:31;26458:18;;;26451:59;26527:18;;16261:74:38;26198:353:46;16261:74:38;16347:12;16365:10;-1:-1:-1;;;;;16365:15:38;16388:7;16365:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16346:54;;;16418:7;16410:69;;;;-1:-1:-1;;;16410:69:38;;26968:2:46;16410:69:38;;;26950:21:46;27007:2;26987:18;;;26980:30;27046:34;27026:18;;;27019:62;-1:-1:-1;;;27097:18:46;;;27090:47;27154:19;;16410:69:38;26766:413:46;7789:272:7;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;27386:2:46;10855:92:7;;;27368:21:46;27425:2;27405:18;;;27398:30;27464:34;27444:18;;;27437:62;-1:-1:-1;;;27515:18:46;;;27508:35;27560:19;;10855:92:7;27184:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;27792:2:46;10957:65:7;;;27774:21:46;27831:2;27811:18;;;27804:30;27870:34;27850:18;;;27843:62;-1:-1:-1;;;27921:18:46;;;27914:34;27965:19;;10957:65:7;27590:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;28197:2:46;1654:68:0;;;28179:21:46;;;28216:18;;;28209:30;28275:34;28255:18;;;28248:62;28327:18;;1654:68:0;27995:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;11782:307:7:-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;28558:2:46;11915:55:7;;;28540:21:46;28597:2;28577:18;;;28570:30;28636:27;28616:18;;;28609:55;28681:18;;11915:55:7;28356:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;16726:458:38:-;16979:77;;;3504:88;16979:77;;;;28941:25:46;;;;17026:4:38;29020:18:46;;;29013:43;17033:10:38;29072:18:46;;;29065:43;29124:18;;;;29117:34;;;16979:77:38;;;;;;;;;;28913:19:46;;;16979:77:38;;;16969:88;;;;;;;;-1:-1:-1;;;16873:198:38;;;29420:27:46;16935:16:38;29463:11:46;;;29456:27;29499:12;;;29492:28;-1:-1:-1;;;;29536:12:46;;16873:198:38;;;;;;;;;;;;16850:231;;;;;;16833:248;;17091:24;17118:26;17133:10;;17118:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17118:6:38;;:26;-1:-1:-1;;17118:14:38;:26;-1:-1:-1;17118:26:38:i;:::-;17091:53;16726:458;-1:-1:-1;;;;;;16726:458:38:o;9351:427:7:-;-1:-1:-1;;;;;9430:16:7;;9422:61;;;;-1:-1:-1;;;9422:61:7;;29761:2:46;9422:61:7;;;29743:21:46;;;29780:18;;;29773:30;29839:34;29819:18;;;29812:62;29891:18;;9422:61:7;29559:356:46;9422:61:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;:30;9493:58;;;;-1:-1:-1;;;9493:58:7;;30122:2:46;9493:58:7;;;30104:21:46;30161:2;30141:18;;;30134:30;30200;30180:18;;;30173:58;30248:18;;9493:58:7;29920:352:46;9493:58:7;-1:-1:-1;;;;;9618:13:7;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:7;-1:-1:-1;;;;;9646:21:7;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;10544:494:38;10492:546;:::o;1605:149:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1708:39:7::1;1732:5;1739:7;1708:23;:39::i;1003:95:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;346:816:45:-:0;398:18;432:1;437;432:6;428:47;;-1:-1:-1;;454:10:45;;;;;;;;;;;;-1:-1:-1;;;454:10:45;;;;;346:816::o;428:47::-;522:37;;;145:2;522:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;515:44:45;-1:-1:-1;145:2:45;676:233;683:6;;676:233;;775:2;768:10;;;748:18;744:35;803:12;;;796:26;875:10;;;;-1:-1:-1;;844:9:45;676:233;;;1095:25;1091:33;;;1010:12;;1078:47;;;1010:12;346:816;-1:-1:-1;346:816:45:o;6898:305:7:-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;4402:227:31:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;1760:160:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1873:13:7;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1896:17:7;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;1104:111:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;12858:853:7:-:0;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;12858:853;;;;;;:::o;2243:1373:31:-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:31;;-1:-1:-1;3563:35:31;3543:56;;548:631;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;766:34;;-1:-1:-1;;;766:34:31;;32058:2:46;766:34:31;;;32040:21:46;32097:2;32077:18;;;32070:30;32136:26;32116:18;;;32109:54;32180:18;;766:34:31;31856:348:46;708:465:31;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;881:41;;-1:-1:-1;;;881:41:31;;32411:2:46;881:41:31;;;32393:21:46;32450:2;32430:18;;;32423:30;32489:33;32469:18;;;32462:61;32540:18;;881:41:31;32209:355:46;817:356:31;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;998:44;;-1:-1:-1;;;998:44:31;;32771:2:46;998:44:31;;;32753:21:46;32810:2;32790:18;;;32783:30;32849:34;32829:18;;;32822:62;-1:-1:-1;;;32900:18:46;;;32893:32;32942:19;;998:44:31;32569:398:46;939:234:31;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;1118:44;;-1:-1:-1;;;1118:44:31;;33174:2:46;1118:44:31;;;33156:21:46;33213:2;33193:18;;;33186:30;33252:34;33232:18;;;33225:62;-1:-1:-1;;;33303:18:46;;;33296:32;33345:19;;1118:44:31;32972:398:46;5810:1603:31;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:31;;-1:-1:-1;6962:30:31;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:31;;-1:-1:-1;7071:30:31;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;33602:25:46;;;33675:4;33663:17;;33643:18;;;33636:45;;;;33697:18;;;33690:34;;;33740:18;;;33733:34;;;7224:24:31;;33574:19:46;;7224:24:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:31;;-1:-1:-1;;7224:24:31;;;-1:-1:-1;;;;;;;7262:20:31;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:31;;-1:-1:-1;5810:1603:31;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:31;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:46;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:46:o;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:46;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:46;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:46:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:46;;1343:180;-1:-1:-1;1343:180:46:o;1736:131::-;-1:-1:-1;;;;;1811:31:46;;1801:42;;1791:70;;1857:1;1854;1847:12;1872:315;1940:6;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2056:9;2043:23;2075:31;2100:5;2075:31;:::i;:::-;2125:5;2177:2;2162:18;;;;2149:32;;-1:-1:-1;;;1872:315:46:o;2374:456::-;2451:6;2459;2467;2520:2;2508:9;2499:7;2495:23;2491:32;2488:52;;;2536:1;2533;2526:12;2488:52;2575:9;2562:23;2594:31;2619:5;2594:31;:::i;:::-;2644:5;-1:-1:-1;2701:2:46;2686:18;;2673:32;2714:33;2673:32;2714:33;:::i;:::-;2374:456;;2766:7;;-1:-1:-1;;;2820:2:46;2805:18;;;;2792:32;;2374:456::o;3734:248::-;3802:6;3810;3863:2;3851:9;3842:7;3838:23;3834:32;3831:52;;;3879:1;3876;3869:12;3831:52;-1:-1:-1;;3902:23:46;;;3972:2;3957:18;;;3944:32;;-1:-1:-1;3734:248:46:o;4266:163::-;4333:20;;4393:10;4382:22;;4372:33;;4362:61;;4419:1;4416;4409:12;4362:61;4266:163;;;:::o;4434:252::-;4501:6;4509;4562:2;4550:9;4541:7;4537:23;4533:32;4530:52;;;4578:1;4575;4568:12;4530:52;4614:9;4601:23;4591:33;;4643:37;4676:2;4665:9;4661:18;4643:37;:::i;:::-;4633:47;;4434:252;;;;;:::o;4691:615::-;4777:6;4785;4838:2;4826:9;4817:7;4813:23;4809:32;4806:52;;;4854:1;4851;4844:12;4806:52;4894:9;4881:23;4923:18;4964:2;4956:6;4953:14;4950:34;;;4980:1;4977;4970:12;4950:34;5018:6;5007:9;5003:22;4993:32;;5063:7;5056:4;5052:2;5048:13;5044:27;5034:55;;5085:1;5082;5075:12;5034:55;5125:2;5112:16;5151:2;5143:6;5140:14;5137:34;;;5167:1;5164;5157:12;5137:34;5220:7;5215:2;5205:6;5202:1;5198:14;5194:2;5190:23;5186:32;5183:45;5180:65;;;5241:1;5238;5231:12;5180:65;5272:2;5264:11;;;;;5294:6;;-1:-1:-1;4691:615:46;;-1:-1:-1;;;;4691:615:46:o;5311:658::-;5482:2;5534:21;;;5604:13;;5507:18;;;5626:22;;;5453:4;;5482:2;5705:15;;;;5679:2;5664:18;;;5453:4;5748:195;5762:6;5759:1;5756:13;5748:195;;;5827:13;;-1:-1:-1;;;;;5823:39:46;5811:52;;5918:15;;;;5883:12;;;;5859:1;5777:9;5748:195;;;-1:-1:-1;5960:3:46;;5311:658;-1:-1:-1;;;;;;5311:658:46:o;5974:315::-;6042:6;6050;6103:2;6091:9;6082:7;6078:23;6074:32;6071:52;;;6119:1;6116;6109:12;6071:52;6155:9;6142:23;6132:33;;6215:2;6204:9;6200:18;6187:32;6228:31;6253:5;6228:31;:::i;:::-;6278:5;6268:15;;;5974:315;;;;;:::o;6294:247::-;6353:6;6406:2;6394:9;6385:7;6381:23;6377:32;6374:52;;;6422:1;6419;6412:12;6374:52;6461:9;6448:23;6480:31;6505:5;6480:31;:::i;6546:829::-;6671:6;6679;6687;6695;6703;6711;6719;6727;6780:3;6768:9;6759:7;6755:23;6751:33;6748:53;;;6797:1;6794;6787:12;6748:53;6836:9;6823:23;6855:31;6880:5;6855:31;:::i;:::-;6905:5;-1:-1:-1;6957:2:46;6942:18;;6929:32;;-1:-1:-1;6980:37:46;7013:2;6998:18;;6980:37;:::i;:::-;6970:47;;7036:37;7069:2;7058:9;7054:18;7036:37;:::i;:::-;7026:47;;7092:38;7125:3;7114:9;7110:19;7092:38;:::i;:::-;7082:48;;7149:38;7182:3;7171:9;7167:19;7149:38;:::i;:::-;7139:48;;7206:38;7239:3;7228:9;7224:19;7206:38;:::i;:::-;7196:48;;7296:3;7285:9;7281:19;7268:33;7310;7335:7;7310:33;:::i;:::-;7362:7;7352:17;;;6546:829;;;;;;;;;;;:::o;7380:416::-;7445:6;7453;7506:2;7494:9;7485:7;7481:23;7477:32;7474:52;;;7522:1;7519;7512:12;7474:52;7561:9;7548:23;7580:31;7605:5;7580:31;:::i;:::-;7630:5;-1:-1:-1;7687:2:46;7672:18;;7659:32;7729:15;;7722:23;7710:36;;7700:64;;7760:1;7757;7750:12;7801:659;7880:6;7888;7896;7949:2;7937:9;7928:7;7924:23;7920:32;7917:52;;;7965:1;7962;7955:12;7917:52;8001:9;7988:23;7978:33;;8062:2;8051:9;8047:18;8034:32;8085:18;8126:2;8118:6;8115:14;8112:34;;;8142:1;8139;8132:12;8112:34;8180:6;8169:9;8165:22;8155:32;;8225:7;8218:4;8214:2;8210:13;8206:27;8196:55;;8247:1;8244;8237:12;8196:55;8287:2;8274:16;8313:2;8305:6;8302:14;8299:34;;;8329:1;8326;8319:12;8299:34;8374:7;8369:2;8360:6;8356:2;8352:15;8348:24;8345:37;8342:57;;;8395:1;8392;8385:12;8342:57;8426:2;8422;8418:11;8408:21;;8448:6;8438:16;;;;;7801:659;;;;;:::o;8465:127::-;8526:10;8521:3;8517:20;8514:1;8507:31;8557:4;8554:1;8547:15;8581:4;8578:1;8571:15;8597:632;8662:5;8692:18;8733:2;8725:6;8722:14;8719:40;;;8739:18;;:::i;:::-;8814:2;8808:9;8782:2;8868:15;;-1:-1:-1;;8864:24:46;;;8890:2;8860:33;8856:42;8844:55;;;8914:18;;;8934:22;;;8911:46;8908:72;;;8960:18;;:::i;:::-;9000:10;8996:2;8989:22;9029:6;9020:15;;9059:6;9051;9044:22;9099:3;9090:6;9085:3;9081:16;9078:25;9075:45;;;9116:1;9113;9106:12;9075:45;9166:6;9161:3;9154:4;9146:6;9142:17;9129:44;9221:1;9214:4;9205:6;9197;9193:19;9189:30;9182:41;;;;8597:632;;;;;:::o;9234:222::-;9277:5;9330:3;9323:4;9315:6;9311:17;9307:27;9297:55;;9348:1;9345;9338:12;9297:55;9370:80;9446:3;9437:6;9424:20;9417:4;9409:6;9405:17;9370:80;:::i;9461:948::-;9586:6;9594;9602;9610;9618;9671:3;9659:9;9650:7;9646:23;9642:33;9639:53;;;9688:1;9685;9678:12;9639:53;9727:9;9714:23;9746:31;9771:5;9746:31;:::i;:::-;9796:5;-1:-1:-1;9848:2:46;9833:18;;9820:32;;-1:-1:-1;9903:2:46;9888:18;;9875:32;9926:18;9956:14;;;9953:34;;;9983:1;9980;9973:12;9953:34;10006:50;10048:7;10039:6;10028:9;10024:22;10006:50;:::i;:::-;9996:60;;10109:2;10098:9;10094:18;10081:32;10065:48;;10138:2;10128:8;10125:16;10122:36;;;10154:1;10151;10144:12;10122:36;10177:52;10221:7;10210:8;10199:9;10195:24;10177:52;:::i;:::-;10167:62;;10282:3;10271:9;10267:19;10254:33;10238:49;;10312:2;10302:8;10299:16;10296:36;;;10328:1;10325;10318:12;10296:36;;10351:52;10395:7;10384:8;10373:9;10369:24;10351:52;:::i;:::-;10341:62;;;9461:948;;;;;;;;:::o;10414:795::-;10509:6;10517;10525;10533;10586:3;10574:9;10565:7;10561:23;10557:33;10554:53;;;10603:1;10600;10593:12;10554:53;10642:9;10629:23;10661:31;10686:5;10661:31;:::i;:::-;10711:5;-1:-1:-1;10768:2:46;10753:18;;10740:32;10781:33;10740:32;10781:33;:::i;:::-;10833:7;-1:-1:-1;10887:2:46;10872:18;;10859:32;;-1:-1:-1;10942:2:46;10927:18;;10914:32;10969:18;10958:30;;10955:50;;;11001:1;10998;10991:12;10955:50;11024:22;;11077:4;11069:13;;11065:27;-1:-1:-1;11055:55:46;;11106:1;11103;11096:12;11055:55;11129:74;11195:7;11190:2;11177:16;11172:2;11168;11164:11;11129:74;:::i;:::-;11119:84;;;10414:795;;;;;;;:::o;11214:388::-;11282:6;11290;11343:2;11331:9;11322:7;11318:23;11314:32;11311:52;;;11359:1;11356;11349:12;11311:52;11398:9;11385:23;11417:31;11442:5;11417:31;:::i;:::-;11467:5;-1:-1:-1;11524:2:46;11509:18;;11496:32;11537:33;11496:32;11537:33;:::i;11607:380::-;11686:1;11682:12;;;;11729;;;11750:61;;11804:4;11796:6;11792:17;11782:27;;11750:61;11857:2;11849:6;11846:14;11826:18;11823:38;11820:161;;11903:10;11898:3;11894:20;11891:1;11884:31;11938:4;11935:1;11928:15;11966:4;11963:1;11956:15;12825:127;12886:10;12881:3;12877:20;12874:1;12867:31;12917:4;12914:1;12907:15;12941:4;12938:1;12931:15;12957:125;12997:4;13025:1;13022;13019:8;13016:34;;;13030:18;;:::i;:::-;-1:-1:-1;13067:9:46;;12957:125::o;13087:128::-;13127:3;13158:1;13154:6;13151:1;13148:13;13145:39;;;13164:18;;:::i;:::-;-1:-1:-1;13200:9:46;;13087:128::o;13220:135::-;13259:3;13280:17;;;13277:43;;13300:18;;:::i;:::-;-1:-1:-1;13347:1:46;13336:13;;13220:135::o;13360:410::-;13562:2;13544:21;;;13601:2;13581:18;;;13574:30;13640:34;13635:2;13620:18;;13613:62;-1:-1:-1;;;13706:2:46;13691:18;;13684:44;13760:3;13745:19;;13360:410::o;13775:168::-;13815:7;13881:1;13877;13873:6;13869:14;13866:1;13863:21;13858:1;13851:9;13844:17;13840:45;13837:71;;;13888:18;;:::i;:::-;-1:-1:-1;13928:9:46;;13775:168::o;13948:217::-;13988:1;14014;14004:132;;14058:10;14053:3;14049:20;14046:1;14039:31;14093:4;14090:1;14083:15;14121:4;14118:1;14111:15;14004:132;-1:-1:-1;14150:9:46;;13948:217::o;14170:228::-;14209:3;14237:10;14274:2;14271:1;14267:10;14304:2;14301:1;14297:10;14335:3;14331:2;14327:12;14322:3;14319:21;14316:47;;;14343:18;;:::i;:::-;14379:13;;14170:228;-1:-1:-1;;;;14170:228:46:o;15379:127::-;15440:10;15435:3;15431:20;15428:1;15421:31;15471:4;15468:1;15461:15;15495:4;15492:1;15485:15;21800:633;22080:3;22118:6;22112:13;22134:53;22180:6;22175:3;22168:4;22160:6;22156:17;22134:53;:::i;:::-;22250:13;;22209:16;;;;22272:57;22250:13;22209:16;22306:4;22294:17;;22272:57;:::i;:::-;-1:-1:-1;;;22351:20:46;;22380:18;;;22425:1;22414:13;;21800:633;-1:-1:-1;;;;21800:633:46:o;22637:127::-;22698:10;22693:3;22689:20;22686:1;22679:31;22729:4;22726:1;22719:15;22753:4;22750:1;22743:15;22769:412;22942:2;22927:18;;22975:1;22964:13;;22954:144;;23020:10;23015:3;23011:20;23008:1;23001:31;23055:4;23052:1;23045:15;23083:4;23080:1;23073:15;22954:144;23107:25;;;23163:2;23148:18;23141:34;22769:412;:::o;23728:973::-;23813:12;;23778:3;;23868:1;23888:18;;;;23941;;;;23968:61;;24022:4;24014:6;24010:17;24000:27;;23968:61;24048:2;24096;24088:6;24085:14;24065:18;24062:38;24059:161;;24142:10;24137:3;24133:20;24130:1;24123:31;24177:4;24174:1;24167:15;24205:4;24202:1;24195:15;24059:161;24236:18;24263:104;;;;24381:1;24376:319;;;;24229:466;;24263:104;-1:-1:-1;;24296:24:46;;24284:37;;24341:16;;;;-1:-1:-1;24263:104:46;;24376:319;23675:1;23668:14;;;23712:4;23699:18;;24470:1;24484:165;24498:6;24495:1;24492:13;24484:165;;;24576:14;;24563:11;;;24556:35;24619:16;;;;24513:10;;24484:165;;;24488:3;;24678:6;24673:3;24669:16;24662:23;;24229:466;;;;;;;23728:973;;;;:::o;24706:714::-;25031:3;25059:38;25093:3;25085:6;25059:38;:::i;:::-;25126:6;25120:13;25142:52;25187:6;25183:2;25176:4;25168:6;25164:17;25142:52;:::i;:::-;-1:-1:-1;;;25216:15:46;;25240:18;;;25283:13;;25305:65;25283:13;25357:1;25346:13;;25339:4;25327:17;;25305:65;:::i;:::-;25390:20;25412:1;25386:28;;24706:714;-1:-1:-1;;;;;24706:714:46:o;25425:361::-;25654:3;25682:38;25716:3;25708:6;25682:38;:::i;:::-;-1:-1:-1;;;25729:24:46;;25777:2;25769:11;;25425:361;-1:-1:-1;;;25425:361:46:o;30277:407::-;30479:2;30461:21;;;30518:2;30498:18;;;30491:30;30557:34;30552:2;30537:18;;30530:62;-1:-1:-1;;;30623:2:46;30608:18;;30601:41;30674:3;30659:19;;30277:407::o;30689:414::-;30891:2;30873:21;;;30930:2;30910:18;;;30903:30;30969:34;30964:2;30949:18;;30942:62;-1:-1:-1;;;31035:2:46;31020:18;;31013:48;31093:3;31078:19;;30689:414::o;31108:489::-;-1:-1:-1;;;;;31377:15:46;;;31359:34;;31429:15;;31424:2;31409:18;;31402:43;31476:2;31461:18;;31454:34;;;31524:3;31519:2;31504:18;;31497:31;;;31302:4;;31545:46;;31571:19;;31563:6;31545:46;:::i;31602:249::-;31671:6;31724:2;31712:9;31703:7;31699:23;31695:32;31692:52;;;31740:1;31737;31730:12;31692:52;31772:9;31766:16;31791:30;31815:5;31791:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2645800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "approve(address,uint256)": "infinite",
                "balanceOf(address)": "2629",
                "buyEdition(uint256,bytes)": "infinite",
                "contractURI()": "infinite",
                "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": "infinite",
                "depositedForEdition(uint256)": "2482",
                "editionCount()": "2490",
                "editions(uint256)": "9271",
                "getApproved(uint256)": "4815",
                "initialize(address,uint256,string,string,string)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "owner()": "2443",
                "ownerOf(uint256)": "2649",
                "ownersOfTokenIds(uint256[])": "infinite",
                "renounceOwnership()": "infinite",
                "royaltyInfo(uint256,uint256)": "11726",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26744",
                "setEndTime(uint256,uint32)": "28665",
                "setPermissionedQuantity(uint256,uint32)": "32807",
                "setSignerAddress(uint256,address)": "28374",
                "setStartTime(uint256,uint32)": "28730",
                "supportsInterface(bytes4)": "infinite",
                "symbol()": "infinite",
                "tokenToEdition(uint256)": "2580",
                "tokenURI(uint256)": "infinite",
                "totalSupply()": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite",
                "withdrawFunds(uint256)": "infinite",
                "withdrawnForEdition(uint256)": "2549"
              },
              "internal": {
                "_sendFunds(address payable,uint256)": "infinite",
                "getSigner(bytes calldata,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "buyEdition(uint256,bytes)": "abccf3dd",
              "contractURI()": "e8a3d485",
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": "73aaf879",
              "depositedForEdition(uint256)": "e1a3d573",
              "editionCount()": "4bf44026",
              "editions(uint256)": "279c806e",
              "getApproved(uint256)": "081812fc",
              "initialize(address,uint256,string,string,string)": "abfc83a0",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "ownersOfTokenIds(uint256[])": "52f5c2e4",
              "renounceOwnership()": "715018a6",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setEndTime(uint256,uint32)": "bb314ca1",
              "setPermissionedQuantity(uint256,uint32)": "52e25bf2",
              "setSignerAddress(uint256,address)": "56dee996",
              "setStartTime(uint256,uint32)": "fbab9e04",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenToEdition(uint256)": "602787ed",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply()": "18160ddd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdrawFunds(uint256)": "155dd5ee",
              "withdrawnForEdition(uint256)": "d3bb0528"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum ArtistV3.TimeType\",\"name\":\"timeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"newTime\",\"type\":\"uint32\"}],\"name\":\"AuctionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"EditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"}],\"name\":\"EditionPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"PermissionedQuantitySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"SignerAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"buyEdition\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_signerAddress\",\"type\":\"address\"}],\"name\":\"createEdition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositedForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"editionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"editions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_artistId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"ownersOfTokenIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"setEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"setPermissionedQuantity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_newSignerAddress\",\"type\":\"address\"}],\"name\":\"setSignerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"}],\"name\":\"setStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawnForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SoundXYZ - @gigamesh & @vigneshka\",\"details\":\"Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyEdition(uint256,bytes)\":{\"params\":{\"_editionId\":\"The id of the edition to purchase\",\"_signature\":\"A signed message for authorizing permissioned purchases\"}},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)\":{\"params\":{\"_endTime\":\"The end time of the auction, in seconds since unix epoch.\",\"_fundingRecipient\":\"The account that will receive sales revenue.\",\"_permissionedQuantity\":\"The quantity of tokens that require a signature to buy.\",\"_price\":\"The price at which each token will be sold, in ETH.\",\"_quantity\":\"The maximum number of tokens that can be sold.\",\"_royaltyBPS\":\"The royalty amount in bps.\",\"_signerAddress\":\"signer address.\",\"_startTime\":\"The start time of the auction, in seconds since unix epoch.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"initialize(address,uint256,string,string,string)\":{\"params\":{\"_name\":\"Name of artist\",\"_owner\":\"Owner of edition\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"Sale price for the token\",\"_tokenId\":\"token id\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-165\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"Concatenate the baseURI, editionId and tokenId, to create URI.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Artist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyEdition(uint256,bytes)\":{\"notice\":\"Creates a new token for the given edition, and assigns it to the buyer\"},\"constructor\":{\"notice\":\"Contract constructor\"},\"contractURI()\":{\"notice\":\"Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\"},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)\":{\"notice\":\"Creates a new edition.\"},\"editionCount()\":{\"notice\":\"returns the number of editions for this artist\"},\"initialize(address,uint256,string,string,string)\":{\"notice\":\"Initializes the contract\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Get royalty information for token\"},\"setEndTime(uint256,uint32)\":{\"notice\":\"Sets the end time for an edition\"},\"setPermissionedQuantity(uint256,uint32)\":{\"notice\":\"Sets the permissioned quantity for an edition\"},\"setSignerAddress(uint256,address)\":{\"notice\":\"Sets the signature address of an edition\"},\"setStartTime(uint256,uint32)\":{\"notice\":\"Sets the start time for an edition\"},\"supportsInterface(bytes4)\":{\"notice\":\"Informs other contracts which interfaces this contract supports\"},\"tokenURI(uint256)\":{\"notice\":\"Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\"},\"totalSupply()\":{\"notice\":\"The total number of tokens created by this contract\"}},\"notice\":\"This contract is used to create & sell song NFTs for the artist who owns the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistV3.sol\":\"ArtistV3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n        require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n        return _IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeTo} and {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"../ERC1967/ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\\n *\\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\\n * conflict with the storage layout of the implementation behind the proxy.\\n *\\n * _Available since v3.4._\\n */\\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the proxy with `beacon`.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\\n     * constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract with the interface {IBeacon}.\\n     */\\n    constructor(address beacon, bytes memory data) payable {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current beacon address.\\n     */\\n    function _beacon() internal view virtual returns (address) {\\n        return _getBeacon();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address of the associated beacon.\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return IBeacon(_getBeacon()).implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract.\\n     * - The implementation returned by `beacon` must be a contract.\\n     */\\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n}\\n\",\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../../access/Ownable.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\\n * implementation contract, which is where they will delegate all function calls.\\n *\\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\\n */\\ncontract UpgradeableBeacon is IBeacon, Ownable {\\n    address private _implementation;\\n\\n    /**\\n     * @dev Emitted when the implementation returned by the beacon is changed.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\\n     * beacon.\\n     */\\n    constructor(address implementation_) {\\n        _setImplementation(implementation_);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function implementation() public view virtual override returns (address) {\\n        return _implementation;\\n    }\\n\\n    /**\\n     * @dev Upgrades the beacon to a new implementation.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * Requirements:\\n     *\\n     * - msg.sender must be the owner of the contract.\\n     * - `newImplementation` must be a contract.\\n     */\\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Sets the implementation contract address for this beacon\\n     *\\n     * Requirements:\\n     *\\n     * - `newImplementation` must be a contract.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"UpgradeableBeacon: implementation is not a contract\\\");\\n        _implementation = newImplementation;\\n    }\\n}\\n\",\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\"},\"contracts/Artist.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\n\\n// This contract is a combination of Mirror.xyz's Editions.sol and Zora's SingleEditionMintable.sol\\n\\n/**\\n * @title Artist\\n * @author SoundXYZ\\n */\\ncontract Artist is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // todo (optimization): link Strings as a deployed library\\n    using Strings for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n    }\\n\\n    // ============ Storage ============\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId;\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n\\n    // ============ Events ============\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer\\n    );\\n\\n    // ============ Methods ============\\n\\n    /**\\n      @param _owner Owner of edition\\n      @param _name Name of artist\\n    */\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set token id start to be 1 not 0\\n        atTokenId.increment();\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime\\n    ) external onlyOwner {\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    function buyEdition(uint256 _editionId) external payable {\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(editions[_editionId].quantity > 0, 'Edition does not exist');\\n        // Check that there are still tokens available to purchase.\\n        require(editions[_editionId].numSold < editions[_editionId].quantity, 'This edition is already sold out.');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= editions[_editionId].price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases before the start time\\n        require(editions[_editionId].startTime < block.timestamp, \\\"Auction hasn't started\\\");\\n        // Don't allow purchases after the end time\\n        require(editions[_editionId].endTime > block.timestamp, 'Auction has ended');\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, atTokenId.current());\\n        // Update the deposited total for the edition\\n        depositedForEdition[_editionId] += msg.value;\\n        // Increment the number of tokens sold for this edition.\\n        editions[_editionId].numSold++;\\n        // Store the mapping of token id to the edition being purchased.\\n        tokenToEdition[atTokenId.current()] = _editionId;\\n\\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\\n\\n        atTokenId.increment();\\n    }\\n\\n    // ============ Operational Methods ============\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n    }\\n\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n    }\\n\\n    // ============ NFT Methods ============\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\\n    }\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    // ============ Extensions =================\\n\\n    /**\\n        @dev Get token ids for a given edition id\\n        @param _editionId edition id\\n     */\\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                tokenIdsOfEdition[index] = id;\\n                index++;\\n            }\\n        }\\n        return tokenIdsOfEdition;\\n    }\\n\\n    /**\\n        @dev Get owners of a given edition id\\n        @param _editionId edition id\\n     */\\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\\n                index++;\\n            }\\n        }\\n        return ownersOfEdition;\\n    }\\n\\n    /**\\n        @dev Get royalty information for token\\n        @param _editionId edition id\\n        @param _salePrice Sale price for the token\\n     */\\n    function royaltyInfo(uint256 _editionId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        Edition memory edition = editions[_editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    function totalSupply() external view returns (uint256) {\\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\\n    }\\n\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    // ============ Private Methods ============\\n\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n}\\n\",\"keccak256\":\"0x275df23e9824418bb46b4643f2cee3b4871481f1a4be57f357af6753b485aab0\",\"license\":\"GPL-3.0-or-later\"},\"contracts/ArtistCreator.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';\\nimport './Artist.sol';\\n\\ncontract ArtistCreator is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSAUpgradeable for bytes32;\\n\\n    // ============ Storage ============\\n\\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\\n    CountersUpgradeable.Counter private atArtistId;\\n    // address used for signature verification, changeable by owner\\n    address public admin;\\n    bytes32 public DOMAIN_SEPARATOR;\\n    address public beaconAddress;\\n    // registry of created contracts\\n    address[] public artistContracts;\\n\\n    // ============ Events ============\\n\\n    /// Emitted when an Artist is created\\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\\n\\n    // ============ Functions ============\\n\\n    /// Initializes factory\\n    function initialize() public initializer {\\n        __Ownable_init_unchained();\\n\\n        // set admin for artist deployment authorization\\n        admin = msg.sender;\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n\\n        // set up beacon with msg.sender as the owner\\n        UpgradeableBeacon _beacon = new UpgradeableBeacon(address(new Artist()));\\n        _beacon.transferOwnership(msg.sender);\\n        beaconAddress = address(_beacon);\\n\\n        // Set artist id start to be 1 not 0\\n        atArtistId.increment();\\n    }\\n\\n    /// Creates a new artist contract as a factory with a deterministic address\\n    /// Important: None of these fields (except the Url fields with the same hash) can be changed after calling\\n    /// @param _name Name of the artist\\n    function createArtist(\\n        bytes calldata signature,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public returns (address) {\\n        require((getSigner(signature) == admin), 'invalid authorization signature');\\n\\n        BeaconProxy proxy = new BeaconProxy(\\n            beaconAddress,\\n            abi.encodeWithSelector(\\n                Artist(address(0)).initialize.selector,\\n                msg.sender,\\n                atArtistId.current(),\\n                _name,\\n                _symbol,\\n                _baseURI\\n            )\\n        );\\n\\n        // add to registry\\n        artistContracts.push(address(proxy));\\n\\n        emit CreatedArtist(atArtistId.current(), _name, _symbol, address(proxy));\\n\\n        atArtistId.increment();\\n\\n        return address(proxy);\\n    }\\n\\n    /// Get signer address of signature\\n    function getSigner(bytes calldata signature) public view returns (address) {\\n        require(admin != address(0), 'whitelist not enabled');\\n        // Verify EIP-712 signature by recreating the data structure\\n        // that we signed on the client side, and then using that to recover\\n        // the address that signed the signature for this data.\\n        bytes32 digest = keccak256(\\n            abi.encodePacked('\\\\x19\\\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, msg.sender)))\\n        );\\n        // Use the recover method to see what address was used to create\\n        // the signature on this data.\\n        // Note that if the digest doesn't exactly match what was signed we'll\\n        // get a random recovered address.\\n        address recoveredAddress = digest.recover(signature);\\n        return recoveredAddress;\\n    }\\n\\n    /// Sets the admin for authorizing artist deployment\\n    /// @param _newAdmin address of new admin\\n    function setAdmin(address _newAdmin) external {\\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\\n        admin = _newAdmin;\\n    }\\n\\n    function _authorizeUpgrade(address) internal override onlyOwner {}\\n}\\n\",\"keccak256\":\"0x57b84dba37d2e931d2566252fbe738ad57cb6369f050ac83dd8eed7168e21196\",\"license\":\"GPL-3.0-or-later\"},\"contracts/ArtistV3.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {LibUintToString} from './utils/LibUintToString.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport {ArtistCreator} from './ArtistCreator.sol';\\nimport {ECDSA} from '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\\n\\n/// @title Artist\\n/// @author SoundXYZ - @gigamesh & @vigneshka\\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\\ncontract ArtistV3 is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // ================================\\n    // TYPES\\n    // ================================\\n\\n    using LibUintToString for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSA for bytes32;\\n\\n    enum TimeType {\\n        START,\\n        END\\n    }\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n        // quantity of permissioned tokens\\n        uint32 permissionedQuantity;\\n        // whitelist signer address\\n        address signerAddress;\\n    }\\n\\n    // ================================\\n    // STORAGE\\n    // ================================\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId; // DEPRECATED IN V3\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\\n    mapping(uint256 => uint256) private _tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n    // The permissioned typehash (used for checking signature validity)\\n    bytes32 private constant PERMISSIONED_SALE_TYPEHASH =\\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)');\\n    bytes32 private immutable DOMAIN_SEPARATOR;\\n\\n    // ================================\\n    // EVENTS\\n    // ================================\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime,\\n        uint32 permissionedQuantity,\\n        address signerAddress\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer\\n    );\\n\\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\\n\\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\\n\\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\\n\\n    // ================================\\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Contract constructor\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n    }\\n\\n    /// @notice Initializes the contract\\n    /// @param _owner Owner of edition\\n    /// @param _name Name of artist\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new edition.\\n    /// @param _fundingRecipient The account that will receive sales revenue.\\n    /// @param _price The price at which each token will be sold, in ETH.\\n    /// @param _quantity The maximum number of tokens that can be sold.\\n    /// @param _royaltyBPS The royalty amount in bps.\\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\\n    /// @param _signerAddress signer address.\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime,\\n        uint32 _permissionedQuantity,\\n        address _signerAddress\\n    ) external onlyOwner {\\n        require(_permissionedQuantity < _quantity + 1, 'Permissioned quantity too big');\\n        require(_quantity > 0, 'Must set quantity');\\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\\n        require(_endTime > _startTime, 'End time must be greater than start time');\\n\\n        if (_permissionedQuantity > 0) {\\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\\n        }\\n\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime,\\n            permissionedQuantity: _permissionedQuantity,\\n            signerAddress: _signerAddress\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime,\\n            _permissionedQuantity,\\n            _signerAddress\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\\n    /// @param _editionId The id of the edition to purchase\\n    /// @param _signature A signed message for authorizing permissioned purchases\\n    function buyEdition(uint256 _editionId, bytes calldata _signature) external payable {\\n        // Caching variables locally to reduce reads\\n        uint256 price = editions[_editionId].price;\\n        uint32 quantity = editions[_editionId].quantity;\\n        uint32 numSold = editions[_editionId].numSold;\\n        uint32 startTime = editions[_editionId].startTime;\\n        uint32 endTime = editions[_editionId].endTime;\\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\\n\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(quantity > 0, 'Edition does not exist');\\n        // Check that there are still tokens available to purchase.\\n        require(numSold < quantity, 'This edition is already sold out.');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\\n\\n        // If the open auction hasn't started...\\n        if (startTime > block.timestamp) {\\n            // Check that permissioned tokens are still available\\n            require(\\n                permissionedQuantity > 0 && numSold < permissionedQuantity,\\n                'No permissioned tokens available & open auction not started'\\n            );\\n\\n            // Check that the signature is valid.\\n            require(getSigner(_signature, _editionId) == editions[_editionId].signerAddress, 'Invalid signer');\\n        }\\n\\n        // Don't allow purchases after the end time\\n        require(endTime > block.timestamp, 'Auction has ended');\\n\\n        // Create the token id by packing editionId in the top bits\\n        uint256 tokenId;\\n        unchecked {\\n            tokenId = (_editionId << 128) | (numSold + 1);\\n            // Increment the number of tokens sold for this edition.\\n            editions[_editionId].numSold = numSold + 1;\\n        }\\n\\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\\n        if (editions[_editionId].fundingRecipient == owner()) {\\n            // Update the deposited total for the edition\\n            depositedForEdition[_editionId] += msg.value;\\n        } else {\\n            // Send funds to the funding recipient.\\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\\n        }\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, tokenId);\\n\\n        emit EditionPurchased(_editionId, tokenId, editions[_editionId].numSold, msg.sender);\\n    }\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    /// @notice Sets the start time for an edition\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\\n    }\\n\\n    /// @notice Sets the end time for an edition\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\\n    }\\n\\n    /// @notice Sets the signature address of an edition\\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external onlyOwner {\\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\\n\\n        editions[_editionId].signerAddress = _newSignerAddress;\\n        emit SignerAddressSet(_editionId, _newSignerAddress);\\n    }\\n\\n    /// @notice Sets the permissioned quantity for an edition\\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity) external onlyOwner {\\n        // Check that the permissioned quantity is less than the total quantity\\n        require(_permissionedQuantity < editions[_editionId].quantity + 1, 'Must not exceed quantity');\\n        // Prevent setting to permissioned quantity when there is no signer address\\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\\n\\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\\n    }\\n\\n    // ================================\\n    // VIEW FUNCTIONS\\n    // ================================\\n\\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    /// @dev Concatenate the baseURI, editionId and tokenId, to create URI.\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        uint256 editionId = tokenToEdition(_tokenId);\\n\\n        return string(abi.encodePacked(baseURI, editionId.toString(), '/', _tokenId.toString()));\\n    }\\n\\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    /// @notice Get royalty information for token\\n    /// @param _tokenId token id\\n    /// @param _salePrice Sale price for the token\\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        uint256 editionId = tokenToEdition(_tokenId);\\n        Edition memory edition = editions[editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    /// @notice The total number of tokens created by this contract\\n    function totalSupply() external view returns (uint256) {\\n        uint256 total = 0;\\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\\n            total += editions[id].numSold;\\n        }\\n        return total;\\n    }\\n\\n    /// @notice Informs other contracts which interfaces this contract supports\\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    /// @notice returns the number of editions for this artist\\n    function editionCount() external view returns (uint256) {\\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\\n    }\\n\\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\\n        // Check the top bits to see if the edition id is there\\n        uint256 editionId = _tokenId >> 128;\\n\\n        // If edition ID is 0, then this edition was created before the V3 upgrade\\n        if (editionId == 0) {\\n            // get edition ID from storage\\n            return _tokenToEdition[_tokenId];\\n        }\\n\\n        return editionId;\\n    }\\n\\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\\n        address[] memory owners = new address[](_tokenIds.length);\\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\\n            owners[i] = ownerOf(_tokenIds[i]);\\n        }\\n        return owners;\\n    }\\n\\n    // ================================\\n    // FUNCTIONS - PRIVATE\\n    // ================================\\n\\n    /// @notice Sends funds to an address\\n    /// @param _recipient The address to send funds to\\n    /// @param _amount The amount of funds to send\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n\\n    /// @notice Gets signer address to validate permissioned purchase\\n    /// @param _signature signed message\\n    /// @param _editionId edition id\\n    /// @return address of signer\\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\\n    function getSigner(bytes calldata _signature, uint256 _editionId) private view returns (address) {\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                '\\\\x19\\\\x01',\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId))\\n            )\\n        );\\n        address recoveredAddress = digest.recover(_signature);\\n        return recoveredAddress;\\n    }\\n}\\n\",\"keccak256\":\"0xa9e1ce33893bcb726793d343129286deb8e8e756b5cbe976d372a382a6b383dd\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/LibUintToString.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.0;\\n\\nlibrary LibUintToString {\\n    uint256 private constant MAX_UINT256_STRING_LENGTH = 78;\\n    uint8 private constant ASCII_DIGIT_OFFSET = 48;\\n\\n    /// @dev Converts a `uint256` value to a string.\\n    /// @param n The integer to convert.\\n    /// @return nstr `n` as a decimal string.\\n    function toString(uint256 n) internal pure returns (string memory nstr) {\\n        if (n == 0) {\\n            return '0';\\n        }\\n        // Overallocate memory\\n        nstr = new string(MAX_UINT256_STRING_LENGTH);\\n        uint256 k = MAX_UINT256_STRING_LENGTH;\\n        // Populate string from right to left (lsb to msb).\\n        while (n != 0) {\\n            assembly {\\n                let char := add(ASCII_DIGIT_OFFSET, mod(n, 10))\\n                mstore(add(nstr, k), char)\\n                k := sub(k, 1)\\n                n := div(n, 10)\\n            }\\n        }\\n        assembly {\\n            // Shift pointer over to actual start of string.\\n            nstr := add(nstr, k)\\n            // Store actual string length.\\n            mstore(nstr, sub(MAX_UINT256_STRING_LENGTH, k))\\n        }\\n        return nstr;\\n    }\\n}\\n\",\"keccak256\":\"0xc6cf2910b6dbbe6c24c28de6a7a200395696e9d7f6ace5b7a345f68c383b7ef2\",\"license\":\"Unlicense\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 6969,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "baseURI",
                "offset": 0,
                "slot": "201",
                "type": "t_string_storage"
              },
              {
                "astId": 6972,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "atTokenId",
                "offset": 0,
                "slot": "202",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 6975,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "atEditionId",
                "offset": 0,
                "slot": "203",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 6980,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "editions",
                "offset": 0,
                "slot": "204",
                "type": "t_mapping(t_uint256,t_struct(Edition)6967_storage)"
              },
              {
                "astId": 6984,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "_tokenToEdition",
                "offset": 0,
                "slot": "205",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 6988,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "depositedForEdition",
                "offset": 0,
                "slot": "206",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 6992,
                "contract": "contracts/ArtistV3.sol:ArtistV3",
                "label": "withdrawnForEdition",
                "offset": 0,
                "slot": "207",
                "type": "t_mapping(t_uint256,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_address_payable": {
                "encoding": "inplace",
                "label": "address payable",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_struct(Edition)6967_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ArtistV3.Edition)",
                "numberOfBytes": "32",
                "value": "t_struct(Edition)6967_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(Edition)6967_storage": {
                "encoding": "inplace",
                "label": "struct ArtistV3.Edition",
                "members": [
                  {
                    "astId": 6950,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "fundingRecipient",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address_payable"
                  },
                  {
                    "astId": 6952,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "price",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 6954,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "numSold",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6956,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "quantity",
                    "offset": 4,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6958,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "royaltyBPS",
                    "offset": 8,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6960,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "startTime",
                    "offset": 12,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6962,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "endTime",
                    "offset": 16,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6964,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "permissionedQuantity",
                    "offset": 20,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 6966,
                    "contract": "contracts/ArtistV3.sol:ArtistV3",
                    "label": "signerAddress",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_address"
                  }
                ],
                "numberOfBytes": "128"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "buyEdition(uint256,bytes)": {
                "notice": "Creates a new token for the given edition, and assigns it to the buyer"
              },
              "constructor": {
                "notice": "Contract constructor"
              },
              "contractURI()": {
                "notice": "Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront"
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": {
                "notice": "Creates a new edition."
              },
              "editionCount()": {
                "notice": "returns the number of editions for this artist"
              },
              "initialize(address,uint256,string,string,string)": {
                "notice": "Initializes the contract"
              },
              "royaltyInfo(uint256,uint256)": {
                "notice": "Get royalty information for token"
              },
              "setEndTime(uint256,uint32)": {
                "notice": "Sets the end time for an edition"
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "notice": "Sets the permissioned quantity for an edition"
              },
              "setSignerAddress(uint256,address)": {
                "notice": "Sets the signature address of an edition"
              },
              "setStartTime(uint256,uint32)": {
                "notice": "Sets the start time for an edition"
              },
              "supportsInterface(bytes4)": {
                "notice": "Informs other contracts which interfaces this contract supports"
              },
              "tokenURI(uint256)": {
                "notice": "Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]"
              },
              "totalSupply()": {
                "notice": "The total number of tokens created by this contract"
              }
            },
            "notice": "This contract is used to create & sell song NFTs for the artist who owns the contract.",
            "version": 1
          }
        }
      },
      "contracts/ArtistV4.sol": {
        "ArtistV4": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "enum ArtistV4.TimeType",
                  "name": "timeType",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint32",
                  "name": "newTime",
                  "type": "uint32"
                }
              ],
              "name": "AuctionTimeSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "EditionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "EditionPurchased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "PermissionedQuantitySet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "SignerAddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "_ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "buyEdition",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ticketNumbers",
                  "type": "uint256[]"
                }
              ],
              "name": "checkTicketNumbers",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "",
                  "type": "bool[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                }
              ],
              "name": "createEdition",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "depositedForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "editionCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "editions",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_artistId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "ownersOfTokenIds",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "setEndTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "setPermissionedQuantity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_newSignerAddress",
                  "type": "address"
                }
              ],
              "name": "setSignerAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                }
              ],
              "name": "setStartTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "withdrawFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdrawnForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "SoundXYZ - @gigamesh & @vigneshka",
            "details": "Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "buyEdition(uint256,bytes,uint256)": {
                "params": {
                  "_editionId": "The id of the edition to purchase",
                  "_signature": "A signed message for authorizing permissioned purchases",
                  "_ticketNumber": "Ticket number required for validating this buyer hasn't already bought."
                }
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": {
                "params": {
                  "_endTime": "The end time of the auction, in seconds since unix epoch.",
                  "_fundingRecipient": "The account that will receive sales revenue.",
                  "_permissionedQuantity": "The quantity of tokens that require a signature to buy.",
                  "_price": "The price at which each token will be sold, in ETH.",
                  "_quantity": "The maximum number of tokens that can be sold.",
                  "_royaltyBPS": "The royalty amount in bps.",
                  "_signerAddress": "signer address.",
                  "_startTime": "The start time of the auction, in seconds since unix epoch."
                }
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "initialize(address,uint256,string,string,string)": {
                "params": {
                  "_name": "Name of artist",
                  "_owner": "Owner of edition"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "ownersOfTokenIds(uint256[])": {
                "params": {
                  "_tokenIds": "List of token ids"
                }
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "royaltyInfo(uint256,uint256)": {
                "params": {
                  "_salePrice": "Sale price for the token",
                  "_tokenId": "token id"
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "supportsInterface(bytes4)": {
                "details": "https://eips.ethereum.org/EIPS/eip-165"
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenToEdition(uint256)": {
                "params": {
                  "_tokenId": "token id"
                }
              },
              "tokenURI(uint256)": {
                "details": "Concatenate the baseURI, editionId and tokenId, to create URI."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Artist",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_8063": {
                  "entryPoint": null,
                  "id": 8063,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:264:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "143:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "153:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "165:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "176:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "161:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "161:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "153:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "195:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "206:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "188:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "188:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "188:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "233:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "244:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "229:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "229:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "249:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "222:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "222:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "222:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "115:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "123:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "134:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14:248:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604080517fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e34656020820152469181019190915260600160408051601f19818403018152919052805160209091012060805260805161359c61007c60003960006123a6015261359c6000f3fe6080604052600436106101f95760003560e01c806370a082311161010d578063bb314ca1116100a0578063e8a3d4851161006f578063e8a3d485146106c8578063e985e9c5146106dd578063f2fde38b14610726578063f71e54fb14610746578063fbab9e041461075957600080fd5b8063bb314ca11461062e578063c87b56dd1461064e578063d3bb05281461066e578063e1a3d5731461069b57600080fd5b806395d89b41116100dc57806395d89b41146105b9578063a22cb465146105ce578063abfc83a0146105ee578063b88d4fde1461060e57600080fd5b806370a0823114610546578063715018a61461056657806373aaf8791461057b5780638da5cb5b1461059b57600080fd5b8063279c806e1161019057806352e25bf21161015f57806352e25bf21461049957806352f5c2e4146104b957806356dee996146104e6578063602787ed146105065780636352211e1461052657600080fd5b8063279c806e1461033f5780632a55205a1461042557806342842e0e146104645780634bf440261461048457600080fd5b8063095ea7b3116101cc578063095ea7b3146102ba578063155dd5ee146102dc57806318160ddd146102fc57806323b872dd1461031f57600080fd5b806301ffc9a7146101fe578063065d5b851461023357806306fdde0314610260578063081812fc14610282575b600080fd5b34801561020a57600080fd5b5061021e610219366004612b0c565b610779565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b5061025361024e366004612b75565b6107a4565b60405161022a9190612bc1565b34801561026c57600080fd5b50610275610891565b60405161022a9190612c5f565b34801561028e57600080fd5b506102a261029d366004612c72565b610923565b6040516001600160a01b03909116815260200161022a565b3480156102c657600080fd5b506102da6102d5366004612ca0565b61094a565b005b3480156102e857600080fd5b506102da6102f7366004612c72565b610a64565b34801561030857600080fd5b50610311610ac4565b60405190815260200161022a565b34801561032b57600080fd5b506102da61033a366004612ccc565b610b10565b34801561034b57600080fd5b506103c761035a366004612c72565b60cc6020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919263ffffffff808416936401000000008104821693600160401b8204831693600160601b8304841693600160801b8404811693600160a01b900416911689565b604080516001600160a01b039a8b168152602081019990995263ffffffff978816908901529486166060880152928516608087015290841660a0860152831660c085015290911660e08301529091166101008201526101200161022a565b34801561043157600080fd5b50610445610440366004612d0d565b610b41565b604080516001600160a01b03909316835260208301919091520161022a565b34801561047057600080fd5b506102da61047f366004612ccc565b610c3d565b34801561049057600080fd5b50610311610c58565b3480156104a557600080fd5b506102da6104b4366004612d48565b610c74565b3480156104c557600080fd5b506104d96104d4366004612d74565b610d52565b60405161022a9190612db6565b3480156104f257600080fd5b506102da610501366004612df7565b610e0b565b34801561051257600080fd5b50610311610521366004612c72565b610ecf565b34801561053257600080fd5b506102a2610541366004612c72565b610ef1565b34801561055257600080fd5b50610311610561366004612e27565b610f51565b34801561057257600080fd5b506102da610fd7565b34801561058757600080fd5b506102da610596366004612e44565b610feb565b3480156105a757600080fd5b506097546001600160a01b03166102a2565b3480156105c557600080fd5b5061027561138f565b3480156105da57600080fd5b506102da6105e9366004612eda565b61139e565b3480156105fa57600080fd5b506102da610609366004612fb9565b6113a9565b34801561061a57600080fd5b506102da61062936600461305e565b611520565b34801561063a57600080fd5b506102da610649366004612d48565b611558565b34801561065a57600080fd5b50610275610669366004612c72565b6115c7565b34801561067a57600080fd5b50610311610689366004612c72565b60cf6020526000908152604090205481565b3480156106a757600080fd5b506103116106b6366004612c72565b60ce6020526000908152604090205481565b3480156106d457600080fd5b50610275611690565b3480156106e957600080fd5b5061021e6106f83660046130de565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561073257600080fd5b506102da610741366004612e27565b6116b8565b6102da61075436600461310c565b611731565b34801561076557600080fd5b506102da610774366004612d48565b611b04565b600063152a902d60e11b6001600160e01b03198316148061079e575061079e82611b72565b92915050565b606060008267ffffffffffffffff8111156107c1576107c1612f0d565b6040519080825280602002602001820160405280156107ea578160200160208202803683370190505b50905060005b8381101561088857600061084a878787858181106108105761081061318e565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106108655761086561318e565b911515602092830291909101909101525080610880816131ba565b9150506107f0565b50949350505050565b6060606580546108a0906131d3565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc906131d3565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b5050505050905090565b600061092e82611bc2565b506000908152606960205260409020546001600160a01b031690565b600061095582610ef1565b9050806001600160a01b0316836001600160a01b0316036109c75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806109e357506109e381336106f8565b610a555760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109be565b610a5f8383611c21565b505050565b600081815260cf602090815260408083205460ce909252822054610a889190613207565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610ac0906001600160a01b031682611c8f565b5050565b60008060015b60cb54811015610b0a57600081815260cc6020526040902060020154610af69063ffffffff168361321e565b915080610b02816131ba565b915050610aca565b50919050565b610b1a3382611d9c565b610b365760405162461bcd60e51b81526004016109be90613236565b610a5f838383611e1b565b6000806000610b4f85610ecf565b600081815260cc602090815260409182902082516101208101845281546001600160a01b03908116808352600184015494830194909452600283015463ffffffff80821696840196909652640100000000810486166060840152600160401b810486166080840152600160601b8104861660a0840152600160801b8104861660c0840152600160a01b900490941660e082015260039091015490921661010083015291925090610c075751925060009150610c369050565b6080810151815163ffffffff90911690612710610c248389613284565b610c2e91906132a3565b945094505050505b9250929050565b610a5f83838360405180602001604052806000815250611520565b60006001610c6560cb5490565b610c6f9190613207565b905090565b610c7c611fb7565b600082815260cc60205260409020600301546001600160a01b0316610ce35760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e657200000000000060448201526064016109be565b600082815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8616908102919091179091558251858152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a15050565b606060008267ffffffffffffffff811115610d6f57610d6f612f0d565b604051908082528060200260200182016040528015610d98578160200160208202803683370190505b50905060005b83811015610e0357610dc7858583818110610dbb57610dbb61318e565b90506020020135610ef1565b828281518110610dd957610dd961318e565b6001600160a01b039092166020928302919091019091015280610dfb816131ba565b915050610d9e565b509392505050565b610e13611fb7565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f74206265203000000000000060448201526064016109be565b600082815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03851690811790915591518481527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a25050565b6000608082901c80820361079e575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b03168061079e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109be565b60006001600160a01b038216610fbb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109be565b506001600160a01b031660009081526068602052604090205490565b610fdf611fb7565b610fe96000612011565b565b610ff3611fb7565b60008663ffffffff161161103d5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b60448201526064016109be565b6001600160a01b0388166110935760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e740000000000000060448201526064016109be565b8363ffffffff168363ffffffff16116110ff5760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b60648201526084016109be565b63ffffffff821615611161576001600160a01b0381166111615760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f74206265203000000000000060448201526064016109be565b604051806101200160405280896001600160a01b03168152602001888152602001600063ffffffff1681526020018763ffffffff1681526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff168152602001826001600160a01b031681525060cc60006111e560cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355938501516001830155918401516002820180546060870151608088015160a089015160c08a015160e08b015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b93909116929092029190911790556101009093015160039093018054909216921691909117905560cb54604080516001600160a01b03808c168252602082018b905263ffffffff808b16938301939093528289166060830152828816608083015282871660a083015291851660c082015290831660e08201527fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3906101000160405180910390a261138560cb80546001019055565b5050505050505050565b6060606680546108a0906131d3565b610ac0338383612063565b600054610100900460ff16158080156113c95750600054600160ff909116105b806113e35750303b1580156113e3575060005460ff166001145b6114465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109be565b6000805460ff191660011790558015611469576000805461ff0019166101001790555b6114738484612131565b61147b612162565b611484866116b8565b8161148e86612191565b60405160200161149f9291906132c5565b60405160208183030381529060405260c990805190602001906114c3929190612a5d565b506114d260cb80546001019055565b8015611518576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61152a3383611d9c565b6115465760405162461bcd60e51b81526004016109be90613236565b61155284848484612209565b50505050565b611560611fb7565b600082815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff85169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90610ec3906001908690613316565b6000818152606760205260409020546060906001600160a01b03166116465760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016109be565b600061165183610ecf565b905060c961165e82612191565b61166785612191565b604051602001611679939291906133db565b604051602081830303815290604052915050919050565b606060c96040516020016116a49190613421565b604051602081830303815290604052905090565b6116c0611fb7565b6001600160a01b0381166117255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109be565b61172e81612011565b50565b600084815260cc60205260408120600180820154600290920154919263ffffffff6401000000008404811693169161176a908390613447565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166117ea5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016109be565b8634101561184c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b60648201526084016109be565b428363ffffffff16111561194e578063ffffffff168563ffffffff16106118db5760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f742073746172746564000000000060648201526084016109be565b60008b815260cc60205260409020600301546001600160a01b03166119028b8b8e8c61223c565b6001600160a01b0316146119495760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064016109be565b6119b3565b8563ffffffff168563ffffffff16106119b35760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b60648201526084016109be565b428263ffffffff16116119fc5760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b60448201526064016109be565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b17611a3b6097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b03918216911603611a855760008c815260ce602052604081208054349290611a7a90849061321e565b90915550611aa79050565b60008c815260cc6020526040902054611aa7906001600160a01b031634611c8f565b611ab1338261243c565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b611b0c611fb7565b600082815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff861690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c91610ec391908690613316565b60006001600160e01b031982166380ac58cd60e01b1480611ba357506001600160e01b03198216635b5e139f60e01b145b8061079e57506301ffc9a760e01b6001600160e01b031983161461079e565b6000818152606760205260409020546001600160a01b031661172e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109be565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611c5682610ef1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b80471015611cdf5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016109be565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d2c576040519150601f19603f3d011682016040523d82523d6000602084013e611d31565b606091505b5050905080610a5f5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b60648201526084016109be565b600080611da883610ef1565b9050806001600160a01b0316846001600160a01b03161480611def57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611e135750836001600160a01b0316611e0884610923565b6001600160a01b0316145b949350505050565b826001600160a01b0316611e2e82610ef1565b6001600160a01b031614611e925760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109be565b6001600160a01b038216611ef45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109be565b611eff600082611c21565b6001600160a01b0383166000908152606860205260408120805460019290611f28908490613207565b90915550506001600160a01b0382166000908152606860205260408120805460019290611f5690849061321e565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610fe95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109be565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036120c45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109be565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff166121585760405162461bcd60e51b81526004016109be9061346f565b610ac0828261257e565b600054610100900460ff166121895760405162461bcd60e51b81526004016109be9061346f565b610fe96125cc565b6060816000036121b85750506040805180820190915260018152600360fc1b602082015290565b60408051604e8082526080820190925290602082018180368337019050509050604e5b82156121fa57600a8084066030018284015290920491600019016121db565b604e8190039101908152919050565b612214848484611e1b565b612220848484846125fc565b6115525760405162461bcd60e51b81526004016109be906134ba565b600064010000000082106122925760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d61780000000000000060448201526064016109be565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c60011692831561231f5760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b60648201526084016109be565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e28301526101028201526101220160405160208183030381529060405280519060200120905061242e8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085939250506126fa9050565b9a9950505050505050505050565b6001600160a01b0382166124925760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109be565b6000818152606760205260409020546001600160a01b0316156124f75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109be565b6001600160a01b038216600090815260686020526040812080546001929061252090849061321e565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff166125a55760405162461bcd60e51b81526004016109be9061346f565b81516125b8906065906020850190612a5d565b508051610a5f906066906020840190612a5d565b600054610100900460ff166125f35760405162461bcd60e51b81526004016109be9061346f565b610fe933612011565b60006001600160a01b0384163b156126f257604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061264090339089908890889060040161350c565b6020604051808303816000875af192505050801561267b575060408051601f3d908101601f1916820190925261267891810190613549565b60015b6126d8573d8080156126a9576040519150601f19603f3d011682016040523d82523d6000602084013e6126ae565b606091505b5080516000036126d05760405162461bcd60e51b81526004016109be906134ba565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611e13565b506001611e13565b60008060006127098585612716565b91509150610e0381612781565b600080825160410361274c5760208301516040840151606085015160001a61274087828585612937565b94509450505050610c36565b8251604003612775576020830151604084015161276a868383612a24565b935093505050610c36565b50600090506002610c36565b600081600481111561279557612795613300565b0361279d5750565b60018160048111156127b1576127b1613300565b036127fe5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109be565b600281600481111561281257612812613300565b0361285f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109be565b600381600481111561287357612873613300565b036128cb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109be565b60048160048111156128df576128df613300565b0361172e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109be565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561296e5750600090506003612a1b565b8460ff16601b1415801561298657508460ff16601c14155b156129975750600090506004612a1b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156129eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612a1457600060019250925050612a1b565b9150600090505b94509492505050565b6000806001600160ff1b03831681612a4160ff86901c601b61321e565b9050612a4f87828885612937565b935093505050935093915050565b828054612a69906131d3565b90600052602060002090601f016020900481019282612a8b5760008555612ad1565b82601f10612aa457805160ff1916838001178555612ad1565b82800160010185558215612ad1579182015b82811115612ad1578251825591602001919060010190612ab6565b50612add929150612ae1565b5090565b5b80821115612add5760008155600101612ae2565b6001600160e01b03198116811461172e57600080fd5b600060208284031215612b1e57600080fd5b8135612b2981612af6565b9392505050565b60008083601f840112612b4257600080fd5b50813567ffffffffffffffff811115612b5a57600080fd5b6020830191508360208260051b8501011115610c3657600080fd5b600080600060408486031215612b8a57600080fd5b83359250602084013567ffffffffffffffff811115612ba857600080fd5b612bb486828701612b30565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612bfb578351151583529284019291840191600101612bdd565b50909695505050505050565b60005b83811015612c22578181015183820152602001612c0a565b838111156115525750506000910152565b60008151808452612c4b816020860160208601612c07565b601f01601f19169290920160200192915050565b602081526000612b296020830184612c33565b600060208284031215612c8457600080fd5b5035919050565b6001600160a01b038116811461172e57600080fd5b60008060408385031215612cb357600080fd5b8235612cbe81612c8b565b946020939093013593505050565b600080600060608486031215612ce157600080fd5b8335612cec81612c8b565b92506020840135612cfc81612c8b565b929592945050506040919091013590565b60008060408385031215612d2057600080fd5b50508035926020909101359150565b803563ffffffff81168114612d4357600080fd5b919050565b60008060408385031215612d5b57600080fd5b82359150612d6b60208401612d2f565b90509250929050565b60008060208385031215612d8757600080fd5b823567ffffffffffffffff811115612d9e57600080fd5b612daa85828601612b30565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612bfb5783516001600160a01b031683529284019291840191600101612dd2565b60008060408385031215612e0a57600080fd5b823591506020830135612e1c81612c8b565b809150509250929050565b600060208284031215612e3957600080fd5b8135612b2981612c8b565b600080600080600080600080610100898b031215612e6157600080fd5b8835612e6c81612c8b565b975060208901359650612e8160408a01612d2f565b9550612e8f60608a01612d2f565b9450612e9d60808a01612d2f565b9350612eab60a08a01612d2f565b9250612eb960c08a01612d2f565b915060e0890135612ec981612c8b565b809150509295985092959890939650565b60008060408385031215612eed57600080fd5b8235612ef881612c8b565b915060208301358015158114612e1c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612f3e57612f3e612f0d565b604051601f8501601f19908116603f01168101908282118183101715612f6657612f66612f0d565b81604052809350858152868686011115612f7f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612faa57600080fd5b612b2983833560208501612f23565b600080600080600060a08688031215612fd157600080fd5b8535612fdc81612c8b565b945060208601359350604086013567ffffffffffffffff8082111561300057600080fd5b61300c89838a01612f99565b9450606088013591508082111561302257600080fd5b61302e89838a01612f99565b9350608088013591508082111561304457600080fd5b5061305188828901612f99565b9150509295509295909350565b6000806000806080858703121561307457600080fd5b843561307f81612c8b565b9350602085013561308f81612c8b565b925060408501359150606085013567ffffffffffffffff8111156130b257600080fd5b8501601f810187136130c357600080fd5b6130d287823560208401612f23565b91505092959194509250565b600080604083850312156130f157600080fd5b82356130fc81612c8b565b91506020830135612e1c81612c8b565b6000806000806060858703121561312257600080fd5b84359350602085013567ffffffffffffffff8082111561314157600080fd5b818701915087601f83011261315557600080fd5b81358181111561316457600080fd5b88602082850101111561317657600080fd5b95986020929092019750949560400135945092505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016131cc576131cc6131a4565b5060010190565b600181811c908216806131e757607f821691505b602082108103610b0a57634e487b7160e01b600052602260045260246000fd5b600082821015613219576132196131a4565b500390565b60008219821115613231576132316131a4565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561329e5761329e6131a4565b500290565b6000826132c057634e487b7160e01b600052601260045260246000fd5b500490565b600083516132d7818460208801612c07565b8351908301906132eb818360208801612c07565b602f60f81b9101908152600101949350505050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061333857634e487b7160e01b600052602160045260246000fd5b9281526020015290565b8054600090600181811c908083168061335c57607f831692505b6020808410820361337d57634e487b7160e01b600052602260045260246000fd5b81801561339157600181146133a2576133cf565b60ff198616895284890196506133cf565b60008881526020902060005b868110156133c75781548b8201529085019083016133ae565b505084890196505b50505050505092915050565b60006133e78286613342565b84516133f7818360208901612c07565b602f60f81b91019081528351613414816001840160208801612c07565b0160010195945050505050565b600061342d8284613342565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b600063ffffffff808316818516808303821115613466576134666131a4565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061353f90830184612c33565b9695505050505050565b60006020828403121561355b57600080fd5b8151612b2981612af656fea26469706673582212203aa9133e83dd48864db5e319e874482e05749f10a3c5ea8a6e2b1d24574f784a64736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 PUSH1 0x20 DUP3 ADD MSTORE CHAINID SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x359C PUSH2 0x7C PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x23A6 ADD MSTORE PUSH2 0x359C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1F9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xBB314CA1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x726 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x746 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x62E JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x64E JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x66E JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5B9 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x566 JUMPI DUP1 PUSH4 0x73AAF879 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E GT PUSH2 0x190 JUMPI DUP1 PUSH4 0x52E25BF2 GT PUSH2 0x15F JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x4B9 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x282 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21E PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B0C JUMP JUMPDEST PUSH2 0x779 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0x2B75 JUMP JUMPDEST PUSH2 0x7A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x2BC1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x2C5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0x923 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA0 JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0xA64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0xAC4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCC JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C7 PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP4 DIV DUP5 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND SWAP2 AND DUP10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH4 0xFFFFFFFF SWAP8 DUP9 AND SWAP1 DUP10 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP3 DUP6 AND PUSH1 0x80 DUP8 ADD MSTORE SWAP1 DUP5 AND PUSH1 0xA0 DUP7 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP6 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x445 PUSH2 0x440 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D0D JUMP JUMPDEST PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x47F CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCC JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0xC58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D48 JUMP JUMPDEST PUSH2 0xC74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH2 0x4D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D74 JUMP JUMPDEST PUSH2 0xD52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x2DB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x501 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DF7 JUMP JUMPDEST PUSH2 0xE0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0xECF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x541 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0xEF1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x561 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E27 JUMP JUMPDEST PUSH2 0xF51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0xFD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x587 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E44 JUMP JUMPDEST PUSH2 0xFEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x138F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EDA JUMP JUMPDEST PUSH2 0x139E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x609 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FB9 JUMP JUMPDEST PUSH2 0x13A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x629 CALLDATASIZE PUSH1 0x4 PUSH2 0x305E JUMP JUMPDEST PUSH2 0x1520 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D48 JUMP JUMPDEST PUSH2 0x1558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x669 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0x15C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x689 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x1690 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21E PUSH2 0x6F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x741 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E27 JUMP JUMPDEST PUSH2 0x16B8 JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x754 CALLDATASIZE PUSH1 0x4 PUSH2 0x310C JUMP JUMPDEST PUSH2 0x1731 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x774 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D48 JUMP JUMPDEST PUSH2 0x1B04 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x79E JUMPI POP PUSH2 0x79E DUP3 PUSH2 0x1B72 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7C1 JUMPI PUSH2 0x7C1 PUSH2 0x2F0D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7EA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x888 JUMPI PUSH1 0x0 PUSH2 0x84A DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x810 JUMPI PUSH2 0x810 PUSH2 0x318E JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x865 JUMPI PUSH2 0x865 PUSH2 0x318E JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0x880 DUP2 PUSH2 0x31BA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x7F0 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x8A0 SWAP1 PUSH2 0x31D3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x8CC SWAP1 PUSH2 0x31D3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x919 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8EE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x919 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8FC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92E DUP3 PUSH2 0x1BC2 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x955 DUP3 PUSH2 0xEF1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x9C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x9E3 JUMPI POP PUSH2 0x9E3 DUP2 CALLER PUSH2 0x6F8 JUMP JUMPDEST PUSH2 0xA55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0xA5F DUP4 DUP4 PUSH2 0x1C21 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xA88 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xAC0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x1C8F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xB0A JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xAF6 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x321E JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xB02 DUP2 PUSH2 0x31BA JUMP JUMPDEST SWAP2 POP POP PUSH2 0xACA JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1A CALLER DUP3 PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x3236 JUMP JUMPDEST PUSH2 0xA5F DUP4 DUP4 DUP4 PUSH2 0x1E1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB4F DUP6 PUSH2 0xECF JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x120 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH5 0x100000000 DUP2 DIV DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP7 AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP5 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0xC07 JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xC36 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xC24 DUP4 DUP10 PUSH2 0x3284 JUMP JUMPDEST PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x32A3 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xA5F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1520 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xC65 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC6F SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xC7C PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP6 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD6F JUMPI PUSH2 0xD6F PUSH2 0x2F0D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD98 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE03 JUMPI PUSH2 0xDC7 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xDBB JUMPI PUSH2 0xDBB PUSH2 0x318E JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xEF1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDD9 JUMPI PUSH2 0xDD9 PUSH2 0x318E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0xDFB DUP2 PUSH2 0x31BA JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD9E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE13 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP5 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x79E JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x79E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xFDF PUSH2 0x1FB7 JUMP JUMPDEST PUSH2 0xFE9 PUSH1 0x0 PUSH2 0x2011 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xFF3 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x103D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x1093 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT PUSH2 0x10FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x1161 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1161 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x11E5 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE SWAP4 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP2 DUP5 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0xE0 DUP12 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP12 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP10 AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 DUP9 AND PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP8 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP2 DUP6 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x1385 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x8A0 SWAP1 PUSH2 0x31D3 JUMP JUMPDEST PUSH2 0xAC0 CALLER DUP4 DUP4 PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x13C9 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x13E3 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E3 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1446 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1469 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1473 DUP5 DUP5 PUSH2 0x2131 JUMP JUMPDEST PUSH2 0x147B PUSH2 0x2162 JUMP JUMPDEST PUSH2 0x1484 DUP7 PUSH2 0x16B8 JUMP JUMPDEST DUP2 PUSH2 0x148E DUP7 PUSH2 0x2191 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x149F SWAP3 SWAP2 SWAP1 PUSH2 0x32C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x14C3 SWAP3 SWAP2 SWAP1 PUSH2 0x2A5D JUMP JUMPDEST POP PUSH2 0x14D2 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1518 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x152A CALLER DUP4 PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0x1546 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x3236 JUMP JUMPDEST PUSH2 0x1552 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2209 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1560 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0xEC3 SWAP1 PUSH1 0x1 SWAP1 DUP7 SWAP1 PUSH2 0x3316 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1646 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1651 DUP4 PUSH2 0xECF JUMP JUMPDEST SWAP1 POP PUSH1 0xC9 PUSH2 0x165E DUP3 PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x1667 DUP6 PUSH2 0x2191 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1679 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x33DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16A4 SWAP2 SWAP1 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x16C0 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1725 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x172E DUP2 PUSH2 0x2011 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x176A SWAP1 DUP4 SWAP1 PUSH2 0x3447 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x17EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x184C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x194E JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x18DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1902 DUP12 DUP12 DUP15 DUP13 PUSH2 0x223C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1949 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x19B3 JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x19B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x19FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x1A3B PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x1A85 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1A7A SWAP1 DUP5 SWAP1 PUSH2 0x321E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1AA7 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1AA7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x1C8F JUMP JUMPDEST PUSH2 0x1AB1 CALLER DUP3 PUSH2 0x243C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B0C PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0xEC3 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0x3316 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1BA3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x79E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x79E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x172E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1C56 DUP3 PUSH2 0xEF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1CDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D2C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D31 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DA8 DUP4 PUSH2 0xEF1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1DEF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x1E13 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E08 DUP5 PUSH2 0x923 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E2E DUP3 PUSH2 0xEF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x1EFF PUSH1 0x0 DUP3 PUSH2 0x1C21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1F28 SWAP1 DUP5 SWAP1 PUSH2 0x3207 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1F56 SWAP1 DUP5 SWAP1 PUSH2 0x321E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x20C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2158 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH2 0xAC0 DUP3 DUP3 PUSH2 0x257E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2189 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH2 0xFE9 PUSH2 0x25CC JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x21B8 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4E DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x4E JUMPDEST DUP3 ISZERO PUSH2 0x21FA JUMPI PUSH1 0xA DUP1 DUP5 MOD PUSH1 0x30 ADD DUP3 DUP5 ADD MSTORE SWAP1 SWAP3 DIV SWAP2 PUSH1 0x0 NOT ADD PUSH2 0x21DB JUMP JUMPDEST PUSH1 0x4E DUP2 SWAP1 SUB SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2214 DUP5 DUP5 DUP5 PUSH2 0x1E1B JUMP JUMPDEST PUSH2 0x2220 DUP5 DUP5 DUP5 DUP5 PUSH2 0x25FC JUMP JUMPDEST PUSH2 0x1552 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2292 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x231F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x242E DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x26FA SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2492 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x24F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2520 SWAP1 DUP5 SWAP1 PUSH2 0x321E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST DUP2 MLOAD PUSH2 0x25B8 SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2A5D JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xA5F SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2A5D JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH2 0xFE9 CALLER PUSH2 0x2011 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x26F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x2640 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x350C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x267B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2678 SWAP2 DUP2 ADD SWAP1 PUSH2 0x3549 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x26D8 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x26A9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26AE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x26D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x1E13 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x1E13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2709 DUP6 DUP6 PUSH2 0x2716 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xE03 DUP2 PUSH2 0x2781 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x274C JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x2740 DUP8 DUP3 DUP6 DUP6 PUSH2 0x2937 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xC36 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x2775 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x276A DUP7 DUP4 DUP4 PUSH2 0x2A24 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xC36 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xC36 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2795 JUMPI PUSH2 0x2795 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x279D JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x27B1 JUMPI PUSH2 0x27B1 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x27FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2812 JUMPI PUSH2 0x2812 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x285F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2873 JUMPI PUSH2 0x2873 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x28CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x28DF JUMPI PUSH2 0x28DF PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x172E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x296E JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x2A1B JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x2986 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2997 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2A14 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x2A1B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x2A41 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x321E JUMP JUMPDEST SWAP1 POP PUSH2 0x2A4F DUP8 DUP3 DUP9 DUP6 PUSH2 0x2937 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2A69 SWAP1 PUSH2 0x31D3 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2A8B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2AD1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2AA4 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2AD1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2AD1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2AD1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2AB6 JUMP JUMPDEST POP PUSH2 0x2ADD SWAP3 SWAP2 POP PUSH2 0x2AE1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2ADD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2AE2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x172E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B29 DUP2 PUSH2 0x2AF6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2B8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BB4 DUP7 DUP3 DUP8 ADD PUSH2 0x2B30 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2BFB JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2BDD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C22 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C0A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1552 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2C4B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2C07 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B29 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2C33 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x172E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CBE DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2CEC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2CFC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2D43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2D6B PUSH1 0x20 DUP5 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DAA DUP6 DUP3 DUP7 ADD PUSH2 0x2B30 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2BFB JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2DD2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E1C DUP2 PUSH2 0x2C8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B29 DUP2 PUSH2 0x2C8B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2E61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2E6C DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x2E81 PUSH1 0x40 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP6 POP PUSH2 0x2E8F PUSH1 0x60 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP5 POP PUSH2 0x2E9D PUSH1 0x80 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP4 POP PUSH2 0x2EAB PUSH1 0xA0 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP3 POP PUSH2 0x2EB9 PUSH1 0xC0 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x2EC9 DUP2 PUSH2 0x2C8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2EED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2EF8 DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2E1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2F3E JUMPI PUSH2 0x2F3E PUSH2 0x2F0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2F66 JUMPI PUSH2 0x2F66 PUSH2 0x2F0D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2F7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2FAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B29 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2F23 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2FD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2FDC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3000 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x300C DUP10 DUP4 DUP11 ADD PUSH2 0x2F99 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3022 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x302E DUP10 DUP4 DUP11 ADD PUSH2 0x2F99 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3051 DUP9 DUP3 DUP10 ADD PUSH2 0x2F99 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x307F DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x308F DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x30B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x30C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30D2 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2F23 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x30FC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E1C DUP2 PUSH2 0x2C8B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x31CC JUMPI PUSH2 0x31CC PUSH2 0x31A4 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x31E7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB0A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3219 JUMPI PUSH2 0x3219 PUSH2 0x31A4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3231 JUMPI PUSH2 0x3231 PUSH2 0x31A4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x329E JUMPI PUSH2 0x329E PUSH2 0x31A4 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x32C0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x32D7 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x2C07 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x32EB DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x2C07 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x3338 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x335C JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x337D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3391 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x33A2 JUMPI PUSH2 0x33CF JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x33CF JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x33C7 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x33AE JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E7 DUP3 DUP7 PUSH2 0x3342 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x33F7 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x2C07 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3414 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2C07 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x342D DUP3 DUP5 PUSH2 0x3342 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3466 JUMPI PUSH2 0x3466 PUSH2 0x31A4 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x353F SWAP1 DUP4 ADD DUP5 PUSH2 0x2C33 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x355B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B29 DUP2 PUSH2 0x2AF6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xA9 SGT RETURNDATACOPY DUP4 0xDD BASEFEE DUP7 0x4D 0xB5 0xE3 NOT 0xE8 PUSH21 0x482E05749F10A3C5EA8A6E2B1D24574F784A64736F PUSH13 0x634300080E0033000000000000 ",
              "sourceMap": "2405:18648:39:-:0;;;5993:130;;;;;;;;;-1:-1:-1;6046:69:39;;;6057:42;6046:69;;;188:25:46;6101:13:39;229:18:46;;;222:34;;;;161:18;;6046:69:39;;;-1:-1:-1;;6046:69:39;;;;;;;;;6036:80;;6046:69;6036:80;;;;6017:99;;2405:18648;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@__ERC721_init_891": {
                  "entryPoint": 8497,
                  "id": 891,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__ERC721_init_unchained_909": {
                  "entryPoint": 9598,
                  "id": 909,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__Ownable_init_26": {
                  "entryPoint": 8546,
                  "id": 26,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Ownable_init_unchained_37": {
                  "entryPoint": 9676,
                  "id": 37,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 7201,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 9724,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_checkOwner_68": {
                  "entryPoint": 8119,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getBitForTicketNumber_9042": {
                  "entryPoint": null,
                  "id": 9042,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 7580,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_1423": {
                  "entryPoint": 9276,
                  "id": 1423,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 7106,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 8713,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_sendFunds_8887": {
                  "entryPoint": 7311,
                  "id": 8887,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 8291,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_throwError_4335": {
                  "entryPoint": 10113,
                  "id": 4335,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 8209,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 7707,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 2378,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 3921,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@buyEdition_8388": {
                  "entryPoint": 5937,
                  "id": 8388,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@checkTicketNumbers_8853": {
                  "entryPoint": 1956,
                  "id": 8853,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@contractURI_8593": {
                  "entryPoint": 5776,
                  "id": 8593,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@createEdition_8210": {
                  "entryPoint": 4075,
                  "id": 8210,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@depositedForEdition_7975": {
                  "entryPoint": null,
                  "id": 7975,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@editionCount_8723": {
                  "entryPoint": 3160,
                  "id": 8723,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@editions_7967": {
                  "entryPoint": null,
                  "id": 7967,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1121": {
                  "entryPoint": 2339,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_8974": {
                  "entryPoint": 8764,
                  "id": 8974,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_8111": {
                  "entryPoint": 5033,
                  "id": 8111,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 2193,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 3825,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownersOfTokenIds_8797": {
                  "entryPoint": 3410,
                  "id": 8797,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@recover_4427": {
                  "entryPoint": 9978,
                  "id": 4427,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 4055,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@royaltyInfo_8652": {
                  "entryPoint": 2881,
                  "id": 8652,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 3133,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 5408,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 5022,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setEndTime_8470": {
                  "entryPoint": 5464,
                  "id": 8470,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setPermissionedQuantity_8539": {
                  "entryPoint": 3188,
                  "id": 8539,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSignerAddress_8503": {
                  "entryPoint": 3595,
                  "id": 8503,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setStartTime_8445": {
                  "entryPoint": 6916,
                  "id": 8445,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_8710": {
                  "entryPoint": 1913,
                  "id": 8710,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 7026,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 5007,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_13591": {
                  "entryPoint": 8593,
                  "id": 13591,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenToEdition_8749": {
                  "entryPoint": 3791,
                  "id": 8749,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_8577": {
                  "entryPoint": 5575,
                  "id": 8577,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalSupply_8686": {
                  "entryPoint": 2756,
                  "id": 8686,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 2832,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 5816,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_4400": {
                  "entryPoint": 10006,
                  "id": 4400,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_4474": {
                  "entryPoint": 10788,
                  "id": 4474,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_4585": {
                  "entryPoint": 10551,
                  "id": 4585,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@withdrawFunds_8420": {
                  "entryPoint": 2660,
                  "id": 8420,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawnForEdition_7979": {
                  "entryPoint": null,
                  "id": 7979,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 11056,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 12067,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_string": {
                  "entryPoint": 12185,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 11815,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address": {
                  "entryPoint": 11844,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 8
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 12510,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 11468,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 12382,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 11994,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 11424,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 12217,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 11636,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 11020,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 13641,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 11378,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": 11767,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 11125,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256": {
                  "entryPoint": 12556,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 11533,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint32": {
                  "entryPoint": 11592,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint32": {
                  "entryPoint": 11567,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 11315,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_storage": {
                  "entryPoint": 13122,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12997,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 13275,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 13345,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 10,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 13580,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11201,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_enum$_TimeType_$7935_t_uint256__to_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": 13078,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11359,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 13498,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 13423,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12854,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 12830,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint32": {
                  "entryPoint": 13383,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 12963,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 12932,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 12807,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 11271,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 12755,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 12730,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 12708,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 13056,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 12686,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 12045,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 11403,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 10998,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:35525:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "676:283:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "725:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "734:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "737:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "727:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "727:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "727:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "704:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "712:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "700:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "700:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "696:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "696:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "689:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "686:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "750:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "773:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "760:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "760:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "823:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "832:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "835:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "825:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "825:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "825:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "795:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "803:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "789:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "864:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "872:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "860:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "946:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "949:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "900:6:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "912:1:46",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "915:6:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "908:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "908:14:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "896:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "896:27:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "925:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "892:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "892:38:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "932:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "889:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "889:47:46"
                              },
                              "nodeType": "YulIf",
                              "src": "886:67:46"
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "639:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "647:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "655:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "665:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:367:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1086:383:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1132:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1141:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1144:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1134:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1134:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1134:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1103:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1103:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1128:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1099:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1099:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1096:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1157:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1180:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1167:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1167:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1157:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1199:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1230:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1241:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1226:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1226:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1213:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1213:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1203:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1288:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1297:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1300:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1290:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1290:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1290:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1260:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1268:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1257:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1254:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1313:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1392:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1377:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1377:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1401:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1339:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1339:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1317:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1327:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1418:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1428:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1418:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1445:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1455:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1036:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1047:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1059:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1067:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1075:6:46",
                            "type": ""
                          }
                        ],
                        "src": "964:505:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1619:497:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1629:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1639:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1633:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1668:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1679:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1664:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1664:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1709:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1691:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1691:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1691:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1721:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "1732:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "1725:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1747:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1767:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1761:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1761:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1751:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1790:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1798:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1783:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1783:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1783:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1814:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1825:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1836:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1821:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1821:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1814:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1866:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1874:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1862:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1862:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1852:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1886:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1895:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1890:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:136:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "1975:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "srcPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2000:6:46"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1994:5:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1994:13:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "1987:6:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1987:21:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "1980:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1980:29:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1968:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1968:42:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1968:42:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2023:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2034:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2030:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2030:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2023:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2055:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2069:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2077:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2065:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2065:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2055:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1916:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1919:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1913:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1913:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1927:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1929:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1938:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1941:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1934:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1934:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1909:3:46",
                                "statements": []
                              },
                              "src": "1905:185:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2099:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "2107:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2099:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1588:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1599:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1610:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1474:642:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2174:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2184:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2193:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2188:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2253:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2278:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2283:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2274:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2274:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2297:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2302:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2293:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2293:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2287:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2287:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2267:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2267:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2214:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2217:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2211:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2211:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2225:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2227:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2236:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2239:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2232:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2232:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2227:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2207:3:46",
                                "statements": []
                              },
                              "src": "2203:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2342:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2355:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "2360:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2351:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2351:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2369:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2344:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2344:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2331:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2334:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2328:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2328:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2325:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2152:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "2157:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2162:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2121:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2434:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2444:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2464:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2458:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2458:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2448:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2486:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2491:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2479:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2479:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2479:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2533:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2540:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2529:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2529:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2551:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2556:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2547:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2547:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2563:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2507:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2507:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2507:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2579:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2594:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2607:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2615:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2603:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2603:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2624:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2620:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2620:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2599:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2599:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2590:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2590:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2631:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2586:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2586:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2579:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2411:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2418:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2426:3:46",
                            "type": ""
                          }
                        ],
                        "src": "2384:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2768:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2785:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2796:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2778:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2778:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2778:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2808:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2834:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2846:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2857:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2842:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2842:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2816:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2816:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2808:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2737:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2748:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2759:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2647:220:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2942:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2988:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2997:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3000:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2990:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2990:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2990:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2963:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2972:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2959:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2959:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2984:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2955:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2955:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2952:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3013:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3036:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3023:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3023:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3013:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2908:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2919:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2931:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2872:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3158:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3168:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3180:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3191:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3176:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3176:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3168:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3210:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3225:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3241:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3246:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3237:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3237:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3250:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3233:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3233:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3221:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3221:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3203:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3203:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3203:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3127:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3138:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3149:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3057:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3310:86:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3374:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3383:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3386:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3376:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3376:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3376:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3333:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3344:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3359:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3364:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3355:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3355:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3368:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "3351:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3351:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3340:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3340:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3330:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3330:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3323:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3323:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3320:70:46"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3299:5:46",
                            "type": ""
                          }
                        ],
                        "src": "3265:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3488:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3534:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3543:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3546:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3536:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3536:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3536:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3509:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3518:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3505:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3505:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3530:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3501:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3501:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3498:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3559:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3585:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3572:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3572:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3563:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3629:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3604:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3604:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3604:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3644:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3654:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3644:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3668:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3695:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3706:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3691:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3678:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3678:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3668:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3446:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3457:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3469:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3477:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3401:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3822:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3832:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3844:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3855:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3840:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3840:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3832:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3874:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3885:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3867:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3867:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3867:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3791:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3802:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3813:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3721:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4007:352:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4053:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4062:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4065:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4055:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4055:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4055:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4028:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4037:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4024:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4024:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4049:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4020:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4020:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4017:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4078:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4104:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4091:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4091:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4082:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4148:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4123:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4123:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4123:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4163:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4173:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4163:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4187:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4219:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4230:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4215:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4215:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4202:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4202:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4191:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4268:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4243:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4243:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4243:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4285:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4295:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4285:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4311:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4338:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4349:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4334:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4334:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4321:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4321:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4311:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3957:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3968:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3980:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3988:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3996:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3903:456:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4693:565:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4703:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4715:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4726:3:46",
                                    "type": "",
                                    "value": "288"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4711:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4711:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4703:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4739:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4757:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4762:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4753:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4753:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4766:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4749:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4749:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4743:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4784:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4799:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4807:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4795:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4795:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4777:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4777:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4777:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4831:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4842:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4827:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4827:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4847:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4820:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4820:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4820:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4863:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4873:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4867:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4903:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4914:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4899:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4899:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4923:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4931:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4919:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4919:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4892:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4892:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4892:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4955:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4966:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4951:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4951:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "4975:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4983:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4971:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4971:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4944:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4944:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4944:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5007:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5018:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5003:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5003:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "5028:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5036:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5024:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5024:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4996:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4996:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4996:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5060:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5071:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5056:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5056:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "5081:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5089:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5077:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5077:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5049:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5049:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5049:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5113:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5124:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5109:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5109:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5134:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5142:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5130:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5130:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5102:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5102:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5102:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5166:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5177:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5162:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5162:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5187:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5195:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5183:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5183:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5155:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5155:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5155:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5219:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5230:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5215:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5215:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "5240:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5248:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5236:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5208:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5208:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5208:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4598:9:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "4609:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "4617:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4625:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4633:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4641:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4649:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4657:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4665:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4673:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4684:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4364:894:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5350:161:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5396:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5405:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5408:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5398:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5398:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5398:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5371:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5380:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5367:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5367:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5392:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5363:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5363:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5360:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5421:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5444:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5431:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5431:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5421:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5463:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5490:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5501:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5486:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5486:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5473:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5473:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5463:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5308:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5319:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5331:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5339:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5263:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5645:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5655:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5667:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5678:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5663:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5663:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5655:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5697:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5712:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5728:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5733:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5724:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5724:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5737:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5720:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5720:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5708:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5708:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5690:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5690:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5690:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5761:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5772:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5757:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5757:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5777:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5750:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5750:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5750:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5606:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5617:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5625:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5636:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5516:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5843:115:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5853:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5875:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5862:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5862:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "5853:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5936:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5945:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5948:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5938:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5938:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5938:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5904:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "5915:5:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5922:10:46",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5911:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5911:22:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5901:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5901:33:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5894:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5894:41:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5891:61:46"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "5822:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5833:5:46",
                            "type": ""
                          }
                        ],
                        "src": "5795:163:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6049:166:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6095:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6104:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6107:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6097:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6097:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6097:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6070:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6079:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6066:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6066:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6091:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6062:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6062:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6059:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6120:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6143:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6130:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6130:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6120:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6162:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6194:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6205:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6190:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6190:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "6172:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6172:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6162:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6007:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6018:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6030:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6038:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5963:252:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6325:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6371:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6380:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6383:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6373:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6373:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6373:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6346:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6355:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6342:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6342:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6367:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6338:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6338:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6335:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6396:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6423:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6410:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6410:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6400:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6476:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6485:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6488:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6478:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6478:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6478:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6448:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6456:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6445:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6445:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6442:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6501:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6569:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6580:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6565:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6565:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6589:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "6527:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6527:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6505:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6515:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6606:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "6616:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6606:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6633:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "6643:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6633:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6283:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6294:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6306:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6314:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6220:437:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6813:507:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6823:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6833:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6827:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6844:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6862:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6873:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6858:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6858:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6848:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6892:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6903:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6885:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6885:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6885:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6915:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "6926:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "6919:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6941:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6961:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6955:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6955:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6945:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6984:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6992:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6977:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6977:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6977:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7008:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7019:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7030:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7015:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7015:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "7008:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7042:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7060:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7068:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7056:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7056:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7046:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7080:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7089:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7084:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7148:146:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7169:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7184:6:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "7178:5:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7178:13:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7201:3:46",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7206:1:46",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7197:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7197:11:46"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "7210:1:46",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "7193:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7193:19:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "7174:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7174:39:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7162:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7162:52:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7162:52:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7227:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7238:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7243:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7234:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7234:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7227:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7259:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "7273:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7281:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7269:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7269:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7259:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7110:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7113:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7107:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7107:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7121:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7123:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7132:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7135:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7128:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7128:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7123:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7103:3:46",
                                "statements": []
                              },
                              "src": "7099:195:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7303:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "7311:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7303:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6782:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6793:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6804:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6662:658:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7412:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7458:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7467:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7470:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7460:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7460:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7460:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7433:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7442:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7429:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7429:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7454:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7425:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7425:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7422:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7483:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7506:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7493:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7493:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7483:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7525:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7555:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7566:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7551:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7551:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7538:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7538:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7529:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7604:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7579:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7579:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7579:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7619:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7629:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7619:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7370:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7381:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7393:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7401:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7325:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7715:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7761:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7770:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7773:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7763:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7763:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7763:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7736:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7745:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7732:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7732:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7757:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7728:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7728:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7725:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7786:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7812:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7799:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7799:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7790:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7856:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7831:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7831:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7831:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7871:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7881:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7871:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7681:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7692:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7704:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7645:247:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8089:637:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8136:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8145:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8148:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8138:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8138:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8138:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8110:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8119:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8106:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8106:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8131:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8102:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8102:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8099:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8161:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8187:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8174:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8174:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8165:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8231:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8206:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8206:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8206:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8246:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8256:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8246:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8270:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8297:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8308:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8293:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8293:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8280:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8280:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8270:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8321:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8353:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8364:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8349:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8349:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "8331:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8331:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8321:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8377:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8409:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8420:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8405:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8405:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "8387:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8387:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8377:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8433:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8465:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8476:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8461:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8461:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "8443:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8443:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8433:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8490:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8522:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8533:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8518:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8518:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "8500:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8500:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "8490:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8547:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8579:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8590:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8575:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8575:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "8557:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8557:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8547:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8604:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8636:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8647:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8632:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8632:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8619:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8619:33:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8608:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8686:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8661:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8661:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8661:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8703:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8713:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "8703:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7999:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8010:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8022:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8030:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8038:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8046:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8054:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "8062:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "8070:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "8078:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7897:829:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8815:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8861:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8870:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8873:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8863:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8863:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8863:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8836:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8845:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8832:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8832:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8857:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8828:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8828:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8825:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8886:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8912:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8899:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8899:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8890:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8956:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8931:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8931:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8931:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8971:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8981:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8971:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8995:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9027:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9038:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9023:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9023:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9010:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9010:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8999:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9099:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9108:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9111:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9101:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9101:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9101:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9064:7:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "9087:7:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "9080:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9080:15:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9073:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9073:23:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "9061:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9061:36:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9054:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9054:44:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9051:64:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9124:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "9134:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9124:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8773:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8784:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8796:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8804:6:46",
                            "type": ""
                          }
                        ],
                        "src": "8731:416:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9184:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9201:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9208:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9213:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "9204:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9204:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9194:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9194:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9194:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9241:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9244:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9234:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9234:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9234:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9265:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9268:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "9258:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9258:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9258:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "9152:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9359:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9369:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9379:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9373:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9424:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "9426:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9426:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9426:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9412:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9420:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9409:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9409:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9406:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9455:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9469:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "9465:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9465:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9459:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9481:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9501:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9495:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9495:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9485:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9513:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9535:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9559:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "9567:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9555:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9555:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "9572:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "9551:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9551:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9577:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9547:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9547:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9582:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9543:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9543:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9531:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9531:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9517:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9645:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "9647:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9647:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9647:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9604:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9616:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9601:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9601:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9624:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9636:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9621:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9621:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "9598:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9598:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9595:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9683:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9687:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9676:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9676:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9676:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9707:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "9716:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "9707:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9738:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9746:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9731:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9731:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9731:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9791:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9800:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9803:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9793:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9793:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9793:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "9772:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "9777:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9768:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9768:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9786:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9765:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9765:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9762:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9833:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9841:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9829:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9848:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9853:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "9816:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9816:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9816:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "9884:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "9892:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9880:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9880:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9901:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9876:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9876:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9908:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9869:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9869:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9869:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "9328:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "9333:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9341:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9349:5:46",
                            "type": ""
                          }
                        ],
                        "src": "9284:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9974:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10023:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10032:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10035:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10025:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10025:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10025:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10002:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10010:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9998:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9998:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "10017:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9994:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9994:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9987:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9987:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9984:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10048:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10096:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10104:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10092:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10092:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10124:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "10111:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10111:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "10133:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10057:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10057:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "10048:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "9948:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9956:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9964:5:46",
                            "type": ""
                          }
                        ],
                        "src": "9921:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10316:780:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10363:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10372:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10375:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10365:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10365:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10365:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10337:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10346:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10333:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10333:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10358:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10329:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10329:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10326:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10388:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10414:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10401:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10401:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10392:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10458:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10433:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10433:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10433:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10473:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10483:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10473:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10497:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10524:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10535:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10520:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10520:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10507:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10507:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10497:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10548:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10579:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10590:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10575:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10575:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10562:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10562:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10552:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10603:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10613:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10607:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10658:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10667:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10670:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10660:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10660:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10660:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10646:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10654:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10643:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10643:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10640:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10683:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10715:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10726:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10711:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10711:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10735:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10693:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10693:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10683:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10752:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10785:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10796:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10781:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10781:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10768:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10768:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10756:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10829:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10838:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10841:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10831:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10831:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10831:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10815:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10825:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10812:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10812:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10809:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10854:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10886:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10897:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10882:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10882:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10908:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10864:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10864:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10854:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10925:49:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10958:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10969:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10954:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10954:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10941:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10941:33:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10929:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11003:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11012:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11015:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11005:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11005:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11005:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10989:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10999:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10986:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10986:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10983:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11028:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11060:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11071:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11056:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11056:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11082:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "11038:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11038:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11028:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10250:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10261:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10273:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10281:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10289:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10297:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10305:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10148:948:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11231:665:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11278:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11287:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11290:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11280:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11280:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11280:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11252:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11261:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11248:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11248:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11273:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11244:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11244:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11241:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11303:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11329:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11316:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11316:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11307:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11373:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11348:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11348:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11348:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11388:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11398:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11388:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11412:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11444:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11455:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11440:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11440:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11427:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11427:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11416:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11493:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11468:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11468:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11468:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11510:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11520:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11510:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11536:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11563:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11574:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11559:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11559:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11546:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11546:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11536:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11587:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11618:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11629:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11614:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11614:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11601:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11601:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11591:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11676:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11685:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11688:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11678:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11678:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11678:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11648:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11656:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11645:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11645:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11642:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11701:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11715:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11726:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11711:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11711:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11705:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11781:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11790:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11793:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11783:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11783:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11783:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "11760:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11764:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11756:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11756:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11771:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11752:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11752:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11745:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11745:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11742:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11806:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11855:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11859:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11851:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11851:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11877:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "11864:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11864:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11882:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "11816:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11816:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11806:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11173:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11184:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11196:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11204:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11212:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11220:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11101:795:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11988:301:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12034:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12043:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12046:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12036:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12036:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12036:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12009:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12018:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12005:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12005:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12030:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12001:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12001:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11998:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12059:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12085:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12072:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12072:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12063:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12129:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12104:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12104:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12104:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12144:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12154:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12144:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12168:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12200:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12211:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12196:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12196:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12183:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12183:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12172:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12249:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12224:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12224:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12224:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12266:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12276:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12266:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11946:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11957:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11969:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11977:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11901:388:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12417:604:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12463:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12472:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12475:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12465:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12465:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12465:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12438:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12447:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12434:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12434:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12459:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12430:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12430:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12427:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12488:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12511:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12498:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12498:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12488:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12530:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12561:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12572:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12557:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12557:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12544:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12544:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12534:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12585:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12595:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12589:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12640:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12649:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12652:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12642:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12642:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12642:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12628:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12636:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12625:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12625:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12622:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12665:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12679:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12690:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12675:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12675:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "12669:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12745:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12754:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12757:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12747:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12747:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12747:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12724:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12728:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12720:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12720:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12735:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12716:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12716:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12709:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12709:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12706:55:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12770:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12797:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12784:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12784:16:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12774:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12827:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12836:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12839:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12829:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12829:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12829:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12815:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12823:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12812:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12812:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12809:34:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12893:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12902:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12905:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12895:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12895:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12895:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12866:2:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "12870:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12862:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12862:15:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12879:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12858:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12858:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12884:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12855:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12855:37:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12852:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12918:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12932:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12936:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12928:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12928:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12918:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12948:16:46",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "12958:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "12948:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12973:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13000:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13011:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12996:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12996:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12983:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12983:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "12973:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12359:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12370:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12382:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12390:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12398:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12406:6:46",
                            "type": ""
                          }
                        ],
                        "src": "12294:727:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13058:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13075:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13082:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13087:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "13078:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13078:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13068:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13068:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13068:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13115:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13118:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13108:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13108:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13108:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13139:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13142:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "13132:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13132:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13132:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "13026:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13190:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13207:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13214:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13219:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "13210:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13210:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13200:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13200:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13200:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13247:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13250:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13240:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13240:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13240:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13271:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13274:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "13264:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13264:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13264:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "13158:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13337:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13368:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "13370:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13370:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13370:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13353:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13364:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "13360:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13360:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "13350:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13350:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13347:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13399:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13410:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13417:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13406:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13406:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "13399:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "13319:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "13329:3:46",
                            "type": ""
                          }
                        ],
                        "src": "13290:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13485:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13495:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13509:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "13512:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "13505:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13505:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "13495:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13526:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "13556:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13562:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "13552:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13552:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "13530:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13603:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13605:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "13619:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13627:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "13615:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13615:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "13605:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "13583:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13576:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13576:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13573:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13693:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13714:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13721:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13726:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "13717:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13717:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13707:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13707:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13707:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13758:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13761:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13751:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13751:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13751:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13786:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13789:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13779:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13779:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13779:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "13649:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "13672:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13680:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13669:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13669:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "13646:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13646:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13643:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "13465:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "13474:6:46",
                            "type": ""
                          }
                        ],
                        "src": "13430:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13989:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14006:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14017:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13999:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13999:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13999:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14040:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14051:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14036:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14036:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14056:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14029:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14029:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14029:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14079:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14090:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14075:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14075:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14095:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14068:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14068:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14068:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14150:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14161:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14146:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14146:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14166:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14139:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14139:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14139:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14179:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14191:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14202:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14187:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14187:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14179:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13966:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13980:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13815:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14391:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14408:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14419:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14401:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14401:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14401:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14442:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14453:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14438:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14438:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14458:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14431:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14431:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14431:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14481:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14492:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14477:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14477:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14497:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14470:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14470:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14470:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14552:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14563:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14548:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14548:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14568:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14541:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14541:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14541:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14610:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14622:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14633:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14618:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14618:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14610:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14368:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14382:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14217:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14697:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14719:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14721:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14721:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14721:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14713:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14716:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14710:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14710:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14707:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14750:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14762:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14765:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "14758:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14758:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "14750:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14679:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14682:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "14688:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14648:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14826:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14853:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14855:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14855:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14855:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14842:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "14849:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "14845:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14845:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14839:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14839:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14836:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14884:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "14895:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "14898:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14891:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14891:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "14884:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14809:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14812:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "14818:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14778:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15085:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15102:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15113:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15095:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15095:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15095:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15136:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15147:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15132:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15132:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15152:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15125:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15125:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15125:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15175:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15186:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15171:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15171:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15191:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15164:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15164:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15164:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15246:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15257:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15242:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15242:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15262:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15235:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15235:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15235:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15288:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15300:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15311:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15296:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15296:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15288:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15062:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15076:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14911:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15378:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15437:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15439:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15439:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15439:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "15409:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "15402:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15402:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "15395:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15395:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "15417:1:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15428:1:46",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "15424:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "15424:6:46"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "15432:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "15420:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15420:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15414:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15414:21:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "15391:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15391:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15388:71:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15468:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15483:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15486:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "15479:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15479:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "15468:7:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15357:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15360:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "15366:7:46",
                            "type": ""
                          }
                        ],
                        "src": "15326:168:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15531:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15548:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15555:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15560:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "15551:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15551:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15541:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15541:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15541:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15588:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15591:4:46",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15581:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15581:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15581:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15612:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15615:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "15605:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15605:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15605:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "15499:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15677:171:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15708:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15729:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15736:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15741:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "15732:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15732:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15722:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15722:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15722:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15773:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15776:4:46",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15766:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15766:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15766:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15801:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15804:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15794:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15794:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15794:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15697:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15690:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15690:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15687:132:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15828:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15837:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15840:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "15833:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15833:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "15828:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15662:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15665:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "15671:1:46",
                            "type": ""
                          }
                        ],
                        "src": "15631:217:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16027:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16044:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16055:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16037:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16037:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16037:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16078:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16089:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16074:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16074:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16094:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16067:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16067:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16067:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16117:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16128:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16113:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16113:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16133:28:46",
                                    "type": "",
                                    "value": "Edition must have a signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16106:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16106:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16106:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16171:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16183:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16194:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16179:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16179:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16171:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16004:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16018:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15853:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16335:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16345:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16357:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16368:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16353:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16353:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16345:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16387:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16398:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16380:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16380:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16380:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16425:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16436:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16421:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16421:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16445:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16453:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16441:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16441:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16414:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16414:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16414:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16296:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16307:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16315:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16326:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16208:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16650:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16667:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16678:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16660:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16660:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16660:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16701:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16712:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16697:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16697:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16717:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16690:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16690:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16690:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16740:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16751:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16736:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16736:18:46"
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16756:28:46",
                                    "type": "",
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16729:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16729:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16729:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16794:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16806:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16817:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16802:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16802:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16794:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16627:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16641:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16476:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17005:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17022:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17033:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17015:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17015:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17056:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17067:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17052:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17052:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17072:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17045:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17045:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17045:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17095:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17106:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17091:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17091:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17111:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17084:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17084:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17084:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17147:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17159:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17170:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17155:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17155:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17147:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16982:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16996:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16831:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17358:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17375:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17386:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17368:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17368:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17368:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17409:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17420:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17405:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17405:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17425:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17398:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17398:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17448:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17459:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17444:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17444:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17464:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17437:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17437:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17437:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17519:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17530:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17515:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17515:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17535:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17508:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17508:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17508:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17556:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17568:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17579:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17564:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17564:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17556:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17335:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17349:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17184:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17768:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17785:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17796:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17778:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17778:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17778:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17819:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17830:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17815:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17815:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17835:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17808:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17808:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17808:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17858:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17869:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17854:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17854:18:46"
                                  },
                                  {
                                    "hexValue": "4d75737420736574207175616e74697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17874:19:46",
                                    "type": "",
                                    "value": "Must set quantity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17847:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17847:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17847:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17903:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17915:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17926:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17911:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17911:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17903:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17745:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17759:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17594:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18114:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18131:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18142:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18124:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18124:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18124:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18165:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18176:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18161:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18161:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18181:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18154:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18154:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18154:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18204:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18215:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18200:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18200:18:46"
                                  },
                                  {
                                    "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18220:27:46",
                                    "type": "",
                                    "value": "Must set fundingRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18193:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18193:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18193:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18257:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18269:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18280:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18265:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18265:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18257:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18091:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18105:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17940:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18468:230:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18485:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18496:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18478:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18478:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18478:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18519:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18530:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18515:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18515:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18535:2:46",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18508:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18508:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18508:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18558:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18569:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18554:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18554:18:46"
                                  },
                                  {
                                    "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e207374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18574:34:46",
                                    "type": "",
                                    "value": "End time must be greater than st"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18547:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18547:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18547:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18629:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18640:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18625:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18625:18:46"
                                  },
                                  {
                                    "hexValue": "6172742074696d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18645:10:46",
                                    "type": "",
                                    "value": "art time"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18618:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18618:38:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18618:38:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18665:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18677:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18688:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18673:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18673:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18665:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18445:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18459:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18294:404:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18998:512:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19008:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19020:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19031:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19016:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19016:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19008:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19044:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19062:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19067:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "19058:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19058:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19071:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "19054:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19054:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19048:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19089:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19104:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19112:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19100:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19100:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19082:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19082:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19082:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19136:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19147:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19132:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19132:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19152:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19125:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19125:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19125:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19168:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19178:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "19172:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19208:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19219:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19204:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19204:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19228:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19236:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19224:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19224:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19197:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19197:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19197:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19260:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19271:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19256:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19256:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "19280:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19288:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19276:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19276:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19249:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19249:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19249:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19312:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19323:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19308:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19308:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "19333:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19341:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19329:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19329:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19301:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19301:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19301:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19365:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19376:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19361:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19361:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "19386:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19394:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19382:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19382:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19354:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19354:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19354:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19418:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19429:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19414:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19414:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "19439:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19447:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19435:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19435:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19407:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19407:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19407:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19471:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19482:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19467:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19467:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "19492:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19500:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19488:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19488:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19460:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19460:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19460:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18911:9:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "18922:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "18930:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "18938:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18946:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18954:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18962:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18970:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18978:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18989:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18703:807:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19689:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19706:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19717:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19699:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19699:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19699:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19740:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19751:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19736:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19736:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19756:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19729:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19729:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19729:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19779:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19790:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19775:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19775:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19795:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19768:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19768:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19768:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19850:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19861:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19846:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19846:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19866:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19839:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19839:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19839:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19892:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19904:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19915:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19900:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19900:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19892:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19666:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19680:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19515:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20218:345:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20228:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20248:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20242:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20242:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "20232:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20290:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20298:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20286:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20286:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "20305:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "20310:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "20264:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20264:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20264:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20326:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "20343:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "20348:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20339:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20339:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20330:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20364:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20386:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20380:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20380:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20368:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20428:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20436:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20424:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20424:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20443:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20450:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "20402:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20402:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20402:57:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20468:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20485:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20492:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20481:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20481:20:46"
                              },
                              "variables": [
                                {
                                  "name": "end_2",
                                  "nodeType": "YulTypedName",
                                  "src": "20472:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20517:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20524:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20510:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20510:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20510:18:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20537:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20548:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20555:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20544:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20544:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "20537:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "20186:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20191:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20199:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "20210:3:46",
                            "type": ""
                          }
                        ],
                        "src": "19930:633:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20675:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20685:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20697:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20708:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20693:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20693:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20685:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20727:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20742:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20750:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20738:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20738:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20720:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20720:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20720:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20644:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20655:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20666:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20568:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20799:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20816:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20823:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20828:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "20819:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20819:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20809:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20809:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20809:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20856:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20859:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20849:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20849:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20849:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20880:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20883:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "20873:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20873:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20873:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "20767:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21039:272:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21049:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21061:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21072:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21057:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21057:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21049:4:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21117:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21138:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "21145:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "21150:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "21141:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21141:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21131:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21131:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21131:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21182:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21185:4:46",
                                          "type": "",
                                          "value": "0x21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21175:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21175:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21175:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21210:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21213:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21203:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21203:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21203:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "21097:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21105:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "21094:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21094:13:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21087:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21087:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "21084:144:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21244:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21255:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21237:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21237:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21237:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21282:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21293:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21278:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21278:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21298:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21271:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21271:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21271:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_TimeType_$7935_t_uint256__to_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21000:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21011:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21019:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21030:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20899:412:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21490:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21507:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21518:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21500:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21500:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21500:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21541:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21552:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21537:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21557:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21530:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21530:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21530:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21580:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21591:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21576:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21576:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21596:34:46",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21569:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21569:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21569:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21651:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21662:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21647:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21647:18:46"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21667:17:46",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21640:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21640:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21640:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21694:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21706:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21717:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21702:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21702:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21694:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21467:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21481:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21316:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21788:65:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21805:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "21808:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21798:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21798:14:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21798:14:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21821:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21839:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21842:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "21829:9:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21829:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "21821:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "21771:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "21779:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21732:121:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21916:915:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21926:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21949:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21943:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21943:12:46"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "21930:9:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21964:15:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21978:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "21968:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21988:11:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21998:1:46",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21992:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22008:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22022:2:46"
                                  },
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "22026:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "22018:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22018:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "22008:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22045:44:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "22075:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22086:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "22071:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22071:18:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "22049:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22128:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "22130:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "22144:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22152:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "22140:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22140:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22130:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "22108:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22101:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22101:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "22098:61:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22168:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22178:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22172:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22239:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22260:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "22267:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "22272:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "22263:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22263:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "22253:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22253:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22253:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22304:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22307:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "22297:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22297:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22297:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22332:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22335:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22325:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22325:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22325:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "22195:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22218:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22226:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "22215:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22215:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "22192:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22192:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "22189:161:46"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "22400:97:46",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "22421:3:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22430:9:46"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "22445:3:46",
                                                      "type": "",
                                                      "value": "255"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22441:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "22441:8:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "22426:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "22426:24:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "22414:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22414:37:46"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "22414:37:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "22464:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "22475:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "22480:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22471:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22471:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "22464:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "22393:104:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22398:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "22513:312:46",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "22527:51:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "22572:5:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "22542:29:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22542:36:46"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "22531:7:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "22591:10:46",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22600:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "22595:1:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "22668:111:46",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22697:3:46"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22702:1:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "22693:3:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "22693:11:46"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "22712:7:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "22706:5:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "22706:14:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22686:6:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22686:35:46"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "22686:35:46"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "22738:27:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22753:7:46"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22762:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22749:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22749:16:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22738:7:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "22625:1:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "22628:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "22622:2:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22622:13:46"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "22636:19:46",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "22638:15:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22647:1:46"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "22650:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22643:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22643:10:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22638:1:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "22618:3:46",
                                          "statements": []
                                        },
                                        "src": "22614:165:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "22792:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "22803:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "22808:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22799:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22799:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "22792:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "22506:319:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22511:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "outOfPlaceEncoding",
                                "nodeType": "YulIdentifier",
                                "src": "22366:18:46"
                              },
                              "nodeType": "YulSwitch",
                              "src": "22359:466:46"
                            }
                          ]
                        },
                        "name": "abi_encode_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "21893:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "21900:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "21908:3:46",
                            "type": ""
                          }
                        ],
                        "src": "21858:973:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23169:381:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23179:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23215:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "23223:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "23189:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23189:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23183:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23236:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23256:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23250:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23250:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "23240:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23298:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23306:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23294:17:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23313:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "23317:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "23272:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23272:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23272:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23333:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23350:2:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "23354:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23346:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23346:15:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23337:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23377:5:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23384:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23370:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23370:18:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23370:18:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23397:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "23419:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23413:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23413:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23401:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23461:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23469:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23457:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23457:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23480:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23487:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23476:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23476:13:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23491:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "23435:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23435:65:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23435:65:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23509:35:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23524:5:46"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23531:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23520:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23520:20:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23542:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23516:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23516:28:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "23509:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "23129:3:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23134:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23142:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23150:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "23161:3:46",
                            "type": ""
                          }
                        ],
                        "src": "22836:714:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23792:124:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23802:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23838:6:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "23846:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "23812:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23812:38:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23806:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23866:2:46"
                                  },
                                  {
                                    "hexValue": "73746f726566726f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23870:12:46",
                                    "type": "",
                                    "value": "storefront"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23859:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23859:24:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23859:24:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23892:18:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23903:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23907:2:46",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23899:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23899:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "23892:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "23768:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23773:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "23784:3:46",
                            "type": ""
                          }
                        ],
                        "src": "23555:361:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24095:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24112:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24123:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24105:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24105:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24105:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24146:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24157:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24142:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24142:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24162:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24135:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24135:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24135:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24185:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24196:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24181:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24181:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24201:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24174:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24174:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24174:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24267:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24252:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24272:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24245:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24245:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24245:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24290:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24302:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24313:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24298:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24298:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24290:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24072:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24086:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23921:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24375:181:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24385:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "24395:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "24389:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24414:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "24429:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24432:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "24425:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24425:10:46"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "24418:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24444:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "24459:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24462:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "24455:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24455:10:46"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "24448:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24499:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "24501:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24501:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24501:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24480:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "24489:2:46"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "24493:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "24485:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24485:12:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24477:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24477:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "24474:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24530:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24541:3:46"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24546:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24537:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24537:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "24530:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "24358:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "24361:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "24367:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24328:228:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24735:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24752:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24763:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24745:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24745:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24745:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24786:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24797:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24782:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24782:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24802:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24775:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24775:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24775:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24825:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24836:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24821:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24821:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24841:24:46",
                                    "type": "",
                                    "value": "Edition does not exist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24814:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24814:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24814:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24875:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24887:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24898:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24883:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24883:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24875:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24712:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24726:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24561:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25086:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25103:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25114:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25096:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25096:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25096:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25137:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25148:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25133:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25133:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25153:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25126:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25126:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25126:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25176:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25187:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25172:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25172:18:46"
                                  },
                                  {
                                    "hexValue": "4d7573742073656e6420656e6f75676820746f20707572636861736520746865",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25192:34:46",
                                    "type": "",
                                    "value": "Must send enough to purchase the"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25165:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25165:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25165:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25247:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25258:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25243:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25243:18:46"
                                  },
                                  {
                                    "hexValue": "2065646974696f6e2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25263:11:46",
                                    "type": "",
                                    "value": " edition."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25236:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25236:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25236:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25284:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25296:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25307:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25292:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25292:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25284:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25063:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25077:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24912:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25496:249:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25513:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25524:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25506:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25506:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25506:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25547:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25558:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25543:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25543:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25563:2:46",
                                    "type": "",
                                    "value": "59"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25536:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25536:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25536:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25586:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25597:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25582:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25582:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25602:34:46",
                                    "type": "",
                                    "value": "No permissioned tokens available"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25575:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25575:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25575:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25657:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25668:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25653:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25653:18:46"
                                  },
                                  {
                                    "hexValue": "2026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25673:29:46",
                                    "type": "",
                                    "value": " & open auction not started"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25646:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25646:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25646:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25712:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25724:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25735:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25720:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25720:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25712:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25473:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25487:4:46",
                            "type": ""
                          }
                        ],
                        "src": "25322:423:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25924:164:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25941:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25952:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25934:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25934:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25934:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25975:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25986:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25971:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25971:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25991:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25964:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25964:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25964:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26014:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26025:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26010:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26010:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26030:16:46",
                                    "type": "",
                                    "value": "Invalid signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26003:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26003:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26003:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26056:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26068:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26079:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26064:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26064:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26056:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25901:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25915:4:46",
                            "type": ""
                          }
                        ],
                        "src": "25750:338:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26267:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26284:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26295:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26277:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26277:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26277:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26318:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26329:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26314:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26314:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26334:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26307:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26307:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26307:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26357:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26368:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26353:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26353:18:46"
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f7574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26373:34:46",
                                    "type": "",
                                    "value": "This edition is already sold out"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26346:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26346:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26346:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26428:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26439:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26424:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26424:18:46"
                                  },
                                  {
                                    "hexValue": "2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26444:3:46",
                                    "type": "",
                                    "value": "."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26417:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26417:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26417:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26457:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26469:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26480:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26465:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26465:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26457:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26244:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26258:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26093:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26669:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26686:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26697:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26679:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26679:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26679:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26720:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26731:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26716:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26716:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26736:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26709:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26709:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26709:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26759:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26770:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26755:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26755:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e2068617320656e646564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26775:19:46",
                                    "type": "",
                                    "value": "Auction has ended"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26748:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26748:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26748:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26804:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26816:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26827:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26812:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26812:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26804:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26646:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26660:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26495:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26968:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26978:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26990:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27001:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26986:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26986:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26978:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27020:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "27035:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27043:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "27031:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27031:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27013:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27013:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27013:42:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27075:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27086:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27071:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27071:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27091:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27064:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27064:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27064:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26929:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "26940:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26948:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26959:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26841:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27283:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27300:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27311:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27293:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27293:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27293:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27334:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27345:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27330:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27330:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27350:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27323:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27323:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27323:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27373:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27384:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27369:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27369:18:46"
                                  },
                                  {
                                    "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27389:31:46",
                                    "type": "",
                                    "value": "Insufficient balance for send"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27362:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27362:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27362:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27430:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27442:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27453:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27438:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27438:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27430:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27260:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27274:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27109:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27658:14:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27660:10:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "27667:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "27660:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "27642:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "27650:3:46",
                            "type": ""
                          }
                        ],
                        "src": "27467:205:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27851:239:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27868:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27879:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27861:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27861:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27861:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27902:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27913:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27898:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27898:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27918:2:46",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27891:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27891:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27891:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27941:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27952:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27937:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27937:18:46"
                                  },
                                  {
                                    "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27957:34:46",
                                    "type": "",
                                    "value": "Unable to send value: recipient "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27930:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27930:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27930:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28012:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28023:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28008:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28008:18:46"
                                  },
                                  {
                                    "hexValue": "6d61792068617665207265766572746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28028:19:46",
                                    "type": "",
                                    "value": "may have reverted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28001:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28001:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28001:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28057:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28069:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28080:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28065:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28065:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28057:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27828:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27842:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27677:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28269:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28286:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28297:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28279:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28279:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28279:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28320:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28331:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28316:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28316:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28336:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28309:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28309:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28309:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28359:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28370:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28355:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28355:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28375:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28348:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28348:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28348:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28430:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28441:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28426:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28426:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28446:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28419:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28419:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28463:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28475:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28486:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28471:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28471:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28463:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28246:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28260:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28095:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28675:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28692:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28703:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28685:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28685:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28685:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28726:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28737:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28722:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28722:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28742:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28715:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28715:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28715:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28765:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28776:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28761:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28761:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28781:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28754:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28754:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28754:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28836:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28847:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28832:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28832:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28852:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28825:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28825:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28825:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28868:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28880:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28891:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28876:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28876:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28868:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28652:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28666:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28501:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29080:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29097:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29108:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29090:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29090:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29090:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29131:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29142:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29127:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29127:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29147:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29120:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29120:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29120:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29170:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29181:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29166:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29166:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29186:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29159:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29159:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29159:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29230:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29242:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29253:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29238:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29238:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29230:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29057:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29071:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28906:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29441:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29458:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29469:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29451:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29451:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29451:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29492:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29503:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29488:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29488:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29508:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29481:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29481:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29481:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29531:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29542:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29527:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29527:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29547:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29520:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29520:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29520:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29584:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29596:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29607:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29592:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29592:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29584:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29418:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29432:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29267:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29795:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29812:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29823:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29805:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29805:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29805:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29846:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29857:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29842:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29842:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29862:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29835:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29835:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29835:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29885:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29896:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29881:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29881:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29901:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29874:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29874:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29874:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29956:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29967:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29952:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29952:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29972:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29945:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29945:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29945:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29995:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30007:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30018:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30003:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30003:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29995:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29772:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29786:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29621:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30207:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30224:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30235:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30217:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30217:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30217:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30258:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30269:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30254:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30254:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30274:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30247:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30247:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30247:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30297:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30308:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30293:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30293:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30313:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30286:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30286:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30286:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30368:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30379:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30364:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30364:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30384:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30357:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30357:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30357:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30414:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30426:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30437:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30422:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30422:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30414:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30184:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30198:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30033:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30626:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30643:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30654:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30636:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30636:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30636:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30677:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30688:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30673:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30673:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30693:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30666:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30666:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30666:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30716:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30727:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30712:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30712:18:46"
                                  },
                                  {
                                    "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30732:27:46",
                                    "type": "",
                                    "value": "Ticket number exceeds max"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30705:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30705:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30705:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30769:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30781:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30792:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30777:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30777:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30769:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30603:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30617:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30452:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30980:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30997:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31008:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30990:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30990:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30990:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31031:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31042:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31027:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31027:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31047:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31020:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31020:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31020:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31070:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31081:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31066:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31066:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31086:34:46",
                                    "type": "",
                                    "value": "Invalid ticket number or NFT alr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31059:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31059:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31059:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31141:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31152:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31137:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31137:18:46"
                                  },
                                  {
                                    "hexValue": "6561647920636c61696d6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31157:14:46",
                                    "type": "",
                                    "value": "eady claimed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31130:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31130:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31130:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31181:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31193:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31204:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31189:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31189:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31181:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30957:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30971:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30806:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31432:306:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "31442:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31454:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31465:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31450:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31450:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31442:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31485:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "31496:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31478:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31478:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31478:25:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31512:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31530:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31535:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "31526:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31526:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31539:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "31522:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31522:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31516:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31561:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31572:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31557:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31557:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31581:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31589:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "31577:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31577:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31550:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31550:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31550:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31613:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31624:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31609:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31609:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "31633:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31641:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "31629:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31629:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31602:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31602:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31602:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31665:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31676:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31661:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31661:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "31681:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31654:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31654:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31654:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31708:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31719:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31704:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31704:19:46"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "31725:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31697:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31697:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31697:35:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31369:9:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "31380:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "31388:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "31396:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "31404:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31412:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31423:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31219:519:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31991:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "32008:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32017:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32022:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "32013:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32013:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32001:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32001:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32001:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "32048:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32053:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32044:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32044:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "32057:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32037:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32037:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32037:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "32084:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32089:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32080:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32080:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "32094:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32073:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32073:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32073:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32110:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "32121:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32126:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32117:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32117:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "32110:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "31959:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "31964:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31972:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "31983:3:46",
                            "type": ""
                          }
                        ],
                        "src": "31743:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32314:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32331:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32342:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32324:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32324:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32324:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32365:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32376:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32361:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32361:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32381:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32354:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32354:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32354:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32404:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32415:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32400:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32400:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32420:34:46",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32393:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32393:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32464:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32476:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32487:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32472:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32472:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32464:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32291:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32305:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32140:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32675:178:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32692:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32703:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32685:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32685:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32685:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32726:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32737:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32722:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32722:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32742:2:46",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32715:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32715:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32715:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32765:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32776:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32761:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32761:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32781:30:46",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32754:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32754:58:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32754:58:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32821:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32833:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32844:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32829:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32829:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32821:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32652:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32666:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32501:352:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33061:286:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33071:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33089:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33094:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "33085:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33085:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33098:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "33081:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33081:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33075:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33116:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "33131:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33139:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "33127:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33127:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33109:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33109:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33109:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33163:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33174:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33159:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33159:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33183:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33191:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "33179:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33179:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33152:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33152:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33152:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33215:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33226:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33211:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33211:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "33231:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33204:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33204:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33204:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33258:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33269:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33254:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33254:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33274:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33247:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33247:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33247:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33287:54:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "33313:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33325:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33336:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33321:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33321:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "33295:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33295:46:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "33287:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "33006:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "33017:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "33025:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "33033:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33041:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "33052:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32858:489:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33432:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33478:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33487:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33490:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33480:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33480:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33480:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "33453:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33462:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "33449:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33449:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33474:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33445:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33445:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "33442:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33503:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33522:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33516:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33516:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "33507:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "33565:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "33541:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33541:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33541:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33580:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "33590:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "33580:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "33398:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "33409:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33421:6:46",
                            "type": ""
                          }
                        ],
                        "src": "33352:249:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33780:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33797:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33808:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33790:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33790:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33790:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33831:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33842:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33827:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33827:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33847:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33820:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33820:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33820:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "33870:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33881:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33866:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33866:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33886:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33859:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33859:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33859:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33922:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "33934:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33945:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33930:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33930:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "33922:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "33757:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "33771:4:46",
                            "type": ""
                          }
                        ],
                        "src": "33606:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34133:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34150:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34161:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34143:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34143:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34143:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34184:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34195:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34180:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34180:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34200:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34173:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34173:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34173:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34223:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34234:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34219:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34219:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "34239:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34212:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34212:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34212:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34282:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34294:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34305:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34290:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34290:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34282:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34110:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34124:4:46",
                            "type": ""
                          }
                        ],
                        "src": "33959:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34493:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34510:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34521:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34503:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34503:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34503:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34544:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34555:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34540:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34540:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34560:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34533:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34533:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34533:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34583:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34594:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34579:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34579:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "34599:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34572:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34572:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34572:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34654:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34665:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34650:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34650:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "34670:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34643:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34643:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34643:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34684:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34696:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34707:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34692:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34692:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34684:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34470:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34484:4:46",
                            "type": ""
                          }
                        ],
                        "src": "34319:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34896:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34913:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34924:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34906:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34906:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34906:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34947:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34958:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34943:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34943:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34963:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34936:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34936:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34936:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34986:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34997:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34982:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34982:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35002:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34975:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34975:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34975:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35057:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35068:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35053:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35073:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35046:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35046:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35046:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35087:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35099:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35110:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35095:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35095:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35087:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34873:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34887:4:46",
                            "type": ""
                          }
                        ],
                        "src": "34722:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35306:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35316:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35328:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35339:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35324:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35324:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35316:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35359:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "35370:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35352:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35352:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35352:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35397:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35408:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35393:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35393:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "35417:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35425:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35413:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35413:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35386:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35386:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35386:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35451:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35462:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35447:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35447:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "35467:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35440:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35440:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35440:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35494:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35505:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35490:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35490:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "35510:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35483:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35483:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35483:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35251:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "35262:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35270:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35278:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35286:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35297:4:46",
                            "type": ""
                          }
                        ],
                        "src": "35125:398:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 288)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _2))\n        mstore(add(headStart, 256), and(value8, _1))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        value4 := abi_decode_uint32(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint32(add(headStart, 192))\n        let value_1 := calldataload(add(headStart, 224))\n        validator_revert_address(value_1)\n        value7 := value_1\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n        value3 := calldataload(add(headStart, 64))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Edition must have a signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Signer address cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Must set quantity\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Must set fundingRecipient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"End time must be greater than st\")\n        mstore(add(headStart, 96), \"art time\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        mstore(end_2, \"/\")\n        end := add(end_2, 1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_enum$_TimeType_$7935_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        if iszero(lt(value0, 2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_string_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := 0\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        let _2 := 32\n        if eq(outOfPlaceEncoding, lt(length, _2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, length)\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        let length := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), _1, length)\n        let end_1 := add(_1, length)\n        mstore(end_1, \"/\")\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(end_1, 1), length_1)\n        end := add(add(end_1, length_1), 1)\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        mstore(_1, \"storefront\")\n        end := add(_1, 10)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Edition does not exist\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"Must send enough to purchase the\")\n        mstore(add(headStart, 96), \" edition.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 59)\n        mstore(add(headStart, 64), \"No permissioned tokens available\")\n        mstore(add(headStart, 96), \" & open auction not started\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"This edition is already sold out\")\n        mstore(add(headStart, 96), \".\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Auction has ended\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Insufficient balance for send\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Unable to send value: recipient \")\n        mstore(add(headStart, 96), \"may have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Ticket number exceeds max\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Invalid ticket number or NFT alr\")\n        mstore(add(headStart, 96), \"eady claimed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "7986": [
                  {
                    "length": 32,
                    "start": 9126
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101f95760003560e01c806370a082311161010d578063bb314ca1116100a0578063e8a3d4851161006f578063e8a3d485146106c8578063e985e9c5146106dd578063f2fde38b14610726578063f71e54fb14610746578063fbab9e041461075957600080fd5b8063bb314ca11461062e578063c87b56dd1461064e578063d3bb05281461066e578063e1a3d5731461069b57600080fd5b806395d89b41116100dc57806395d89b41146105b9578063a22cb465146105ce578063abfc83a0146105ee578063b88d4fde1461060e57600080fd5b806370a0823114610546578063715018a61461056657806373aaf8791461057b5780638da5cb5b1461059b57600080fd5b8063279c806e1161019057806352e25bf21161015f57806352e25bf21461049957806352f5c2e4146104b957806356dee996146104e6578063602787ed146105065780636352211e1461052657600080fd5b8063279c806e1461033f5780632a55205a1461042557806342842e0e146104645780634bf440261461048457600080fd5b8063095ea7b3116101cc578063095ea7b3146102ba578063155dd5ee146102dc57806318160ddd146102fc57806323b872dd1461031f57600080fd5b806301ffc9a7146101fe578063065d5b851461023357806306fdde0314610260578063081812fc14610282575b600080fd5b34801561020a57600080fd5b5061021e610219366004612b0c565b610779565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b5061025361024e366004612b75565b6107a4565b60405161022a9190612bc1565b34801561026c57600080fd5b50610275610891565b60405161022a9190612c5f565b34801561028e57600080fd5b506102a261029d366004612c72565b610923565b6040516001600160a01b03909116815260200161022a565b3480156102c657600080fd5b506102da6102d5366004612ca0565b61094a565b005b3480156102e857600080fd5b506102da6102f7366004612c72565b610a64565b34801561030857600080fd5b50610311610ac4565b60405190815260200161022a565b34801561032b57600080fd5b506102da61033a366004612ccc565b610b10565b34801561034b57600080fd5b506103c761035a366004612c72565b60cc6020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919263ffffffff808416936401000000008104821693600160401b8204831693600160601b8304841693600160801b8404811693600160a01b900416911689565b604080516001600160a01b039a8b168152602081019990995263ffffffff978816908901529486166060880152928516608087015290841660a0860152831660c085015290911660e08301529091166101008201526101200161022a565b34801561043157600080fd5b50610445610440366004612d0d565b610b41565b604080516001600160a01b03909316835260208301919091520161022a565b34801561047057600080fd5b506102da61047f366004612ccc565b610c3d565b34801561049057600080fd5b50610311610c58565b3480156104a557600080fd5b506102da6104b4366004612d48565b610c74565b3480156104c557600080fd5b506104d96104d4366004612d74565b610d52565b60405161022a9190612db6565b3480156104f257600080fd5b506102da610501366004612df7565b610e0b565b34801561051257600080fd5b50610311610521366004612c72565b610ecf565b34801561053257600080fd5b506102a2610541366004612c72565b610ef1565b34801561055257600080fd5b50610311610561366004612e27565b610f51565b34801561057257600080fd5b506102da610fd7565b34801561058757600080fd5b506102da610596366004612e44565b610feb565b3480156105a757600080fd5b506097546001600160a01b03166102a2565b3480156105c557600080fd5b5061027561138f565b3480156105da57600080fd5b506102da6105e9366004612eda565b61139e565b3480156105fa57600080fd5b506102da610609366004612fb9565b6113a9565b34801561061a57600080fd5b506102da61062936600461305e565b611520565b34801561063a57600080fd5b506102da610649366004612d48565b611558565b34801561065a57600080fd5b50610275610669366004612c72565b6115c7565b34801561067a57600080fd5b50610311610689366004612c72565b60cf6020526000908152604090205481565b3480156106a757600080fd5b506103116106b6366004612c72565b60ce6020526000908152604090205481565b3480156106d457600080fd5b50610275611690565b3480156106e957600080fd5b5061021e6106f83660046130de565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561073257600080fd5b506102da610741366004612e27565b6116b8565b6102da61075436600461310c565b611731565b34801561076557600080fd5b506102da610774366004612d48565b611b04565b600063152a902d60e11b6001600160e01b03198316148061079e575061079e82611b72565b92915050565b606060008267ffffffffffffffff8111156107c1576107c1612f0d565b6040519080825280602002602001820160405280156107ea578160200160208202803683370190505b50905060005b8381101561088857600061084a878787858181106108105761081061318e565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106108655761086561318e565b911515602092830291909101909101525080610880816131ba565b9150506107f0565b50949350505050565b6060606580546108a0906131d3565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc906131d3565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b5050505050905090565b600061092e82611bc2565b506000908152606960205260409020546001600160a01b031690565b600061095582610ef1565b9050806001600160a01b0316836001600160a01b0316036109c75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806109e357506109e381336106f8565b610a555760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109be565b610a5f8383611c21565b505050565b600081815260cf602090815260408083205460ce909252822054610a889190613207565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610ac0906001600160a01b031682611c8f565b5050565b60008060015b60cb54811015610b0a57600081815260cc6020526040902060020154610af69063ffffffff168361321e565b915080610b02816131ba565b915050610aca565b50919050565b610b1a3382611d9c565b610b365760405162461bcd60e51b81526004016109be90613236565b610a5f838383611e1b565b6000806000610b4f85610ecf565b600081815260cc602090815260409182902082516101208101845281546001600160a01b03908116808352600184015494830194909452600283015463ffffffff80821696840196909652640100000000810486166060840152600160401b810486166080840152600160601b8104861660a0840152600160801b8104861660c0840152600160a01b900490941660e082015260039091015490921661010083015291925090610c075751925060009150610c369050565b6080810151815163ffffffff90911690612710610c248389613284565b610c2e91906132a3565b945094505050505b9250929050565b610a5f83838360405180602001604052806000815250611520565b60006001610c6560cb5490565b610c6f9190613207565b905090565b610c7c611fb7565b600082815260cc60205260409020600301546001600160a01b0316610ce35760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e657200000000000060448201526064016109be565b600082815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8616908102919091179091558251858152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a15050565b606060008267ffffffffffffffff811115610d6f57610d6f612f0d565b604051908082528060200260200182016040528015610d98578160200160208202803683370190505b50905060005b83811015610e0357610dc7858583818110610dbb57610dbb61318e565b90506020020135610ef1565b828281518110610dd957610dd961318e565b6001600160a01b039092166020928302919091019091015280610dfb816131ba565b915050610d9e565b509392505050565b610e13611fb7565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f74206265203000000000000060448201526064016109be565b600082815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03851690811790915591518481527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a25050565b6000608082901c80820361079e575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b03168061079e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109be565b60006001600160a01b038216610fbb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109be565b506001600160a01b031660009081526068602052604090205490565b610fdf611fb7565b610fe96000612011565b565b610ff3611fb7565b60008663ffffffff161161103d5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b60448201526064016109be565b6001600160a01b0388166110935760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e740000000000000060448201526064016109be565b8363ffffffff168363ffffffff16116110ff5760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b60648201526084016109be565b63ffffffff821615611161576001600160a01b0381166111615760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f74206265203000000000000060448201526064016109be565b604051806101200160405280896001600160a01b03168152602001888152602001600063ffffffff1681526020018763ffffffff1681526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff168152602001826001600160a01b031681525060cc60006111e560cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355938501516001830155918401516002820180546060870151608088015160a089015160c08a015160e08b015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b93909116929092029190911790556101009093015160039093018054909216921691909117905560cb54604080516001600160a01b03808c168252602082018b905263ffffffff808b16938301939093528289166060830152828816608083015282871660a083015291851660c082015290831660e08201527fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3906101000160405180910390a261138560cb80546001019055565b5050505050505050565b6060606680546108a0906131d3565b610ac0338383612063565b600054610100900460ff16158080156113c95750600054600160ff909116105b806113e35750303b1580156113e3575060005460ff166001145b6114465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109be565b6000805460ff191660011790558015611469576000805461ff0019166101001790555b6114738484612131565b61147b612162565b611484866116b8565b8161148e86612191565b60405160200161149f9291906132c5565b60405160208183030381529060405260c990805190602001906114c3929190612a5d565b506114d260cb80546001019055565b8015611518576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61152a3383611d9c565b6115465760405162461bcd60e51b81526004016109be90613236565b61155284848484612209565b50505050565b611560611fb7565b600082815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff85169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90610ec3906001908690613316565b6000818152606760205260409020546060906001600160a01b03166116465760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016109be565b600061165183610ecf565b905060c961165e82612191565b61166785612191565b604051602001611679939291906133db565b604051602081830303815290604052915050919050565b606060c96040516020016116a49190613421565b604051602081830303815290604052905090565b6116c0611fb7565b6001600160a01b0381166117255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109be565b61172e81612011565b50565b600084815260cc60205260408120600180820154600290920154919263ffffffff6401000000008404811693169161176a908390613447565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166117ea5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016109be565b8634101561184c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b60648201526084016109be565b428363ffffffff16111561194e578063ffffffff168563ffffffff16106118db5760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f742073746172746564000000000060648201526084016109be565b60008b815260cc60205260409020600301546001600160a01b03166119028b8b8e8c61223c565b6001600160a01b0316146119495760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064016109be565b6119b3565b8563ffffffff168563ffffffff16106119b35760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b60648201526084016109be565b428263ffffffff16116119fc5760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b60448201526064016109be565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b17611a3b6097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b03918216911603611a855760008c815260ce602052604081208054349290611a7a90849061321e565b90915550611aa79050565b60008c815260cc6020526040902054611aa7906001600160a01b031634611c8f565b611ab1338261243c565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b611b0c611fb7565b600082815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff861690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c91610ec391908690613316565b60006001600160e01b031982166380ac58cd60e01b1480611ba357506001600160e01b03198216635b5e139f60e01b145b8061079e57506301ffc9a760e01b6001600160e01b031983161461079e565b6000818152606760205260409020546001600160a01b031661172e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109be565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611c5682610ef1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b80471015611cdf5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016109be565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d2c576040519150601f19603f3d011682016040523d82523d6000602084013e611d31565b606091505b5050905080610a5f5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b60648201526084016109be565b600080611da883610ef1565b9050806001600160a01b0316846001600160a01b03161480611def57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611e135750836001600160a01b0316611e0884610923565b6001600160a01b0316145b949350505050565b826001600160a01b0316611e2e82610ef1565b6001600160a01b031614611e925760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109be565b6001600160a01b038216611ef45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109be565b611eff600082611c21565b6001600160a01b0383166000908152606860205260408120805460019290611f28908490613207565b90915550506001600160a01b0382166000908152606860205260408120805460019290611f5690849061321e565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610fe95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109be565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036120c45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109be565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff166121585760405162461bcd60e51b81526004016109be9061346f565b610ac0828261257e565b600054610100900460ff166121895760405162461bcd60e51b81526004016109be9061346f565b610fe96125cc565b6060816000036121b85750506040805180820190915260018152600360fc1b602082015290565b60408051604e8082526080820190925290602082018180368337019050509050604e5b82156121fa57600a8084066030018284015290920491600019016121db565b604e8190039101908152919050565b612214848484611e1b565b612220848484846125fc565b6115525760405162461bcd60e51b81526004016109be906134ba565b600064010000000082106122925760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d61780000000000000060448201526064016109be565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c60011692831561231f5760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b60648201526084016109be565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e28301526101028201526101220160405160208183030381529060405280519060200120905061242e8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085939250506126fa9050565b9a9950505050505050505050565b6001600160a01b0382166124925760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109be565b6000818152606760205260409020546001600160a01b0316156124f75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109be565b6001600160a01b038216600090815260686020526040812080546001929061252090849061321e565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff166125a55760405162461bcd60e51b81526004016109be9061346f565b81516125b8906065906020850190612a5d565b508051610a5f906066906020840190612a5d565b600054610100900460ff166125f35760405162461bcd60e51b81526004016109be9061346f565b610fe933612011565b60006001600160a01b0384163b156126f257604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061264090339089908890889060040161350c565b6020604051808303816000875af192505050801561267b575060408051601f3d908101601f1916820190925261267891810190613549565b60015b6126d8573d8080156126a9576040519150601f19603f3d011682016040523d82523d6000602084013e6126ae565b606091505b5080516000036126d05760405162461bcd60e51b81526004016109be906134ba565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611e13565b506001611e13565b60008060006127098585612716565b91509150610e0381612781565b600080825160410361274c5760208301516040840151606085015160001a61274087828585612937565b94509450505050610c36565b8251604003612775576020830151604084015161276a868383612a24565b935093505050610c36565b50600090506002610c36565b600081600481111561279557612795613300565b0361279d5750565b60018160048111156127b1576127b1613300565b036127fe5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109be565b600281600481111561281257612812613300565b0361285f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109be565b600381600481111561287357612873613300565b036128cb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109be565b60048160048111156128df576128df613300565b0361172e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109be565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561296e5750600090506003612a1b565b8460ff16601b1415801561298657508460ff16601c14155b156129975750600090506004612a1b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156129eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612a1457600060019250925050612a1b565b9150600090505b94509492505050565b6000806001600160ff1b03831681612a4160ff86901c601b61321e565b9050612a4f87828885612937565b935093505050935093915050565b828054612a69906131d3565b90600052602060002090601f016020900481019282612a8b5760008555612ad1565b82601f10612aa457805160ff1916838001178555612ad1565b82800160010185558215612ad1579182015b82811115612ad1578251825591602001919060010190612ab6565b50612add929150612ae1565b5090565b5b80821115612add5760008155600101612ae2565b6001600160e01b03198116811461172e57600080fd5b600060208284031215612b1e57600080fd5b8135612b2981612af6565b9392505050565b60008083601f840112612b4257600080fd5b50813567ffffffffffffffff811115612b5a57600080fd5b6020830191508360208260051b8501011115610c3657600080fd5b600080600060408486031215612b8a57600080fd5b83359250602084013567ffffffffffffffff811115612ba857600080fd5b612bb486828701612b30565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612bfb578351151583529284019291840191600101612bdd565b50909695505050505050565b60005b83811015612c22578181015183820152602001612c0a565b838111156115525750506000910152565b60008151808452612c4b816020860160208601612c07565b601f01601f19169290920160200192915050565b602081526000612b296020830184612c33565b600060208284031215612c8457600080fd5b5035919050565b6001600160a01b038116811461172e57600080fd5b60008060408385031215612cb357600080fd5b8235612cbe81612c8b565b946020939093013593505050565b600080600060608486031215612ce157600080fd5b8335612cec81612c8b565b92506020840135612cfc81612c8b565b929592945050506040919091013590565b60008060408385031215612d2057600080fd5b50508035926020909101359150565b803563ffffffff81168114612d4357600080fd5b919050565b60008060408385031215612d5b57600080fd5b82359150612d6b60208401612d2f565b90509250929050565b60008060208385031215612d8757600080fd5b823567ffffffffffffffff811115612d9e57600080fd5b612daa85828601612b30565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612bfb5783516001600160a01b031683529284019291840191600101612dd2565b60008060408385031215612e0a57600080fd5b823591506020830135612e1c81612c8b565b809150509250929050565b600060208284031215612e3957600080fd5b8135612b2981612c8b565b600080600080600080600080610100898b031215612e6157600080fd5b8835612e6c81612c8b565b975060208901359650612e8160408a01612d2f565b9550612e8f60608a01612d2f565b9450612e9d60808a01612d2f565b9350612eab60a08a01612d2f565b9250612eb960c08a01612d2f565b915060e0890135612ec981612c8b565b809150509295985092959890939650565b60008060408385031215612eed57600080fd5b8235612ef881612c8b565b915060208301358015158114612e1c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612f3e57612f3e612f0d565b604051601f8501601f19908116603f01168101908282118183101715612f6657612f66612f0d565b81604052809350858152868686011115612f7f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612faa57600080fd5b612b2983833560208501612f23565b600080600080600060a08688031215612fd157600080fd5b8535612fdc81612c8b565b945060208601359350604086013567ffffffffffffffff8082111561300057600080fd5b61300c89838a01612f99565b9450606088013591508082111561302257600080fd5b61302e89838a01612f99565b9350608088013591508082111561304457600080fd5b5061305188828901612f99565b9150509295509295909350565b6000806000806080858703121561307457600080fd5b843561307f81612c8b565b9350602085013561308f81612c8b565b925060408501359150606085013567ffffffffffffffff8111156130b257600080fd5b8501601f810187136130c357600080fd5b6130d287823560208401612f23565b91505092959194509250565b600080604083850312156130f157600080fd5b82356130fc81612c8b565b91506020830135612e1c81612c8b565b6000806000806060858703121561312257600080fd5b84359350602085013567ffffffffffffffff8082111561314157600080fd5b818701915087601f83011261315557600080fd5b81358181111561316457600080fd5b88602082850101111561317657600080fd5b95986020929092019750949560400135945092505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016131cc576131cc6131a4565b5060010190565b600181811c908216806131e757607f821691505b602082108103610b0a57634e487b7160e01b600052602260045260246000fd5b600082821015613219576132196131a4565b500390565b60008219821115613231576132316131a4565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561329e5761329e6131a4565b500290565b6000826132c057634e487b7160e01b600052601260045260246000fd5b500490565b600083516132d7818460208801612c07565b8351908301906132eb818360208801612c07565b602f60f81b9101908152600101949350505050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061333857634e487b7160e01b600052602160045260246000fd5b9281526020015290565b8054600090600181811c908083168061335c57607f831692505b6020808410820361337d57634e487b7160e01b600052602260045260246000fd5b81801561339157600181146133a2576133cf565b60ff198616895284890196506133cf565b60008881526020902060005b868110156133c75781548b8201529085019083016133ae565b505084890196505b50505050505092915050565b60006133e78286613342565b84516133f7818360208901612c07565b602f60f81b91019081528351613414816001840160208801612c07565b0160010195945050505050565b600061342d8284613342565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b600063ffffffff808316818516808303821115613466576134666131a4565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061353f90830184612c33565b9695505050505050565b60006020828403121561355b57600080fd5b8151612b2981612af656fea26469706673582212203aa9133e83dd48864db5e319e874482e05749f10a3c5ea8a6e2b1d24574f784a64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1F9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xBB314CA1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x726 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x746 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x62E JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x64E JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x66E JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5B9 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x566 JUMPI DUP1 PUSH4 0x73AAF879 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E GT PUSH2 0x190 JUMPI DUP1 PUSH4 0x52E25BF2 GT PUSH2 0x15F JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x4B9 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x279C806E EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x282 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21E PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B0C JUMP JUMPDEST PUSH2 0x779 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0x2B75 JUMP JUMPDEST PUSH2 0x7A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x2BC1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x2C5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0x923 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA0 JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0xA64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0xAC4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCC JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C7 PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP4 DIV DUP5 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND SWAP2 AND DUP10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH4 0xFFFFFFFF SWAP8 DUP9 AND SWAP1 DUP10 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP3 DUP6 AND PUSH1 0x80 DUP8 ADD MSTORE SWAP1 DUP5 AND PUSH1 0xA0 DUP7 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP6 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x445 PUSH2 0x440 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D0D JUMP JUMPDEST PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x22A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x47F CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCC JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0xC58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D48 JUMP JUMPDEST PUSH2 0xC74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH2 0x4D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D74 JUMP JUMPDEST PUSH2 0xD52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x2DB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x501 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DF7 JUMP JUMPDEST PUSH2 0xE0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0xECF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A2 PUSH2 0x541 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0xEF1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x561 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E27 JUMP JUMPDEST PUSH2 0xF51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0xFD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x587 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E44 JUMP JUMPDEST PUSH2 0xFEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x138F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EDA JUMP JUMPDEST PUSH2 0x139E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x609 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FB9 JUMP JUMPDEST PUSH2 0x13A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x629 CALLDATASIZE PUSH1 0x4 PUSH2 0x305E JUMP JUMPDEST PUSH2 0x1520 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D48 JUMP JUMPDEST PUSH2 0x1558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x669 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0x15C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x689 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x275 PUSH2 0x1690 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21E PUSH2 0x6F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x741 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E27 JUMP JUMPDEST PUSH2 0x16B8 JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x754 CALLDATASIZE PUSH1 0x4 PUSH2 0x310C JUMP JUMPDEST PUSH2 0x1731 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x774 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D48 JUMP JUMPDEST PUSH2 0x1B04 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x79E JUMPI POP PUSH2 0x79E DUP3 PUSH2 0x1B72 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7C1 JUMPI PUSH2 0x7C1 PUSH2 0x2F0D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7EA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x888 JUMPI PUSH1 0x0 PUSH2 0x84A DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x810 JUMPI PUSH2 0x810 PUSH2 0x318E JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x865 JUMPI PUSH2 0x865 PUSH2 0x318E JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0x880 DUP2 PUSH2 0x31BA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x7F0 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x8A0 SWAP1 PUSH2 0x31D3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x8CC SWAP1 PUSH2 0x31D3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x919 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8EE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x919 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8FC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92E DUP3 PUSH2 0x1BC2 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x955 DUP3 PUSH2 0xEF1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x9C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x9E3 JUMPI POP PUSH2 0x9E3 DUP2 CALLER PUSH2 0x6F8 JUMP JUMPDEST PUSH2 0xA55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0xA5F DUP4 DUP4 PUSH2 0x1C21 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xA88 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xAC0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x1C8F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xB0A JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xAF6 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x321E JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xB02 DUP2 PUSH2 0x31BA JUMP JUMPDEST SWAP2 POP POP PUSH2 0xACA JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1A CALLER DUP3 PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x3236 JUMP JUMPDEST PUSH2 0xA5F DUP4 DUP4 DUP4 PUSH2 0x1E1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB4F DUP6 PUSH2 0xECF JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x120 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH5 0x100000000 DUP2 DIV DUP7 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP7 AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP5 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0xC07 JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xC36 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xC24 DUP4 DUP10 PUSH2 0x3284 JUMP JUMPDEST PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x32A3 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xA5F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1520 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xC65 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC6F SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xC7C PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP6 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD6F JUMPI PUSH2 0xD6F PUSH2 0x2F0D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD98 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE03 JUMPI PUSH2 0xDC7 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xDBB JUMPI PUSH2 0xDBB PUSH2 0x318E JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xEF1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDD9 JUMPI PUSH2 0xDD9 PUSH2 0x318E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0xDFB DUP2 PUSH2 0x31BA JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD9E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE13 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP5 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x79E JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x79E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xFDF PUSH2 0x1FB7 JUMP JUMPDEST PUSH2 0xFE9 PUSH1 0x0 PUSH2 0x2011 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xFF3 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x103D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x1093 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT PUSH2 0x10FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x1161 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1161 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x11E5 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE SWAP4 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP2 DUP5 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0xE0 DUP12 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP12 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 DUP10 AND PUSH1 0x60 DUP4 ADD MSTORE DUP3 DUP9 AND PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP8 AND PUSH1 0xA0 DUP4 ADD MSTORE SWAP2 DUP6 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x1385 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x8A0 SWAP1 PUSH2 0x31D3 JUMP JUMPDEST PUSH2 0xAC0 CALLER DUP4 DUP4 PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x13C9 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x13E3 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E3 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1446 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1469 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1473 DUP5 DUP5 PUSH2 0x2131 JUMP JUMPDEST PUSH2 0x147B PUSH2 0x2162 JUMP JUMPDEST PUSH2 0x1484 DUP7 PUSH2 0x16B8 JUMP JUMPDEST DUP2 PUSH2 0x148E DUP7 PUSH2 0x2191 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x149F SWAP3 SWAP2 SWAP1 PUSH2 0x32C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x14C3 SWAP3 SWAP2 SWAP1 PUSH2 0x2A5D JUMP JUMPDEST POP PUSH2 0x14D2 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1518 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x152A CALLER DUP4 PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0x1546 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x3236 JUMP JUMPDEST PUSH2 0x1552 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2209 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1560 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP6 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0xEC3 SWAP1 PUSH1 0x1 SWAP1 DUP7 SWAP1 PUSH2 0x3316 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1646 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1651 DUP4 PUSH2 0xECF JUMP JUMPDEST SWAP1 POP PUSH1 0xC9 PUSH2 0x165E DUP3 PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x1667 DUP6 PUSH2 0x2191 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1679 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x33DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16A4 SWAP2 SWAP1 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x16C0 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1725 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x172E DUP2 PUSH2 0x2011 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x176A SWAP1 DUP4 SWAP1 PUSH2 0x3447 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x17EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x184C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x194E JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x18DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1902 DUP12 DUP12 DUP15 DUP13 PUSH2 0x223C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1949 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x19B3 JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x19B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x19FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x1A3B PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x1A85 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1A7A SWAP1 DUP5 SWAP1 PUSH2 0x321E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1AA7 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1AA7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x1C8F JUMP JUMPDEST PUSH2 0x1AB1 CALLER DUP3 PUSH2 0x243C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B0C PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0xEC3 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0x3316 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1BA3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x79E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x79E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x172E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1C56 DUP3 PUSH2 0xEF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1CDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D2C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D31 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DA8 DUP4 PUSH2 0xEF1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1DEF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x1E13 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E08 DUP5 PUSH2 0x923 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E2E DUP3 PUSH2 0xEF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x1EFF PUSH1 0x0 DUP3 PUSH2 0x1C21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1F28 SWAP1 DUP5 SWAP1 PUSH2 0x3207 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1F56 SWAP1 DUP5 SWAP1 PUSH2 0x321E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x20C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2158 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH2 0xAC0 DUP3 DUP3 PUSH2 0x257E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2189 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH2 0xFE9 PUSH2 0x25CC JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x21B8 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4E DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x4E JUMPDEST DUP3 ISZERO PUSH2 0x21FA JUMPI PUSH1 0xA DUP1 DUP5 MOD PUSH1 0x30 ADD DUP3 DUP5 ADD MSTORE SWAP1 SWAP3 DIV SWAP2 PUSH1 0x0 NOT ADD PUSH2 0x21DB JUMP JUMPDEST PUSH1 0x4E DUP2 SWAP1 SUB SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2214 DUP5 DUP5 DUP5 PUSH2 0x1E1B JUMP JUMPDEST PUSH2 0x2220 DUP5 DUP5 DUP5 DUP5 PUSH2 0x25FC JUMP JUMPDEST PUSH2 0x1552 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x34BA JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2292 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x231F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x242E DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x26FA SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2492 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x24F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2520 SWAP1 DUP5 SWAP1 PUSH2 0x321E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST DUP2 MLOAD PUSH2 0x25B8 SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2A5D JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xA5F SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x2A5D JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH2 0xFE9 CALLER PUSH2 0x2011 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x26F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x2640 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x350C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x267B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2678 SWAP2 DUP2 ADD SWAP1 PUSH2 0x3549 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x26D8 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x26A9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26AE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x26D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BE SWAP1 PUSH2 0x34BA JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x1E13 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x1E13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2709 DUP6 DUP6 PUSH2 0x2716 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xE03 DUP2 PUSH2 0x2781 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x274C JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x2740 DUP8 DUP3 DUP6 DUP6 PUSH2 0x2937 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xC36 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x2775 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x276A DUP7 DUP4 DUP4 PUSH2 0x2A24 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xC36 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xC36 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2795 JUMPI PUSH2 0x2795 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x279D JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x27B1 JUMPI PUSH2 0x27B1 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x27FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2812 JUMPI PUSH2 0x2812 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x285F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2873 JUMPI PUSH2 0x2873 PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x28CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x28DF JUMPI PUSH2 0x28DF PUSH2 0x3300 JUMP JUMPDEST SUB PUSH2 0x172E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x296E JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x2A1B JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x2986 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2997 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2A14 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x2A1B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x2A41 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x321E JUMP JUMPDEST SWAP1 POP PUSH2 0x2A4F DUP8 DUP3 DUP9 DUP6 PUSH2 0x2937 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2A69 SWAP1 PUSH2 0x31D3 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2A8B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2AD1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2AA4 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2AD1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2AD1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2AD1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2AB6 JUMP JUMPDEST POP PUSH2 0x2ADD SWAP3 SWAP2 POP PUSH2 0x2AE1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2ADD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2AE2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x172E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B29 DUP2 PUSH2 0x2AF6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2B8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BB4 DUP7 DUP3 DUP8 ADD PUSH2 0x2B30 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2BFB JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2BDD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C22 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2C0A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1552 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2C4B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2C07 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B29 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2C33 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x172E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CBE DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2CEC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2CFC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2D43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2D6B PUSH1 0x20 DUP5 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DAA DUP6 DUP3 DUP7 ADD PUSH2 0x2B30 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2BFB JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2DD2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E1C DUP2 PUSH2 0x2C8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B29 DUP2 PUSH2 0x2C8B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2E61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2E6C DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x2E81 PUSH1 0x40 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP6 POP PUSH2 0x2E8F PUSH1 0x60 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP5 POP PUSH2 0x2E9D PUSH1 0x80 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP4 POP PUSH2 0x2EAB PUSH1 0xA0 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP3 POP PUSH2 0x2EB9 PUSH1 0xC0 DUP11 ADD PUSH2 0x2D2F JUMP JUMPDEST SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x2EC9 DUP2 PUSH2 0x2C8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2EED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2EF8 DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2E1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2F3E JUMPI PUSH2 0x2F3E PUSH2 0x2F0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2F66 JUMPI PUSH2 0x2F66 PUSH2 0x2F0D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2F7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2FAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B29 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2F23 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2FD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2FDC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3000 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x300C DUP10 DUP4 DUP11 ADD PUSH2 0x2F99 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3022 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x302E DUP10 DUP4 DUP11 ADD PUSH2 0x2F99 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3051 DUP9 DUP3 DUP10 ADD PUSH2 0x2F99 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x307F DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x308F DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x30B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x30C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30D2 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2F23 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x30FC DUP2 PUSH2 0x2C8B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E1C DUP2 PUSH2 0x2C8B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x31CC JUMPI PUSH2 0x31CC PUSH2 0x31A4 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x31E7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB0A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3219 JUMPI PUSH2 0x3219 PUSH2 0x31A4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3231 JUMPI PUSH2 0x3231 PUSH2 0x31A4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x329E JUMPI PUSH2 0x329E PUSH2 0x31A4 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x32C0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x32D7 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x2C07 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x32EB DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x2C07 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x3338 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x335C JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x337D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3391 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x33A2 JUMPI PUSH2 0x33CF JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x33CF JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x33C7 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x33AE JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E7 DUP3 DUP7 PUSH2 0x3342 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x33F7 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x2C07 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3414 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2C07 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x342D DUP3 DUP5 PUSH2 0x3342 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3466 JUMPI PUSH2 0x3466 PUSH2 0x31A4 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x353F SWAP1 DUP4 ADD DUP5 PUSH2 0x2C33 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x355B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B29 DUP2 PUSH2 0x2AF6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xA9 SGT RETURNDATACOPY DUP4 0xDD BASEFEE DUP7 0x4D 0xB5 0xE3 NOT 0xE8 PUSH21 0x482E05749F10A3C5EA8A6E2B1D24574F784A64736F PUSH13 0x634300080E0033000000000000 ",
              "sourceMap": "2405:18648:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15927:301;;;;;;;;;;-1:-1:-1;15927:301:39;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;15927:301:39;;;;;;;;17440:457;;;;;;;;;;-1:-1:-1;17440:457:39;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2931:98:7:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;;;;;-1:-1:-1;4407:167:7;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3221:32:46;;;3203:51;;3191:2;3176:18;4407:167:7;3057:203:46;3928:418:7;;;;;;;;;;-1:-1:-1;3928:418:7;;;;;:::i;:::-;;:::i;:::-;;11978:546:39;;;;;;;;;;-1:-1:-1;11978:546:39;;;;;:::i;:::-;;:::i;15560:229::-;;;;;;;;;;;;;:::i;:::-;;;3867:25:46;;;3855:2;3840:18;15560:229:39;3721:177:46;5084:327:7;;;;;;;;;;-1:-1:-1;5084:327:7;;;;;:::i;:::-;;:::i;3869:43:39:-;;;;;;;;;;-1:-1:-1;3869:43:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3869:43:39;;;;;;;;;;;;;;;;;-1:-1:-1;;;3869:43:39;;;;;-1:-1:-1;;;3869:43:39;;;;;-1:-1:-1;;;3869:43:39;;;;;-1:-1:-1;;;3869:43:39;;;;;;;;;;;-1:-1:-1;;;;;4795:15:46;;;4777:34;;4842:2;4827:18;;4820:34;;;;4873:10;4919:15;;;4899:18;;;4892:43;4971:15;;;4966:2;4951:18;;4944:43;5024:15;;;5018:3;5003:19;;4996:44;5077:15;;;4757:3;5056:19;;5049:44;5130:15;;5124:3;5109:19;;5102:44;5183:15;;;5177:3;5162:19;;5155:44;5236:15;;;5230:3;5215:19;;5208:44;4726:3;4711:19;3869:43:39;4364:894:46;14939:547:39;;;;;;;;;;-1:-1:-1;14939:547:39;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;5708:32:46;;;5690:51;;5772:2;5757:18;;5750:34;;;;5663:18;14939:547:39;5516:274:46;5477:179:7;;;;;;;;;;-1:-1:-1;5477:179:7;;;;;:::i;:::-;;:::i;16297:173:39:-;;;;;;;;;;;;;:::i;13479:439::-;;;;;;;;;;-1:-1:-1;13479:439:39;;;;;:::i;:::-;;:::i;17126:308::-;;;;;;;;;;-1:-1:-1;17126:308:39;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13105:306::-;;;;;;;;;;-1:-1:-1;13105:306:39;;;;;:::i;:::-;;:::i;16569:428::-;;;;;;;;;;-1:-1:-1;16569:428:39;;;;;:::i;:::-;;:::i;2651:218:7:-;;;;;;;;;;-1:-1:-1;2651:218:7;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;;;;;-1:-1:-1;2390:204:7;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;7453:1364:39:-;;;;;;;;;;-1:-1:-1;7453:1364:39;;;;;:::i;:::-;;:::i;1441:85:0:-;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;3093:102:7;;;;;;;;;;;;;:::i;4641:153::-;;;;;;;;;;-1:-1:-1;4641:153:7;;;;;:::i;:::-;;:::i;6245:578:39:-;;;;;;;;;;-1:-1:-1;6245:578:39;;;;;:::i;:::-;;:::i;5722:315:7:-;;;;;;;;;;-1:-1:-1;5722:315:7;;;;;:::i;:::-;;:::i;12845:197:39:-;;;;;;;;;;-1:-1:-1;12845:197:39;;;;;:::i;:::-;;:::i;14222:329::-;;;;;;;;;;-1:-1:-1;14222:329:39;;;;;:::i;:::-;;:::i;4250:54::-;;;;;;;;;;-1:-1:-1;4250:54:39;;;;;:::i;:::-;;;;;;;;;;;;;;4109;;;;;;;;;;-1:-1:-1;4109:54:39;;;;;:::i;:::-;;;;;;;;;;;;;;14669:130;;;;;;;;;;;;;:::i;4860:162:7:-;;;;;;;;;;-1:-1:-1;4860:162:7;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;2321:198:0;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;9153:2819:39:-;;;;;;:::i;:::-;;:::i;12581:209::-;;;;;;;;;;-1:-1:-1;12581:209:39;;;;;:::i;:::-;;:::i;15927:301::-;16076:4;-1:-1:-1;;;;;;;;;16115:53:39;;;;:106;;;16172:49;16208:12;16172:35;:49::i;:::-;16096:125;15927:301;-1:-1:-1;;15927:301:39:o;17440:457::-;17570:13;17599:21;17634:14;17623:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17623:33:39;;17599:57;;17672:9;17667:199;17687:25;;;17667:199;;;17734:17;17761:53;17784:10;17796:14;;17811:1;17796:17;;;;;;;:::i;:::-;;;;;;;20203:7;20825:25;;;:13;:25;;;;;;;;20688:3;20672:19;;20825:43;;;;;;;;;20965:1;20724:19;;;;20923:30;;;20922:45;;;;;20825:43;;20672:19;20069:982;17761:53;17733:81;;;;;17841:9;17854:1;17841:14;17828:7;17836:1;17828:10;;;;;;;;:::i;:::-;:27;;;:10;;;;;;;;;;;:27;-1:-1:-1;17714:3:39;;;;:::i;:::-;;;;17667:199;;;-1:-1:-1;17883:7:39;17440:457;-1:-1:-1;;;;17440:457:39:o;2931:98:7:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;14017:2:46;4068:57:7;;;13999:21:46;14056:2;14036:18;;;14029:30;14095:34;14075:18;;;14068:62;-1:-1:-1;;;14146:18:46;;;14139:31;14187:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;14419:2:46;4136:171:7;;;14401:21:46;14458:2;14438:18;;;14431:30;14497:34;14477:18;;;14470:62;14568:32;14548:18;;;14541:60;14618:19;;4136:171:7;14217:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;11978:546:39:-;12115:27;12179:31;;;:19;:31;;;;;;;;;12145:19;:31;;;;;;:65;;12179:31;12145:65;:::i;:::-;12316:31;;;;:19;:31;;;;;;;;;12282:19;:31;;;;;:65;12458:8;:20;;;;;:37;12115:95;;-1:-1:-1;12447:70:39;;-1:-1:-1;;;;;12458:37:39;12115:95;12447:10;:70::i;:::-;12030:494;11978:546;:::o;15560:229::-;15606:7;;15670:1;15652:109;15678:11;929:14:13;15673:2:39;:26;15652:109;;;15730:12;;;;:8;:12;;;;;:20;;;15721:29;;15730:20;;15721:29;;:::i;:::-;;-1:-1:-1;15701:4:39;;;;:::i;:::-;;;;15652:109;;;-1:-1:-1;15777:5:39;15560:229;-1:-1:-1;15560:229:39:o;5084:327:7:-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;14939:547:39:-;15062:24;15088:21;15125:17;15145:24;15160:8;15145:14;:24::i;:::-;15179:22;15204:19;;;:8;:19;;;;;;;;;15179:44;;;;;;;;;-1:-1:-1;;;;;15179:44:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15179:44:39;;;;;;;;-1:-1:-1;;;15179:44:39;;;;;;;;-1:-1:-1;;;15179:44:39;;;;;;;;-1:-1:-1;;;15179:44:39;;;;;;;;;;;;;;;;;;;;;15125;;-1:-1:-1;15179:44:39;15234:107;;15302:24;;-1:-1:-1;15302:24:39;;-1:-1:-1;15294:36:39;;-1:-1:-1;15294:36:39;15234:107;15380:18;;;;15418:24;;15372:27;;;;;15472:6;15445:23;15372:27;15445:10;:23;:::i;:::-;15444:34;;;;:::i;:::-;15410:69;;;;;;;14939:547;;;;;;:::o;5477:179:7:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;16297:173:39:-;16344:7;16394:1;16370:21;:11;929:14:13;;838:112;16370:21:39;:25;;;;:::i;:::-;16363:32;;16297:173;:::o;13479:439::-;1334:13:0;:11;:13::i;:::-;13729:1:39::1;13683:20:::0;;;:8:::1;:20;::::0;;;;:34:::1;;::::0;-1:-1:-1;;;;;13683:34:39::1;13675:87;;;::::0;-1:-1:-1;;;13675:87:39;;16055:2:46;13675:87:39::1;::::0;::::1;16037:21:46::0;16094:2;16074:18;;;16067:30;16133:28;16113:18;;;16106:56;16179:18;;13675:87:39::1;15853:350:46::0;13675:87:39::1;13773:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:41:::1;;:65:::0;;-1:-1:-1;;;;13773:65:39::1;-1:-1:-1::0;;;13773:65:39::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13853:58;;16380:25:46;;;16421:18;;;16414:51;13853:58:39::1;::::0;16353:18:46;13853:58:39::1;;;;;;;13479:439:::0;;:::o;17126:308::-;17205:16;17233:23;17273:9;17259:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17259:31:39;;17233:57;;17305:9;17300:105;17320:20;;;17300:105;;;17373:21;17381:9;;17391:1;17381:12;;;;;;;:::i;:::-;;;;;;;17373:7;:21::i;:::-;17361:6;17368:1;17361:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17361:33:39;;;:9;;;;;;;;;;;:33;17342:3;;;;:::i;:::-;;;;17300:105;;;-1:-1:-1;17421:6:39;17126:308;-1:-1:-1;;;17126:308:39:o;13105:306::-;1334:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;13215:31:39;::::1;13207:70;;;::::0;-1:-1:-1;;;13207:70:39;;16678:2:46;13207:70:39::1;::::0;::::1;16660:21:46::0;16717:2;16697:18;;;16690:30;16756:28;16736:18;;;16729:56;16802:18;;13207:70:39::1;16476:350:46::0;13207:70:39::1;13288:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:34:::1;;:54:::0;;-1:-1:-1;;;;;;13288:54:39::1;-1:-1:-1::0;;;;;13288:54:39;::::1;::::0;;::::1;::::0;;;13357:47;;3867:25:46;;;13357:47:39::1;::::0;3840:18:46;13357:47:39::1;;;;;;;;13105:306:::0;;:::o;16569:428::-;16632:7;16747:3;16735:15;;;16848:14;;;16844:120;;-1:-1:-1;;16928:25:39;;;;:15;:25;;;;;;;16569:428::o;2651:218:7:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;17033:2:46;2784:56:7;;;17015:21:46;17072:2;17052:18;;;17045:30;-1:-1:-1;;;17091:18:46;;;17084:54;17155:18;;2784:56:7;16831:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;17386:2:46;2481:73:7;;;17368:21:46;17425:2;17405:18;;;17398:30;17464:34;17444:18;;;17437:62;-1:-1:-1;;;17515:18:46;;;17508:39;17564:19;;2481:73:7;17184:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;7453:1364:39:-;1334:13:0;:11;:13::i;:::-;7774:1:39::1;7762:9;:13;;;7754:43;;;::::0;-1:-1:-1;;;7754:43:39;;17796:2:46;7754:43:39::1;::::0;::::1;17778:21:46::0;17835:2;17815:18;;;17808:30;-1:-1:-1;;;17854:18:46;;;17847:47;17911:18;;7754:43:39::1;17594:341:46::0;7754:43:39::1;-1:-1:-1::0;;;;;7815:31:39;::::1;7807:69;;;::::0;-1:-1:-1;;;7807:69:39;;18142:2:46;7807:69:39::1;::::0;::::1;18124:21:46::0;18181:2;18161:18;;;18154:30;18220:27;18200:18;;;18193:55;18265:18;;7807:69:39::1;17940:349:46::0;7807:69:39::1;7905:10;7894:21;;:8;:21;;;7886:74;;;::::0;-1:-1:-1;;;7886:74:39;;18496:2:46;7886:74:39::1;::::0;::::1;18478:21:46::0;18535:2;18515:18;;;18508:30;18574:34;18554:18;;;18547:62;-1:-1:-1;;;18625:18:46;;;18618:38;18673:19;;7886:74:39::1;18294:404:46::0;7886:74:39::1;7975:25;::::0;::::1;::::0;7971:123:::1;;-1:-1:-1::0;;;;;8024:28:39;::::1;8016:67;;;::::0;-1:-1:-1;;;8016:67:39;;16678:2:46;8016:67:39::1;::::0;::::1;16660:21:46::0;16717:2;16697:18;;;16690:30;16756:28;16736:18;;;16729:56;16802:18;;8016:67:39::1;16476:350:46::0;8016:67:39::1;8138:355;;;;;;;;8178:17;-1:-1:-1::0;;;;;8138:355:39::1;;;;;8216:6;8138:355;;;;8245:1;8138:355;;;;;;8270:9;8138:355;;;;;;8305:11;8138:355;;;;;;8341:10;8138:355;;;;;;8374:8;8138:355;;;;;;8418:21;8138:355;;;;;;8468:14;-1:-1:-1::0;;;;;8138:355:39::1;;;::::0;8104:8:::1;:31;8113:21;:11;929:14:13::0;;838:112;8113:21:39::1;8104:31:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;8104:31:39;:389;;;;-1:-1:-1;;;;;;8104:389:39;;::::1;-1:-1:-1::0;;;;;8104:389:39;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;8104:389:39;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;8104:389:39;;;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;8104:389:39;-1:-1:-1;;;8104:389:39;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8104:389:39;;;;;-1:-1:-1;;;8104:389:39;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;8104:389:39;-1:-1:-1;;;8104:389:39;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8104:389:39;;-1:-1:-1;;;8104:389:39;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;8537:11:::1;929:14:13::0;8509:267:39::1;::::0;;-1:-1:-1;;;;;19100:15:46;;;19082:34;;19147:2;19132:18;;19125:34;;;19178:10;19224:15;;;19204:18;;;19197:43;;;;19276:15;;;19271:2;19256:18;;19249:43;19329:15;;;19323:3;19308:19;;19301:44;19382:15;;;19062:3;19361:19;;19354:44;19435:15;;;19429:3;19414:19;;19407:44;19488:15;;;19482:3;19467:19;;19460:44;8509:267:39::1;::::0;19031:3:46;19016:19;8509:267:39::1;;;;;;;8787:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;8787:23:39::1;7453:1364:::0;;;;;;;;:::o;3093:102:7:-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;6245:578:39:-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;19717:2:46;3157:201:5;;;19699:21:46;19756:2;19736:18;;;19729:30;19795:34;19775:18;;;19768:62;-1:-1:-1;;;19846:18:46;;;19839:44;19900:19;;3157:201:5;19515:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;6443:29:39::1;6457:5;6464:7;6443:13;:29::i;:::-;6482:16;:14;:16::i;:::-;6570:25;6588:6;6570:17;:25::i;:::-;6699:8;6709:20;:9;:18;:20::i;:::-;6682:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6665:7;:71;;;;;;;;;;;;:::i;:::-;;6793:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;6793:23:39::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;20720:36:46;;3553:14:5;;20708:2:46;20693:18;3553:14:5;;;;;;;3479:99;3101:483;6245:578:39;;;;;:::o;5722:315:7:-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;12845:197:39:-;1334:13:0;:11;:13::i;:::-;12931:20:39::1;::::0;;;:8:::1;:20;::::0;;;;;;:28:::1;;:39:::0;;-1:-1:-1;;;;12931:39:39::1;-1:-1:-1::0;;;12931:39:39::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12985:50;;::::1;::::0;::::1;::::0;-1:-1:-1;;12931:20:39;;12985:50:::1;:::i;14222:329::-:0;7571:4:7;7594:16;;;:7;:16;;;;;;14288:13:39;;-1:-1:-1;;;;;7594:16:7;14313:77:39;;;;-1:-1:-1;;;14313:77:39;;21518:2:46;14313:77:39;;;21500:21:46;21557:2;21537:18;;;21530:30;21596:34;21576:18;;;21569:62;-1:-1:-1;;;21647:18:46;;;21640:45;21702:19;;14313:77:39;21316:411:46;14313:77:39;14401:17;14421:24;14436:8;14421:14;:24::i;:::-;14401:44;;14487:7;14496:20;:9;:18;:20::i;:::-;14523:19;:8;:17;:19::i;:::-;14470:73;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14456:88;;;14222:329;;;:::o;14669:130::-;14713:13;14769:7;14752:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;14738:54;;14669:130;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;24123:2:46;2401:73:0::1;::::0;::::1;24105:21:46::0;24162:2;24142:18;;;24135:30;24201:34;24181:18;;;24174:62;-1:-1:-1;;;24252:18:46;;;24245:36;24298:19;;2401:73:0::1;23921:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;9153:2819:39:-;9353:13;9369:20;;;:8;:20;;;;;:26;;;;;9423:29;;;;;9369:26;;9423:29;;;;;;;9479:28;;9537:11;;9479:28;;9537:11;:::i;:::-;9558:16;9577:20;;;:8;:20;;;;;:30;;;9517:31;;-1:-1:-1;9577:30:39;-1:-1:-1;;;9577:30:39;;;;;-1:-1:-1;;;9634:28:39;;;;;-1:-1:-1;;;9702:41:39;;;;;;9906:12;;9898:47;;;;-1:-1:-1;;;9898:47:39;;24763:2:46;9898:47:39;;;24745:21:46;24802:2;24782:18;;;24775:30;-1:-1:-1;;;24821:18:46;;;24814:52;24883:18;;9898:47:39;24561:346:46;9898:47:39;10039:5;10026:9;:18;;10018:72;;;;-1:-1:-1;;;10018:72:39;;25114:2:46;10018:72:39;;;25096:21:46;25153:2;25133:18;;;25126:30;25192:34;25172:18;;;25165:62;-1:-1:-1;;;25243:18:46;;;25236:39;25292:19;;10018:72:39;24912:405:46;10018:72:39;10168:15;10156:9;:27;;;10152:749;;;10283:20;10273:30;;:7;:30;;;10265:102;;;;-1:-1:-1;;;10265:102:39;;25524:2:46;10265:102:39;;;25506:21:46;25563:2;25543:18;;;25536:30;25602:34;25582:18;;;25575:62;25673:29;25653:18;;;25646:57;25720:19;;10265:102:39;25322:423:46;10265:102:39;10509:20;;;;:8;:20;;;;;:34;;;-1:-1:-1;;;;;10509:34:39;10457:48;10467:10;;10518;10491:13;10457:9;:48::i;:::-;-1:-1:-1;;;;;10457:86:39;;10432:159;;;;-1:-1:-1;;;10432:159:39;;25952:2:46;10432:159:39;;;25934:21:46;25991:2;25971:18;;;25964:30;-1:-1:-1;;;26010:18:46;;;26003:44;26064:18;;10432:159:39;25750:338:46;10432:159:39;10152:749;;;10844:8;10834:18;;:7;:18;;;10826:64;;;;-1:-1:-1;;;10826:64:39;;26295:2:46;10826:64:39;;;26277:21:46;26334:2;26314:18;;;26307:30;26373:34;26353:18;;;26346:62;-1:-1:-1;;;26424:18:46;;;26417:31;26465:19;;10826:64:39;26093:397:46;10826:64:39;10981:15;10971:7;:25;;;10963:55;;;;-1:-1:-1;;;10963:55:39;;26697:2:46;10963:55:39;;;26679:21:46;26736:2;26716:18;;;26709:30;-1:-1:-1;;;26755:18:46;;;26748:47;26812:18;;10963:55:39;26495:341:46;10963:55:39;11097:15;11271:20;;;:8;:20;;;;;:28;;:41;;-1:-1:-1;;11271:41:39;11156:32;;;11271:41;;;;;;11171:3;11157:17;;;11156:32;11493:7;1513:6:0;;-1:-1:-1;;;;;1513:6:0;;1441:85;11493:7:39;11452:20;;;;:8;:20;;;;;:37;-1:-1:-1;;;;;11452:48:39;;;:37;;:48;11448:324;;11574:31;;;;:19;:31;;;;;:44;;11609:9;;11574:31;:44;;11609:9;;11574:44;:::i;:::-;;;;-1:-1:-1;11448:324:39;;-1:-1:-1;11448:324:39;;11712:20;;;;:8;:20;;;;;:37;11701:60;;-1:-1:-1;;;;;11712:37:39;11751:9;11701:10;:60::i;:::-;11847:26;11853:10;11865:7;11847:5;:26::i;:::-;11889:76;;;27043:10:46;27031:23;;27013:42;;27086:2;27071:18;;27064:34;;;11939:10:39;;11918:7;;11906:10;;11889:76;;26986:18:46;11889:76:39;;;;;;;9290:2682;;;;;;;;9153:2819;;;;:::o;12581:209::-;1334:13:0;:11;:13::i;:::-;12671:20:39::1;::::0;;;:8:::1;:20;::::0;;;;;:30:::1;;:43:::0;;-1:-1:-1;;;;12671:43:39::1;-1:-1:-1::0;;;12671:43:39::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12729:54;;12671:43;;12729:54:::1;::::0;::::1;::::0;12671:20;;;12729:54:::1;:::i;1987:344:7:-:0;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;1060:166:17;12173:133:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;17033:2:46;12246:53:7;;;17015:21:46;17072:2;17052:18;;;17045:30;-1:-1:-1;;;17091:18:46;;;17084:54;17155:18;;12246:53:7;16831:348:46;11464:182:7;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;18157:308:39:-;18273:7;18248:21;:32;;18240:74;;;;-1:-1:-1;;;18240:74:39;;27311:2:46;18240:74:39;;;27293:21:46;27350:2;27330:18;;;27323:30;27389:31;27369:18;;;27362:59;27438:18;;18240:74:39;27109:353:46;18240:74:39;18326:12;18344:10;-1:-1:-1;;;;;18344:15:39;18367:7;18344:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18325:54;;;18397:7;18389:69;;;;-1:-1:-1;;;18389:69:39;;27879:2:46;18389:69:39;;;27861:21:46;27918:2;27898:18;;;27891:30;27957:34;27937:18;;;27930:62;-1:-1:-1;;;28008:18:46;;;28001:47;28065:19;;18389:69:39;27677:413:46;7789:272:7;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;28297:2:46;10855:92:7;;;28279:21:46;28336:2;28316:18;;;28309:30;28375:34;28355:18;;;28348:62;-1:-1:-1;;;28426:18:46;;;28419:35;28471:19;;10855:92:7;28095:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;28703:2:46;10957:65:7;;;28685:21:46;28742:2;28722:18;;;28715:30;28781:34;28761:18;;;28754:62;-1:-1:-1;;;28832:18:46;;;28825:34;28876:19;;10957:65:7;28501:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;29108:2:46;1654:68:0;;;29090:21:46;;;29127:18;;;29120:30;29186:34;29166:18;;;29159:62;29238:18;;1654:68:0;28906:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;11782:307:7:-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;29469:2:46;11915:55:7;;;29451:21:46;29508:2;29488:18;;;29481:30;29547:27;29527:18;;;29520:55;29592:18;;11915:55:7;29267:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;1605:149::-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1708:39:7::1;1732:5;1739:7;1708:23;:39::i;1003:95:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;346:816:45:-:0;398:18;432:1;437;432:6;428:47;;-1:-1:-1;;454:10:45;;;;;;;;;;;;-1:-1:-1;;;454:10:45;;;;;346:816::o;428:47::-;522:37;;;145:2;522:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;515:44:45;-1:-1:-1;145:2:45;676:233;683:6;;676:233;;775:2;768:10;;;748:18;744:35;803:12;;;796:26;875:10;;;;-1:-1:-1;;844:9:45;676:233;;;1095:25;1091:33;;;1010:12;;1078:47;;;1010:12;346:816;-1:-1:-1;346:816:45:o;6898:305:7:-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;18705:1207:39:-;18841:7;19052:5;19036:13;:21;19028:59;;;;-1:-1:-1;;;19028:59:39;;30654:2:46;19028:59:39;;;30636:21:46;30693:2;30673:18;;;30666:30;30732:27;30712:18;;;30705:55;30777:18;;19028:59:39;30452:349:46;19028:59:39;19143:17;20825:25;;;:13;:25;;;;;;;;20688:3;20672:19;;20825:43;;;;;;;;;20724:19;;;20923:30;;;20965:1;20922:45;;19349:14;;19341:71;;;;-1:-1:-1;;;19341:71:39;;31008:2:46;19341:71:39;;;30990:21:46;31047:2;31027:18;;;31020:30;31086:34;31066:18;;;31059:62;-1:-1:-1;;;31137:18:46;;;31130:42;31189:19;;19341:71:39;30806:408:46;19341:71:39;19497:25;;;;:13;:25;;;;;;;;:43;;;;;;;;19565:1;19557:30;;19543:45;;19497:91;;19745:92;;4444:109;19745:92;;;31478:25:46;19792:4:39;31557:18:46;;;31550:43;19799:10:39;31609:18:46;;;31602:43;31661:18;;;31654:34;;;31704:19;;;;31697:35;;;19745:92:39;;;;;;;;;;31450:19:46;;;19745:92:39;;;19735:103;;;;;;;-1:-1:-1;;;19639:213:39;;;32001:27:46;19701:16:39;32044:11:46;;;32037:27;32080:12;;;32073:28;32117:12;;19639:213:39;;;;;;;;;;;;19616:246;;;;;;19599:263;;19879:26;19894:10;;19879:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19879:6:39;;:26;-1:-1:-1;;19879:14:39;:26;-1:-1:-1;19879:26:39:i;:::-;19872:33;18705:1207;-1:-1:-1;;;;;;;;;;18705:1207:39:o;9351:427:7:-;-1:-1:-1;;;;;9430:16:7;;9422:61;;;;-1:-1:-1;;;9422:61:7;;32342:2:46;9422:61:7;;;32324:21:46;;;32361:18;;;32354:30;32420:34;32400:18;;;32393:62;32472:18;;9422:61:7;32140:356:46;9422:61:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;:30;9493:58;;;;-1:-1:-1;;;9493:58:7;;32703:2:46;9493:58:7;;;32685:21:46;32742:2;32722:18;;;32715:30;32781;32761:18;;;32754:58;32829:18;;9493:58:7;32501:352:46;9493:58:7;-1:-1:-1;;;;;9618:13:7;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:7;-1:-1:-1;;;;;9646:21:7;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;12030:494:39;11978:546;:::o;1760:160:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1873:13:7;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1896:17:7;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;1104:111:0:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;12858:853:7:-:0;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;13683:11;;4402:227:31;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:31;;-1:-1:-1;3563:35:31;3543:56;;548:631;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;766:34;;-1:-1:-1;;;766:34:31;;33808:2:46;766:34:31;;;33790:21:46;33847:2;33827:18;;;33820:30;33886:26;33866:18;;;33859:54;33930:18;;766:34:31;33606:348:46;708:465:31;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;881:41;;-1:-1:-1;;;881:41:31;;34161:2:46;881:41:31;;;34143:21:46;34200:2;34180:18;;;34173:30;34239:33;34219:18;;;34212:61;34290:18;;881:41:31;33959:355:46;817:356:31;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;998:44;;-1:-1:-1;;;998:44:31;;34521:2:46;998:44:31;;;34503:21:46;34560:2;34540:18;;;34533:30;34599:34;34579:18;;;34572:62;-1:-1:-1;;;34650:18:46;;;34643:32;34692:19;;998:44:31;34319:398:46;939:234:31;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;1118:44;;-1:-1:-1;;;1118:44:31;;34924:2:46;1118:44:31;;;34906:21:46;34963:2;34943:18;;;34936:30;35002:34;34982:18;;;34975:62;-1:-1:-1;;;35053:18:46;;;35046:32;35095:19;;1118:44:31;34722:398:46;5810:1603:31;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:31;;-1:-1:-1;6962:30:31;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:31;;-1:-1:-1;7071:30:31;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;35352:25:46;;;35425:4;35413:17;;35393:18;;;35386:45;;;;35447:18;;;35440:34;;;35490:18;;;35483:34;;;7224:24:31;;35324:19:46;;7224:24:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:31;;-1:-1:-1;;7224:24:31;;;-1:-1:-1;;;;;;;7262:20:31;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:31;;-1:-1:-1;5810:1603:31;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:31;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:46;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:46:o;592:367::-;655:8;665:6;719:3;712:4;704:6;700:17;696:27;686:55;;737:1;734;727:12;686:55;-1:-1:-1;760:20:46;;803:18;792:30;;789:50;;;835:1;832;825:12;789:50;872:4;864:6;860:17;848:29;;932:3;925:4;915:6;912:1;908:14;900:6;896:27;892:38;889:47;886:67;;;949:1;946;939:12;964:505;1059:6;1067;1075;1128:2;1116:9;1107:7;1103:23;1099:32;1096:52;;;1144:1;1141;1134:12;1096:52;1180:9;1167:23;1157:33;;1241:2;1230:9;1226:18;1213:32;1268:18;1260:6;1257:30;1254:50;;;1300:1;1297;1290:12;1254:50;1339:70;1401:7;1392:6;1381:9;1377:22;1339:70;:::i;:::-;964:505;;1428:8;;-1:-1:-1;1313:96:46;;-1:-1:-1;;;;964:505:46:o;1474:642::-;1639:2;1691:21;;;1761:13;;1664:18;;;1783:22;;;1610:4;;1639:2;1862:15;;;;1836:2;1821:18;;;1610:4;1905:185;1919:6;1916:1;1913:13;1905:185;;;1994:13;;1987:21;1980:29;1968:42;;2065:15;;;;2030:12;;;;1941:1;1934:9;1905:185;;;-1:-1:-1;2107:3:46;;1474:642;-1:-1:-1;;;;;;1474:642:46:o;2121:258::-;2193:1;2203:113;2217:6;2214:1;2211:13;2203:113;;;2293:11;;;2287:18;2274:11;;;2267:39;2239:2;2232:10;2203:113;;;2334:6;2331:1;2328:13;2325:48;;;-1:-1:-1;;2369:1:46;2351:16;;2344:27;2121:258::o;2384:::-;2426:3;2464:5;2458:12;2491:6;2486:3;2479:19;2507:63;2563:6;2556:4;2551:3;2547:14;2540:4;2533:5;2529:16;2507:63;:::i;:::-;2624:2;2603:15;-1:-1:-1;;2599:29:46;2590:39;;;;2631:4;2586:50;;2384:258;-1:-1:-1;;2384:258:46:o;2647:220::-;2796:2;2785:9;2778:21;2759:4;2816:45;2857:2;2846:9;2842:18;2834:6;2816:45;:::i;2872:180::-;2931:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:52;;;3000:1;2997;2990:12;2952:52;-1:-1:-1;3023:23:46;;2872:180;-1:-1:-1;2872:180:46:o;3265:131::-;-1:-1:-1;;;;;3340:31:46;;3330:42;;3320:70;;3386:1;3383;3376:12;3401:315;3469:6;3477;3530:2;3518:9;3509:7;3505:23;3501:32;3498:52;;;3546:1;3543;3536:12;3498:52;3585:9;3572:23;3604:31;3629:5;3604:31;:::i;:::-;3654:5;3706:2;3691:18;;;;3678:32;;-1:-1:-1;;;3401:315:46:o;3903:456::-;3980:6;3988;3996;4049:2;4037:9;4028:7;4024:23;4020:32;4017:52;;;4065:1;4062;4055:12;4017:52;4104:9;4091:23;4123:31;4148:5;4123:31;:::i;:::-;4173:5;-1:-1:-1;4230:2:46;4215:18;;4202:32;4243:33;4202:32;4243:33;:::i;:::-;3903:456;;4295:7;;-1:-1:-1;;;4349:2:46;4334:18;;;;4321:32;;3903:456::o;5263:248::-;5331:6;5339;5392:2;5380:9;5371:7;5367:23;5363:32;5360:52;;;5408:1;5405;5398:12;5360:52;-1:-1:-1;;5431:23:46;;;5501:2;5486:18;;;5473:32;;-1:-1:-1;5263:248:46:o;5795:163::-;5862:20;;5922:10;5911:22;;5901:33;;5891:61;;5948:1;5945;5938:12;5891:61;5795:163;;;:::o;5963:252::-;6030:6;6038;6091:2;6079:9;6070:7;6066:23;6062:32;6059:52;;;6107:1;6104;6097:12;6059:52;6143:9;6130:23;6120:33;;6172:37;6205:2;6194:9;6190:18;6172:37;:::i;:::-;6162:47;;5963:252;;;;;:::o;6220:437::-;6306:6;6314;6367:2;6355:9;6346:7;6342:23;6338:32;6335:52;;;6383:1;6380;6373:12;6335:52;6423:9;6410:23;6456:18;6448:6;6445:30;6442:50;;;6488:1;6485;6478:12;6442:50;6527:70;6589:7;6580:6;6569:9;6565:22;6527:70;:::i;:::-;6616:8;;6501:96;;-1:-1:-1;6220:437:46;-1:-1:-1;;;;6220:437:46:o;6662:658::-;6833:2;6885:21;;;6955:13;;6858:18;;;6977:22;;;6804:4;;6833:2;7056:15;;;;7030:2;7015:18;;;6804:4;7099:195;7113:6;7110:1;7107:13;7099:195;;;7178:13;;-1:-1:-1;;;;;7174:39:46;7162:52;;7269:15;;;;7234:12;;;;7210:1;7128:9;7099:195;;7325:315;7393:6;7401;7454:2;7442:9;7433:7;7429:23;7425:32;7422:52;;;7470:1;7467;7460:12;7422:52;7506:9;7493:23;7483:33;;7566:2;7555:9;7551:18;7538:32;7579:31;7604:5;7579:31;:::i;:::-;7629:5;7619:15;;;7325:315;;;;;:::o;7645:247::-;7704:6;7757:2;7745:9;7736:7;7732:23;7728:32;7725:52;;;7773:1;7770;7763:12;7725:52;7812:9;7799:23;7831:31;7856:5;7831:31;:::i;7897:829::-;8022:6;8030;8038;8046;8054;8062;8070;8078;8131:3;8119:9;8110:7;8106:23;8102:33;8099:53;;;8148:1;8145;8138:12;8099:53;8187:9;8174:23;8206:31;8231:5;8206:31;:::i;:::-;8256:5;-1:-1:-1;8308:2:46;8293:18;;8280:32;;-1:-1:-1;8331:37:46;8364:2;8349:18;;8331:37;:::i;:::-;8321:47;;8387:37;8420:2;8409:9;8405:18;8387:37;:::i;:::-;8377:47;;8443:38;8476:3;8465:9;8461:19;8443:38;:::i;:::-;8433:48;;8500:38;8533:3;8522:9;8518:19;8500:38;:::i;:::-;8490:48;;8557:38;8590:3;8579:9;8575:19;8557:38;:::i;:::-;8547:48;;8647:3;8636:9;8632:19;8619:33;8661;8686:7;8661:33;:::i;:::-;8713:7;8703:17;;;7897:829;;;;;;;;;;;:::o;8731:416::-;8796:6;8804;8857:2;8845:9;8836:7;8832:23;8828:32;8825:52;;;8873:1;8870;8863:12;8825:52;8912:9;8899:23;8931:31;8956:5;8931:31;:::i;:::-;8981:5;-1:-1:-1;9038:2:46;9023:18;;9010:32;9080:15;;9073:23;9061:36;;9051:64;;9111:1;9108;9101:12;9152:127;9213:10;9208:3;9204:20;9201:1;9194:31;9244:4;9241:1;9234:15;9268:4;9265:1;9258:15;9284:632;9349:5;9379:18;9420:2;9412:6;9409:14;9406:40;;;9426:18;;:::i;:::-;9501:2;9495:9;9469:2;9555:15;;-1:-1:-1;;9551:24:46;;;9577:2;9547:33;9543:42;9531:55;;;9601:18;;;9621:22;;;9598:46;9595:72;;;9647:18;;:::i;:::-;9687:10;9683:2;9676:22;9716:6;9707:15;;9746:6;9738;9731:22;9786:3;9777:6;9772:3;9768:16;9765:25;9762:45;;;9803:1;9800;9793:12;9762:45;9853:6;9848:3;9841:4;9833:6;9829:17;9816:44;9908:1;9901:4;9892:6;9884;9880:19;9876:30;9869:41;;;;9284:632;;;;;:::o;9921:222::-;9964:5;10017:3;10010:4;10002:6;9998:17;9994:27;9984:55;;10035:1;10032;10025:12;9984:55;10057:80;10133:3;10124:6;10111:20;10104:4;10096:6;10092:17;10057:80;:::i;10148:948::-;10273:6;10281;10289;10297;10305;10358:3;10346:9;10337:7;10333:23;10329:33;10326:53;;;10375:1;10372;10365:12;10326:53;10414:9;10401:23;10433:31;10458:5;10433:31;:::i;:::-;10483:5;-1:-1:-1;10535:2:46;10520:18;;10507:32;;-1:-1:-1;10590:2:46;10575:18;;10562:32;10613:18;10643:14;;;10640:34;;;10670:1;10667;10660:12;10640:34;10693:50;10735:7;10726:6;10715:9;10711:22;10693:50;:::i;:::-;10683:60;;10796:2;10785:9;10781:18;10768:32;10752:48;;10825:2;10815:8;10812:16;10809:36;;;10841:1;10838;10831:12;10809:36;10864:52;10908:7;10897:8;10886:9;10882:24;10864:52;:::i;:::-;10854:62;;10969:3;10958:9;10954:19;10941:33;10925:49;;10999:2;10989:8;10986:16;10983:36;;;11015:1;11012;11005:12;10983:36;;11038:52;11082:7;11071:8;11060:9;11056:24;11038:52;:::i;:::-;11028:62;;;10148:948;;;;;;;;:::o;11101:795::-;11196:6;11204;11212;11220;11273:3;11261:9;11252:7;11248:23;11244:33;11241:53;;;11290:1;11287;11280:12;11241:53;11329:9;11316:23;11348:31;11373:5;11348:31;:::i;:::-;11398:5;-1:-1:-1;11455:2:46;11440:18;;11427:32;11468:33;11427:32;11468:33;:::i;:::-;11520:7;-1:-1:-1;11574:2:46;11559:18;;11546:32;;-1:-1:-1;11629:2:46;11614:18;;11601:32;11656:18;11645:30;;11642:50;;;11688:1;11685;11678:12;11642:50;11711:22;;11764:4;11756:13;;11752:27;-1:-1:-1;11742:55:46;;11793:1;11790;11783:12;11742:55;11816:74;11882:7;11877:2;11864:16;11859:2;11855;11851:11;11816:74;:::i;:::-;11806:84;;;11101:795;;;;;;;:::o;11901:388::-;11969:6;11977;12030:2;12018:9;12009:7;12005:23;12001:32;11998:52;;;12046:1;12043;12036:12;11998:52;12085:9;12072:23;12104:31;12129:5;12104:31;:::i;:::-;12154:5;-1:-1:-1;12211:2:46;12196:18;;12183:32;12224:33;12183:32;12224:33;:::i;12294:727::-;12382:6;12390;12398;12406;12459:2;12447:9;12438:7;12434:23;12430:32;12427:52;;;12475:1;12472;12465:12;12427:52;12511:9;12498:23;12488:33;;12572:2;12561:9;12557:18;12544:32;12595:18;12636:2;12628:6;12625:14;12622:34;;;12652:1;12649;12642:12;12622:34;12690:6;12679:9;12675:22;12665:32;;12735:7;12728:4;12724:2;12720:13;12716:27;12706:55;;12757:1;12754;12747:12;12706:55;12797:2;12784:16;12823:2;12815:6;12812:14;12809:34;;;12839:1;12836;12829:12;12809:34;12884:7;12879:2;12870:6;12866:2;12862:15;12858:24;12855:37;12852:57;;;12905:1;12902;12895:12;12852:57;12294:727;;12936:2;12928:11;;;;;-1:-1:-1;12958:6:46;;13011:2;12996:18;12983:32;;-1:-1:-1;12294:727:46;-1:-1:-1;;;12294:727:46:o;13026:127::-;13087:10;13082:3;13078:20;13075:1;13068:31;13118:4;13115:1;13108:15;13142:4;13139:1;13132:15;13158:127;13219:10;13214:3;13210:20;13207:1;13200:31;13250:4;13247:1;13240:15;13274:4;13271:1;13264:15;13290:135;13329:3;13350:17;;;13347:43;;13370:18;;:::i;:::-;-1:-1:-1;13417:1:46;13406:13;;13290:135::o;13430:380::-;13509:1;13505:12;;;;13552;;;13573:61;;13627:4;13619:6;13615:17;13605:27;;13573:61;13680:2;13672:6;13669:14;13649:18;13646:38;13643:161;;13726:10;13721:3;13717:20;13714:1;13707:31;13761:4;13758:1;13751:15;13789:4;13786:1;13779:15;14648:125;14688:4;14716:1;14713;14710:8;14707:34;;;14721:18;;:::i;:::-;-1:-1:-1;14758:9:46;;14648:125::o;14778:128::-;14818:3;14849:1;14845:6;14842:1;14839:13;14836:39;;;14855:18;;:::i;:::-;-1:-1:-1;14891:9:46;;14778:128::o;14911:410::-;15113:2;15095:21;;;15152:2;15132:18;;;15125:30;15191:34;15186:2;15171:18;;15164:62;-1:-1:-1;;;15257:2:46;15242:18;;15235:44;15311:3;15296:19;;14911:410::o;15326:168::-;15366:7;15432:1;15428;15424:6;15420:14;15417:1;15414:21;15409:1;15402:9;15395:17;15391:45;15388:71;;;15439:18;;:::i;:::-;-1:-1:-1;15479:9:46;;15326:168::o;15631:217::-;15671:1;15697;15687:132;;15741:10;15736:3;15732:20;15729:1;15722:31;15776:4;15773:1;15766:15;15804:4;15801:1;15794:15;15687:132;-1:-1:-1;15833:9:46;;15631:217::o;19930:633::-;20210:3;20248:6;20242:13;20264:53;20310:6;20305:3;20298:4;20290:6;20286:17;20264:53;:::i;:::-;20380:13;;20339:16;;;;20402:57;20380:13;20339:16;20436:4;20424:17;;20402:57;:::i;:::-;-1:-1:-1;;;20481:20:46;;20510:18;;;20555:1;20544:13;;19930:633;-1:-1:-1;;;;19930:633:46:o;20767:127::-;20828:10;20823:3;20819:20;20816:1;20809:31;20859:4;20856:1;20849:15;20883:4;20880:1;20873:15;20899:412;21072:2;21057:18;;21105:1;21094:13;;21084:144;;21150:10;21145:3;21141:20;21138:1;21131:31;21185:4;21182:1;21175:15;21213:4;21210:1;21203:15;21084:144;21237:25;;;21293:2;21278:18;21271:34;20899:412;:::o;21858:973::-;21943:12;;21908:3;;21998:1;22018:18;;;;22071;;;;22098:61;;22152:4;22144:6;22140:17;22130:27;;22098:61;22178:2;22226;22218:6;22215:14;22195:18;22192:38;22189:161;;22272:10;22267:3;22263:20;22260:1;22253:31;22307:4;22304:1;22297:15;22335:4;22332:1;22325:15;22189:161;22366:18;22393:104;;;;22511:1;22506:319;;;;22359:466;;22393:104;-1:-1:-1;;22426:24:46;;22414:37;;22471:16;;;;-1:-1:-1;22393:104:46;;22506:319;21805:1;21798:14;;;21842:4;21829:18;;22600:1;22614:165;22628:6;22625:1;22622:13;22614:165;;;22706:14;;22693:11;;;22686:35;22749:16;;;;22643:10;;22614:165;;;22618:3;;22808:6;22803:3;22799:16;22792:23;;22359:466;;;;;;;21858:973;;;;:::o;22836:714::-;23161:3;23189:38;23223:3;23215:6;23189:38;:::i;:::-;23256:6;23250:13;23272:52;23317:6;23313:2;23306:4;23298:6;23294:17;23272:52;:::i;:::-;-1:-1:-1;;;23346:15:46;;23370:18;;;23413:13;;23435:65;23413:13;23487:1;23476:13;;23469:4;23457:17;;23435:65;:::i;:::-;23520:20;23542:1;23516:28;;22836:714;-1:-1:-1;;;;;22836:714:46:o;23555:361::-;23784:3;23812:38;23846:3;23838:6;23812:38;:::i;:::-;-1:-1:-1;;;23859:24:46;;23907:2;23899:11;;23555:361;-1:-1:-1;;;23555:361:46:o;24328:228::-;24367:3;24395:10;24432:2;24429:1;24425:10;24462:2;24459:1;24455:10;24493:3;24489:2;24485:12;24480:3;24477:21;24474:47;;;24501:18;;:::i;:::-;24537:13;;24328:228;-1:-1:-1;;;;24328:228:46:o;29621:407::-;29823:2;29805:21;;;29862:2;29842:18;;;29835:30;29901:34;29896:2;29881:18;;29874:62;-1:-1:-1;;;29967:2:46;29952:18;;29945:41;30018:3;30003:19;;29621:407::o;30033:414::-;30235:2;30217:21;;;30274:2;30254:18;;;30247:30;30313:34;30308:2;30293:18;;30286:62;-1:-1:-1;;;30379:2:46;30364:18;;30357:48;30437:3;30422:19;;30033:414::o;32858:489::-;-1:-1:-1;;;;;33127:15:46;;;33109:34;;33179:15;;33174:2;33159:18;;33152:43;33226:2;33211:18;;33204:34;;;33274:3;33269:2;33254:18;;33247:31;;;33052:4;;33295:46;;33321:19;;33313:6;33295:46;:::i;:::-;33287:54;32858:489;-1:-1:-1;;;;;;32858:489:46:o;33352:249::-;33421:6;33474:2;33462:9;33453:7;33449:23;33445:32;33442:52;;;33490:1;33487;33480:12;33442:52;33522:9;33516:16;33541:30;33565:5;33541:30;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2744800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "approve(address,uint256)": "infinite",
                "balanceOf(address)": "2629",
                "buyEdition(uint256,bytes,uint256)": "infinite",
                "checkTicketNumbers(uint256,uint256[])": "infinite",
                "contractURI()": "infinite",
                "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": "infinite",
                "depositedForEdition(uint256)": "2549",
                "editionCount()": "2512",
                "editions(uint256)": "9205",
                "getApproved(uint256)": "4837",
                "initialize(address,uint256,string,string,string)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "owner()": "2443",
                "ownerOf(uint256)": "2671",
                "ownersOfTokenIds(uint256[])": "infinite",
                "renounceOwnership()": "infinite",
                "royaltyInfo(uint256,uint256)": "11748",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26744",
                "setEndTime(uint256,uint32)": "28643",
                "setPermissionedQuantity(uint256,uint32)": "30413",
                "setSignerAddress(uint256,address)": "28396",
                "setStartTime(uint256,uint32)": "28730",
                "supportsInterface(bytes4)": "infinite",
                "symbol()": "infinite",
                "tokenToEdition(uint256)": "2602",
                "tokenURI(uint256)": "infinite",
                "totalSupply()": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite",
                "withdrawFunds(uint256)": "infinite",
                "withdrawnForEdition(uint256)": "2527"
              },
              "internal": {
                "_getBitForTicketNumber(uint256,uint256)": "infinite",
                "_sendFunds(address payable,uint256)": "infinite",
                "getSigner(bytes calldata,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "buyEdition(uint256,bytes,uint256)": "f71e54fb",
              "checkTicketNumbers(uint256,uint256[])": "065d5b85",
              "contractURI()": "e8a3d485",
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": "73aaf879",
              "depositedForEdition(uint256)": "e1a3d573",
              "editionCount()": "4bf44026",
              "editions(uint256)": "279c806e",
              "getApproved(uint256)": "081812fc",
              "initialize(address,uint256,string,string,string)": "abfc83a0",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "ownersOfTokenIds(uint256[])": "52f5c2e4",
              "renounceOwnership()": "715018a6",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setEndTime(uint256,uint32)": "bb314ca1",
              "setPermissionedQuantity(uint256,uint32)": "52e25bf2",
              "setSignerAddress(uint256,address)": "56dee996",
              "setStartTime(uint256,uint32)": "fbab9e04",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenToEdition(uint256)": "602787ed",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply()": "18160ddd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdrawFunds(uint256)": "155dd5ee",
              "withdrawnForEdition(uint256)": "d3bb0528"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum ArtistV4.TimeType\",\"name\":\"timeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"newTime\",\"type\":\"uint32\"}],\"name\":\"AuctionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"EditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ticketNumber\",\"type\":\"uint256\"}],\"name\":\"EditionPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"PermissionedQuantitySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"SignerAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_ticketNumber\",\"type\":\"uint256\"}],\"name\":\"buyEdition\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_ticketNumbers\",\"type\":\"uint256[]\"}],\"name\":\"checkTicketNumbers\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_signerAddress\",\"type\":\"address\"}],\"name\":\"createEdition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositedForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"editionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"editions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_artistId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"ownersOfTokenIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"setEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"setPermissionedQuantity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_newSignerAddress\",\"type\":\"address\"}],\"name\":\"setSignerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"}],\"name\":\"setStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawnForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SoundXYZ - @gigamesh & @vigneshka\",\"details\":\"Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyEdition(uint256,bytes,uint256)\":{\"params\":{\"_editionId\":\"The id of the edition to purchase\",\"_signature\":\"A signed message for authorizing permissioned purchases\",\"_ticketNumber\":\"Ticket number required for validating this buyer hasn't already bought.\"}},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)\":{\"params\":{\"_endTime\":\"The end time of the auction, in seconds since unix epoch.\",\"_fundingRecipient\":\"The account that will receive sales revenue.\",\"_permissionedQuantity\":\"The quantity of tokens that require a signature to buy.\",\"_price\":\"The price at which each token will be sold, in ETH.\",\"_quantity\":\"The maximum number of tokens that can be sold.\",\"_royaltyBPS\":\"The royalty amount in bps.\",\"_signerAddress\":\"signer address.\",\"_startTime\":\"The start time of the auction, in seconds since unix epoch.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"initialize(address,uint256,string,string,string)\":{\"params\":{\"_name\":\"Name of artist\",\"_owner\":\"Owner of edition\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"ownersOfTokenIds(uint256[])\":{\"params\":{\"_tokenIds\":\"List of token ids\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"Sale price for the token\",\"_tokenId\":\"token id\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-165\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenToEdition(uint256)\":{\"params\":{\"_tokenId\":\"token id\"}},\"tokenURI(uint256)\":{\"details\":\"Concatenate the baseURI, editionId and tokenId, to create URI.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Artist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyEdition(uint256,bytes,uint256)\":{\"notice\":\"Creates a new token for the given edition, and assigns it to the buyer\"},\"constructor\":{\"notice\":\"Contract constructor\"},\"contractURI()\":{\"notice\":\"Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\"},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)\":{\"notice\":\"Creates a new edition.\"},\"editionCount()\":{\"notice\":\"returns the number of editions for this artist\"},\"initialize(address,uint256,string,string,string)\":{\"notice\":\"Initializes the contract\"},\"ownersOfTokenIds(uint256[])\":{\"notice\":\"Returns a list of owner addresses for a given list of token ids\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Get royalty information for token\"},\"setEndTime(uint256,uint32)\":{\"notice\":\"Sets the end time for an edition\"},\"setPermissionedQuantity(uint256,uint32)\":{\"notice\":\"Sets the permissioned quantity for an edition\"},\"setSignerAddress(uint256,address)\":{\"notice\":\"Sets the signature address of an edition\"},\"setStartTime(uint256,uint32)\":{\"notice\":\"Sets the start time for an edition\"},\"supportsInterface(bytes4)\":{\"notice\":\"Informs other contracts which interfaces this contract supports\"},\"tokenToEdition(uint256)\":{\"notice\":\"Returns the edition id for a given token id\"},\"tokenURI(uint256)\":{\"notice\":\"Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\"},\"totalSupply()\":{\"notice\":\"The total number of tokens created by this contract\"}},\"notice\":\"This contract is used to create & sell song NFTs for the artist who owns the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistV4.sol\":\"ArtistV4\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\"},\"contracts/ArtistV4.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n               ^###############################################&5               \\n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \\n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \\n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \\n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \\n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \\n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \\n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \\n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \\n\\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {LibUintToString} from './utils/LibUintToString.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport {ECDSA} from '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\\n\\n/// @title Artist\\n/// @author SoundXYZ - @gigamesh & @vigneshka\\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\\ncontract ArtistV4 is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // ================================\\n    // TYPES\\n    // ================================\\n\\n    using LibUintToString for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSA for bytes32;\\n\\n    enum TimeType {\\n        START,\\n        END\\n    }\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n        // quantity of permissioned tokens\\n        uint32 permissionedQuantity;\\n        // whitelist signer address\\n        address signerAddress;\\n    }\\n\\n    // ================================\\n    // STORAGE\\n    // ================================\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId; // DEPRECATED IN V3\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\\n    mapping(uint256 => uint256) private _tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n    // The permissioned typehash (used for checking signature validity)\\n    bytes32 private constant PERMISSIONED_SALE_TYPEHASH =\\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\\n    // Domain separator - used to prevent replay attacks using signatures from different networks\\n    bytes32 private immutable DOMAIN_SEPARATOR;\\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\\n\\n    // ================================\\n    // EVENTS\\n    // ================================\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime,\\n        uint32 permissionedQuantity,\\n        address signerAddress\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer,\\n        uint256 ticketNumber\\n    );\\n\\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\\n\\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\\n\\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\\n\\n    // ================================\\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Contract constructor\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n    }\\n\\n    /// @notice Initializes the contract\\n    /// @param _owner Owner of edition\\n    /// @param _name Name of artist\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new edition.\\n    /// @param _fundingRecipient The account that will receive sales revenue.\\n    /// @param _price The price at which each token will be sold, in ETH.\\n    /// @param _quantity The maximum number of tokens that can be sold.\\n    /// @param _royaltyBPS The royalty amount in bps.\\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\\n    /// @param _signerAddress signer address.\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime,\\n        uint32 _permissionedQuantity,\\n        address _signerAddress\\n    ) external onlyOwner {\\n        require(_quantity > 0, 'Must set quantity');\\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\\n        require(_endTime > _startTime, 'End time must be greater than start time');\\n\\n        if (_permissionedQuantity > 0) {\\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\\n        }\\n\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime,\\n            permissionedQuantity: _permissionedQuantity,\\n            signerAddress: _signerAddress\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime,\\n            _permissionedQuantity,\\n            _signerAddress\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\\n    /// @param _editionId The id of the edition to purchase\\n    /// @param _signature A signed message for authorizing permissioned purchases\\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\\n    function buyEdition(\\n        uint256 _editionId,\\n        bytes calldata _signature,\\n        uint256 _ticketNumber\\n    ) external payable {\\n        // Caching variables locally to reduce reads\\n        uint256 price = editions[_editionId].price;\\n        uint32 quantity = editions[_editionId].quantity;\\n        uint32 numSold = editions[_editionId].numSold;\\n        uint32 newNumSold = numSold + 1;\\n        uint32 startTime = editions[_editionId].startTime;\\n        uint32 endTime = editions[_editionId].endTime;\\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\\n\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(quantity > 0, 'Edition does not exist');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\\n\\n        // If the public auction hasn't started...\\n        if (startTime > block.timestamp) {\\n            // Check that permissioned tokens are still available\\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\\n\\n            // Check that the signature is valid.\\n            require(\\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\\n                'Invalid signer'\\n            );\\n        } else {\\n            // Check that there are still tokens available to purchase.\\n            // Only need to check this for the public sale (after the start time)\\n            // so we can accomodate open editions\\n            require(numSold < quantity, 'This edition is already sold out.');\\n        }\\n\\n        // Don't allow purchases after the end time\\n        require(endTime > block.timestamp, 'Auction has ended');\\n\\n        // Create the token id by packing editionId in the top bits\\n        uint256 tokenId;\\n        unchecked {\\n            tokenId = (_editionId << 128) | newNumSold;\\n            // Increment the number of tokens sold for this edition.\\n            editions[_editionId].numSold = newNumSold;\\n        }\\n\\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\\n        if (editions[_editionId].fundingRecipient == owner()) {\\n            // Update the deposited total for the edition\\n            depositedForEdition[_editionId] += msg.value;\\n        } else {\\n            // Send funds to the funding recipient.\\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\\n        }\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, tokenId);\\n\\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\\n    }\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    /// @notice Sets the start time for an edition\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\\n    }\\n\\n    /// @notice Sets the end time for an edition\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\\n    }\\n\\n    /// @notice Sets the signature address of an edition\\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external onlyOwner {\\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\\n\\n        editions[_editionId].signerAddress = _newSignerAddress;\\n        emit SignerAddressSet(_editionId, _newSignerAddress);\\n    }\\n\\n    /// @notice Sets the permissioned quantity for an edition\\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity) external onlyOwner {\\n        // Prevent setting to permissioned quantity when there is no signer address\\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\\n\\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\\n    }\\n\\n    // ================================\\n    // VIEW FUNCTIONS\\n    // ================================\\n\\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    /// @dev Concatenate the baseURI, editionId and tokenId, to create URI.\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        uint256 editionId = tokenToEdition(_tokenId);\\n\\n        return string(abi.encodePacked(baseURI, editionId.toString(), '/', _tokenId.toString()));\\n    }\\n\\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    /// @notice Get royalty information for token\\n    /// @param _tokenId token id\\n    /// @param _salePrice Sale price for the token\\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        uint256 editionId = tokenToEdition(_tokenId);\\n        Edition memory edition = editions[editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    /// @notice The total number of tokens created by this contract\\n    function totalSupply() external view returns (uint256) {\\n        uint256 total = 0;\\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\\n            total += editions[id].numSold;\\n        }\\n        return total;\\n    }\\n\\n    /// @notice Informs other contracts which interfaces this contract supports\\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    /// @notice returns the number of editions for this artist\\n    function editionCount() external view returns (uint256) {\\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\\n    }\\n\\n    /// @notice Returns the edition id for a given token id\\n    /// @param _tokenId token id\\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\\n        // Check the top bits to see if the edition id is there\\n        uint256 editionId = _tokenId >> 128;\\n\\n        // If edition ID is 0, then this edition was created before the V3 upgrade\\n        if (editionId == 0) {\\n            // get edition ID from storage\\n            return _tokenToEdition[_tokenId];\\n        }\\n\\n        return editionId;\\n    }\\n\\n    /// @notice Returns a list of owner addresses for a given list of token ids\\n    /// @param _tokenIds List of token ids\\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\\n        address[] memory owners = new address[](_tokenIds.length);\\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\\n            owners[i] = ownerOf(_tokenIds[i]);\\n        }\\n        return owners;\\n    }\\n\\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\\n        external\\n        view\\n        returns (bool[] memory)\\n    {\\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\\n\\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\\n            claimed[i] = storedBit == 1;\\n        }\\n\\n        return claimed;\\n    }\\n\\n    // ================================\\n    // PRIVATE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Sends funds to an address\\n    /// @param _recipient The address to send funds to\\n    /// @param _amount The amount of funds to send\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n\\n    /// @notice Gets signer address to validate permissioned purchase\\n    /// @param _signature signed message\\n    /// @param _editionId edition id\\n    /// @return address of signer\\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\\n    function getSigner(\\n        bytes calldata _signature,\\n        uint256 _editionId,\\n        uint256 _ticketNumber\\n    ) private returns (address) {\\n        // Check that the ticket number is within the reserved range for the edition\\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\\n\\n        // gets the stored bit\\n        (\\n            uint256 storedBit,\\n            uint256 localGroup,\\n            uint256 localGroupOffset,\\n            uint256 ticketNumbersIdx\\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\\n\\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\\n\\n        // Flip the bit to 1 to indicate that the ticket has been claimed\\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\\n\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                '\\\\x19\\\\x01',\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\\n            )\\n        );\\n        return digest.recover(_signature);\\n    }\\n\\n    /// @notice Gets the bit variables associated with a ticket number\\n    /// @param _editionId edition id\\n    /// @param _ticketNumber ticket number\\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\\n        private\\n        view\\n        returns (\\n            uint256,\\n            uint256,\\n            uint256,\\n            uint256\\n        )\\n    {\\n        uint256 localGroup; // the bit array for this ticket number\\n        uint256 ticketNumbersIdx; // the index of the the local group\\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\\n        unchecked {\\n            ticketNumbersIdx = _ticketNumber / 256;\\n            localGroupOffset = _ticketNumber % 256;\\n        }\\n\\n        // cache the local group for efficiency\\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\\n\\n        // gets the stored bit\\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\\n\\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\\n    }\\n}\\n\",\"keccak256\":\"0xd26c65910d8a04b5cfccd29a36ce4e24558697a0f9dcde4ea0a4c1d7a34e9039\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/LibUintToString.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.0;\\n\\nlibrary LibUintToString {\\n    uint256 private constant MAX_UINT256_STRING_LENGTH = 78;\\n    uint8 private constant ASCII_DIGIT_OFFSET = 48;\\n\\n    /// @dev Converts a `uint256` value to a string.\\n    /// @param n The integer to convert.\\n    /// @return nstr `n` as a decimal string.\\n    function toString(uint256 n) internal pure returns (string memory nstr) {\\n        if (n == 0) {\\n            return '0';\\n        }\\n        // Overallocate memory\\n        nstr = new string(MAX_UINT256_STRING_LENGTH);\\n        uint256 k = MAX_UINT256_STRING_LENGTH;\\n        // Populate string from right to left (lsb to msb).\\n        while (n != 0) {\\n            assembly {\\n                let char := add(ASCII_DIGIT_OFFSET, mod(n, 10))\\n                mstore(add(nstr, k), char)\\n                k := sub(k, 1)\\n                n := div(n, 10)\\n            }\\n        }\\n        assembly {\\n            // Shift pointer over to actual start of string.\\n            nstr := add(nstr, k)\\n            // Store actual string length.\\n            mstore(nstr, sub(MAX_UINT256_STRING_LENGTH, k))\\n        }\\n        return nstr;\\n    }\\n}\\n\",\"keccak256\":\"0xc6cf2910b6dbbe6c24c28de6a7a200395696e9d7f6ace5b7a345f68c383b7ef2\",\"license\":\"Unlicense\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 7956,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "baseURI",
                "offset": 0,
                "slot": "201",
                "type": "t_string_storage"
              },
              {
                "astId": 7959,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "atTokenId",
                "offset": 0,
                "slot": "202",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 7962,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "atEditionId",
                "offset": 0,
                "slot": "203",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 7967,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "editions",
                "offset": 0,
                "slot": "204",
                "type": "t_mapping(t_uint256,t_struct(Edition)7954_storage)"
              },
              {
                "astId": 7971,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "_tokenToEdition",
                "offset": 0,
                "slot": "205",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 7975,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "depositedForEdition",
                "offset": 0,
                "slot": "206",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 7979,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "withdrawnForEdition",
                "offset": 0,
                "slot": "207",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 7992,
                "contract": "contracts/ArtistV4.sol:ArtistV4",
                "label": "ticketNumbers",
                "offset": 0,
                "slot": "208",
                "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_address_payable": {
                "encoding": "inplace",
                "label": "address payable",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(uint256 => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_uint256)"
              },
              "t_mapping(t_uint256,t_struct(Edition)7954_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ArtistV4.Edition)",
                "numberOfBytes": "32",
                "value": "t_struct(Edition)7954_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(Edition)7954_storage": {
                "encoding": "inplace",
                "label": "struct ArtistV4.Edition",
                "members": [
                  {
                    "astId": 7937,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "fundingRecipient",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address_payable"
                  },
                  {
                    "astId": 7939,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "price",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 7941,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "numSold",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 7943,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "quantity",
                    "offset": 4,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 7945,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "royaltyBPS",
                    "offset": 8,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 7947,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "startTime",
                    "offset": 12,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 7949,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "endTime",
                    "offset": 16,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 7951,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "permissionedQuantity",
                    "offset": 20,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 7953,
                    "contract": "contracts/ArtistV4.sol:ArtistV4",
                    "label": "signerAddress",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_address"
                  }
                ],
                "numberOfBytes": "128"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "buyEdition(uint256,bytes,uint256)": {
                "notice": "Creates a new token for the given edition, and assigns it to the buyer"
              },
              "constructor": {
                "notice": "Contract constructor"
              },
              "contractURI()": {
                "notice": "Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront"
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address)": {
                "notice": "Creates a new edition."
              },
              "editionCount()": {
                "notice": "returns the number of editions for this artist"
              },
              "initialize(address,uint256,string,string,string)": {
                "notice": "Initializes the contract"
              },
              "ownersOfTokenIds(uint256[])": {
                "notice": "Returns a list of owner addresses for a given list of token ids"
              },
              "royaltyInfo(uint256,uint256)": {
                "notice": "Get royalty information for token"
              },
              "setEndTime(uint256,uint32)": {
                "notice": "Sets the end time for an edition"
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "notice": "Sets the permissioned quantity for an edition"
              },
              "setSignerAddress(uint256,address)": {
                "notice": "Sets the signature address of an edition"
              },
              "setStartTime(uint256,uint32)": {
                "notice": "Sets the start time for an edition"
              },
              "supportsInterface(bytes4)": {
                "notice": "Informs other contracts which interfaces this contract supports"
              },
              "tokenToEdition(uint256)": {
                "notice": "Returns the edition id for a given token id"
              },
              "tokenURI(uint256)": {
                "notice": "Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]"
              },
              "totalSupply()": {
                "notice": "The total number of tokens created by this contract"
              }
            },
            "notice": "This contract is used to create & sell song NFTs for the artist who owns the contract.",
            "version": 1
          }
        }
      },
      "contracts/ArtistV5.sol": {
        "ArtistV5": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "enum ArtistV5.TimeType",
                  "name": "timeType",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint32",
                  "name": "newTime",
                  "type": "uint32"
                }
              ],
              "name": "AuctionTimeSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "baseURI",
                  "type": "string"
                }
              ],
              "name": "BaseURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "EditionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "EditionPurchased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "PermissionedQuantitySet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleGranted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleRevoked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "SignerAddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADMIN_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMISSIONED_SALE_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "_tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "atEditionId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "atTokenId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "_ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "buyEdition",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ticketNumbers",
                  "type": "uint256[]"
                }
              ],
              "name": "checkTicketNumbers",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "",
                  "type": "bool[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "createEdition",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "depositedForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "editionCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "editions",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "baseURI",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "grantRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "hasRole",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "ownersOfTokenIds",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "revokeRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "setEditionBaseURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "setEndTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "setOwnerOverride",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "setPermissionedQuantity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_newSignerAddress",
                  "type": "address"
                }
              ],
              "name": "setSignerAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                }
              ],
              "name": "setStartTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "soundRecoveryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "withdrawFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdrawnForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "SoundXYZ - @gigamesh & @vigneshka",
            "details": "Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "buyEdition(uint256,bytes,uint256)": {
                "params": {
                  "_editionId": "The id of the edition to purchase",
                  "_signature": "A signed message for authorizing permissioned purchases",
                  "_ticketNumber": "Ticket number required for validating this buyer hasn't already bought."
                }
              },
              "checkTicketNumbers(uint256,uint256[])": {
                "params": {
                  "_editionId": "Edition id",
                  "_ticketNumbers": "List of ticket numbers (indexes)"
                }
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": {
                "params": {
                  "_baseURI": "The base URI for the edition",
                  "_editionId": "The expected edition ID",
                  "_endTime": "The end time of the auction, in seconds since unix epoch.",
                  "_fundingRecipient": "The account that will receive sales revenue.",
                  "_permissionedQuantity": "The quantity of tokens that require a signature to buy.",
                  "_price": "The price at which each token will be sold, in ETH.",
                  "_quantity": "The maximum number of tokens that can be sold.",
                  "_royaltyBPS": "The royalty amount in bps.",
                  "_signerAddress": "signer address.",
                  "_startTime": "The start time of the auction, in seconds since unix epoch."
                }
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "grantRole(bytes32,address)": {
                "params": {
                  "account": "The account to register",
                  "role": "The role to grant to the given account"
                }
              },
              "hasRole(bytes32,address)": {
                "params": {
                  "account": "The account to check",
                  "role": "The role to check"
                }
              },
              "initialize(address,string,string,string)": {
                "params": {
                  "_baseURI": "Default base URI for all editions",
                  "_name": "Name of artist",
                  "_owner": "Owner of edition",
                  "_symbol": "Symbol for the artist"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "ownersOfTokenIds(uint256[])": {
                "params": {
                  "_tokenIds": "List of token ids"
                }
              },
              "revokeRole(bytes32,address)": {
                "params": {
                  "account": "The account to revoke the role from",
                  "role": "The role to revoke"
                }
              },
              "royaltyInfo(uint256,uint256)": {
                "params": {
                  "_salePrice": "Sale price for the token",
                  "_tokenId": "token id"
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "setEditionBaseURI(uint256,string)": {
                "params": {
                  "_baseURI": "The new base URI",
                  "_editionId": "The target edition's id"
                }
              },
              "setEndTime(uint256,uint32)": {
                "params": {
                  "_editionId": "The id of the edition to set the end time for",
                  "_endTime": "The end time to set (in seconds since unix epoch)"
                }
              },
              "setOwnerOverride(address)": {
                "params": {
                  "_newOwner": "The new owner of the contract"
                }
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "params": {
                  "_editionId": "The edition id to set the permissioned quantity for",
                  "_permissionedQuantity": "The new permissiond quantity"
                }
              },
              "setSignerAddress(uint256,address)": {
                "params": {
                  "_editionId": "The edition id to set the signature address for",
                  "_newSignerAddress": "The address that will be used to sign purchases"
                }
              },
              "setStartTime(uint256,uint32)": {
                "params": {
                  "_editionId": "The id of the edition to set the start time for",
                  "_startTime": "The start time to set (in seconds since unix epoch)"
                }
              },
              "supportsInterface(bytes4)": {
                "details": "https://eips.ethereum.org/EIPS/eip-165",
                "params": {
                  "_interfaceId": "The interface id to check"
                }
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenToEdition(uint256)": {
                "params": {
                  "_tokenId": "token id"
                }
              },
              "tokenURI(uint256)": {
                "details": "Concatenate the baseURI and tokenId, to create URI."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawFunds(uint256)": {
                "params": {
                  "_editionId": "The id of the edition to withdraw from"
                }
              }
            },
            "title": "Artist",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_9204": {
                  "entryPoint": null,
                  "id": 9204,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:264:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "143:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "153:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "165:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "176:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "161:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "161:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "153:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "195:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "206:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "188:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "188:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "188:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "233:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "244:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "229:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "229:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "249:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "222:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "222:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "222:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "115:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "123:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "134:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14:248:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604080517fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e34656020820152469181019190915260600160408051601f1981840301815291905280516020909101206080526080516143e3610083600039600081816104a80152612d8001526143e36000f3fe6080604052600436106102725760003560e01c8063602787ed1161014f578063a22cb465116100c1578063e1a3d5731161007a578063e1a3d573146107e9578063e8a3d48514610816578063e985e9c51461082b578063f2fde38b14610874578063f71e54fb14610894578063fbab9e04146108a757600080fd5b8063a22cb4651461071c578063b88d4fde1461073c578063bb314ca11461075c578063c87b56dd1461077c578063d3bb05281461079c578063d547741f146107c957600080fd5b8063796726921161011357806379672692146106725780638da5cb5b146106925780638e116aea146106b057806391d14854146106d057806395d89b41146106f05780639725d92e1461070557600080fd5b8063602787ed146105d05780636352211e146105f057806370a082311461061057806375a8f08f1461063057806375b238fc1461065057600080fd5b80632a55205a116101e85780634bf44026116101ac5780634bf44026146105015780635076a64d1461051657806352e25bf21461054357806352f5c2e41461056357806356dee996146105905780635f1e6f6d146105b057600080fd5b80632a55205a146104375780632f2ff15d146104765780633644e515146104965780633ef2dbc2146104ca57806342842e0e146104e157600080fd5b80630bcca8311161023a5780630bcca83114610355578063155dd5ee1461036a57806318160ddd1461038a57806323b872dd146103ad57806327399d36146103cd578063279c806e1461040157600080fd5b806301ffc9a714610277578063065d5b85146102ac57806306fdde03146102d9578063081812fc146102fb578063095ea7b314610333575b600080fd5b34801561028357600080fd5b5061029761029236600461371f565b6108c7565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004613780565b6108f2565b6040516102a391906137cb565b3480156102e557600080fd5b506102ee6109de565b6040516102a39190613869565b34801561030757600080fd5b5061031b61031636600461387c565b610a70565b6040516001600160a01b0390911681526020016102a3565b34801561033f57600080fd5b5061035361034e3660046138aa565b610a97565b005b34801561036157600080fd5b5061031b610bb1565b34801561037657600080fd5b5061035361038536600461387c565b610c31565b34801561039657600080fd5b5061039f610c91565b6040519081526020016102a3565b3480156103b957600080fd5b506103536103c83660046138d6565b610cdd565b3480156103d957600080fd5b5061039f7fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e881565b34801561040d57600080fd5b5061042161041c36600461387c565b610d0e565b6040516102a39a99989796959493929190613917565b34801561044357600080fd5b50610457610452366004613992565b610e0e565b604080516001600160a01b0390931683526020830191909152016102a3565b34801561048257600080fd5b506103536104913660046139b4565b610fb0565b3480156104a257600080fd5b5061039f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d657600080fd5b5060ca5461039f9081565b3480156104ed57600080fd5b506103536104fc3660046138d6565b611060565b34801561050d57600080fd5b5061039f61107b565b34801561052257600080fd5b5061039f61053136600461387c565b60cd6020526000908152604090205481565b34801561054f57600080fd5b5061035361055e3660046139fd565b611097565b34801561056f57600080fd5b5061058361057e366004613a29565b6111cf565b6040516102a39190613a6a565b34801561059c57600080fd5b506103536105ab3660046139b4565b611287565b3480156105bc57600080fd5b506103536105cb366004613b56565b6113a5565b3480156105dc57600080fd5b5061039f6105eb36600461387c565b6114f8565b3480156105fc57600080fd5b5061031b61060b36600461387c565b61151a565b34801561061c57600080fd5b5061039f61062b366004613bf0565b61157a565b34801561063c57600080fd5b5061035361064b366004613bf0565b611600565b34801561065c57600080fd5b5061039f60008051602061438e83398151915281565b34801561067e57600080fd5b5061035361068d366004613c4e565b611659565b34801561069e57600080fd5b506097546001600160a01b031661031b565b3480156106bc57600080fd5b506103536106cb366004613c8c565b6117a4565b3480156106dc57600080fd5b506102976106eb3660046139b4565b611c06565b3480156106fc57600080fd5b506102ee611c31565b34801561071157600080fd5b5060cb5461039f9081565b34801561072857600080fd5b50610353610737366004613d56565b611c40565b34801561074857600080fd5b50610353610757366004613d89565b611c4b565b34801561076857600080fd5b506103536107773660046139fd565b611c83565b34801561078857600080fd5b506102ee61079736600461387c565b611d4b565b3480156107a857600080fd5b5061039f6107b736600461387c565b60cf6020526000908152604090205481565b3480156107d557600080fd5b506103536107e43660046139b4565b611ed5565b3480156107f557600080fd5b5061039f61080436600461387c565b60ce6020526000908152604090205481565b34801561082257600080fd5b506102ee611f66565b34801561083757600080fd5b50610297610846366004613dfc565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561088057600080fd5b5061035361088f366004613bf0565b611f94565b6103536108a2366004613e2a565b612023565b3480156108b357600080fd5b506103536108c23660046139fd565b6123f6565b600063152a902d60e11b6001600160e01b0319831614806108ec57506108ec826124bd565b92915050565b60606000826001600160401b0381111561090e5761090e613aab565b604051908082528060200260200182016040528015610937578160200160208202803683370190505b50905060005b838110156109d55760006109978787878581811061095d5761095d613e7c565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106109b2576109b2613e7c565b9115156020928302919091019091015250806109cd81613ea8565b91505061093d565b50949350505050565b6060606580546109ed90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1990613ec1565b8015610a665780601f10610a3b57610100808354040283529160200191610a66565b820191906000526020600020905b815481529060010190602001808311610a4957829003601f168201915b5050505050905090565b6000610a7b8261250d565b506000908152606960205260409020546001600160a01b031690565b6000610aa28261151a565b9050806001600160a01b0316836001600160a01b031603610b145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b305750610b308133610846565b610ba25760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610b0b565b610bac838361256c565b505050565b600046600103610bd4575073858a92511485715cfb754f397a7894b7724c7abd90565b46600403610bf5575073ee35e946dd73ef78d352454c3f915e2ca0a09d8790565b60405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b21031b430b4b760791b6044820152606401610b0b565b600081815260cf602090815260408083205460ce909252822054610c559190613ef5565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610c8d906001600160a01b0316826125da565b5050565b60008060015b60cb54811015610cd757600081815260cc6020526040902060020154610cc39063ffffffff1683613f0c565b915080610ccf81613ea8565b915050610c97565b50919050565b610ce733826126e7565b610d035760405162461bcd60e51b8152600401610b0b90613f24565b610bac838383612766565b60cc60205260009081526040902080546001820154600283015460038401546004850180546001600160a01b0395861696949563ffffffff808616966401000000008704821696600160401b8104831696600160601b8204841696600160801b8304851696600160a01b90930490941694169290610d8b90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db790613ec1565b8015610e045780601f10610dd957610100808354040283529160200191610e04565b820191906000526020600020905b815481529060010190602001808311610de757829003601f168201915b505050505090508a565b6000806000610e1c856114f8565b600081815260cc6020908152604080832081516101408101835281546001600160a01b039081168252600183015494820194909452600282015463ffffffff80821694830194909452640100000000810484166060830152600160401b810484166080830152600160601b8104841660a0830152600160801b8104841660c0830152600160a01b900490921660e0830152600381015490921661010082015260048201805494955092939092610120840191610ed790613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613ec1565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050509190925250508151919250506001600160a01b0316610f7a5751925060009150610fa99050565b6080810151815163ffffffff90911690612710610f978389613f72565b610fa19190613fa7565b945094505050505b9250929050565b6097546001600160a01b03163314610fda5760405162461bcd60e51b8152600401610b0b90613fbb565b610fe48282611c06565b610c8d5760008281526098602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561101c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610bac83838360405180602001604052806000815250611c4b565b6000600161108860cb5490565b6110929190613ef5565b905090565b60008051602061438e8339815191526110b86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806110dc57506110dc8133611c06565b6110f85760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc60205260409020600301546001600160a01b031661115f5760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610b0b565b600083815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8716908102919091179091558251868152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a1505050565b60606000826001600160401b038111156111eb576111eb613aab565b604051908082528060200260200182016040528015611214578160200160208202803683370190505b50905060005b8381101561127f5761124385858381811061123757611237613e7c565b9050602002013561151a565b82828151811061125557611255613e7c565b6001600160a01b03909216602092830291909101909101528061127781613ea8565b91505061121a565b509392505050565b60008051602061438e8339815191526112a86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806112cc57506112cc8133611c06565b6112e85760405162461bcd60e51b8152600401610b0b90613ff0565b6001600160a01b03821661133e5760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b600083815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03861690811790915591518581527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a2505050565b600054610100900460ff16158080156113c55750600054600160ff909116105b806113df5750303b1580156113df575060005460ff166001145b6114425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b0b565b6000805460ff191660011790558015611465576000805461ff0019166101001790555b61146f8484612902565b611477612933565b61148085611f94565b4660011461149d57815161149b9060c9906020850190613600565b505b6114ab60cb80546001019055565b80156114f1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000608082901c8082036108ec575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806108ec5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b60006001600160a01b0382166115e45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b0b565b506001600160a01b031660009081526068602052604090205490565b611608610bb1565b6001600160a01b0316336001600160a01b0316148061163157506097546001600160a01b031633145b61164d5760405162461bcd60e51b8152600401610b0b90613ff0565b6116568161296c565b50565b60008051602061438e83398151915261167a6097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061169e575061169e8133611c06565b6116ba5760405162461bcd60e51b8152600401610b0b90613ff0565b600084815260cc6020526040902060020154640100000000900463ffffffff161515806117045750600084815260cc6020526040902060020154600160a01b900463ffffffff1615155b6117465760405162461bcd60e51b81526020600482015260136024820152722737b732bc34b9ba32b73a1032b234ba34b7b760691b6044820152606401610b0b565b600084815260cc60205260409020611762906004018484613680565b507f1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd41258984848460405161179693929190614016565b60405180910390a150505050565b60008051602061438e8339815191526117c56097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806117e957506117e98133611c06565b6118055760405162461bcd60e51b8152600401610b0b90613ff0565b60008963ffffffff161161184f5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610b0b565b6001600160a01b038b166118a55760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610b0b565b8663ffffffff168663ffffffff16116119115760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610b0b565b60cb5483146119555760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c819591a5d1a5bdb88125160821b6044820152606401610b0b565b63ffffffff8516156119b7576001600160a01b0384166119b75760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b6040518061014001604052808c6001600160a01b031681526020018b8152602001600063ffffffff1681526020018a63ffffffff1681526020018963ffffffff1681526020018863ffffffff1681526020018763ffffffff1681526020018663ffffffff168152602001856001600160a01b031681526020018381525060cc6000611a4160cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355858501516001840155928501516002830180546060880151608089015160a08a015160c08b015160e08c015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b939091169290920291909117905561010085015160038301805490941691161790915561012083015180519192611b6b92600485019290910190613600565b505060cb54604080516001600160a01b038f81168252602082018f905263ffffffff8e8116838501528d811660608401528c811660808401528b811660a08401528a1660c0830152881660e082015290519192507fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f391908190036101000190a2611bf960cb80546001019055565b5050505050505050505050565b60009182526098602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060606680546109ed90613ec1565b610c8d3383836129be565b611c5533836126e7565b611c715760405162461bcd60e51b8152600401610b0b90613f24565b611c7d84848484612a8c565b50505050565b60008051602061438e833981519152611ca46097546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611cc85750611cc88133611c06565b611ce45760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff86169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90611398906001908790614062565b6000818152606760205260409020546060906001600160a01b0316611dca5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b0b565b6000611dd5836114f8565b600081815260cc6020526040812060040180549293509091611df690613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2290613ec1565b8015611e6f5780601f10611e4457610100808354040283529160200191611e6f565b820191906000526020600020905b815481529060010190602001808311611e5257829003601f168201915b50505050509050600381511115611eb35780611e8a85612abf565b604051602001611e9b9291906140aa565b60405160208183030381529060405292505050919050565b611ebb612bbf565b611ec485612abf565b604051602001611e9b9291906140f2565b6097546001600160a01b03163314611eff5760405162461bcd60e51b8152600401610b0b90613fbb565b611f098282611c06565b15610c8d5760008281526098602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060611f70612bbf565b604051602001611f809190614121565b604051602081830303815290604052905090565b6097546001600160a01b03163314611fbe5760405162461bcd60e51b8152600401610b0b90613fbb565b6001600160a01b03811661164d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0b565b600084815260cc60205260408120600180820154600290920154919263ffffffff6401000000008404811693169161205c90839061414f565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166120dc5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610b0b565b8634101561213e5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610b0b565b428263ffffffff16116121875760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610b0b565b428363ffffffff161115612289578063ffffffff168563ffffffff16106122165760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610b0b565b60008b815260cc60205260409020600301546001600160a01b031661223d8b8b8e8c612c16565b6001600160a01b0316146122845760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610b0b565b6122ee565b8563ffffffff168563ffffffff16106122ee5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610b0b565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b1761232d6097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b039182169116036123775760008c815260ce60205260408120805434929061236c908490613f0c565b909155506123999050565b60008c815260cc6020526040902054612399906001600160a01b0316346125da565b6123a33382612e16565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b60008051602061438e8339815191526124176097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061243b575061243b8133611c06565b6124575760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff871690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c9161139891908790614062565b60006001600160e01b031982166380ac58cd60e01b14806124ee57506001600160e01b03198216635b5e139f60e01b145b806108ec57506301ffc9a760e01b6001600160e01b03198316146108ec565b6000818152606760205260409020546001600160a01b03166116565760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125a18261151a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b8047101561262a5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610b0b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612677576040519150601f19603f3d011682016040523d82523d6000602084013e61267c565b606091505b5050905080610bac5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610b0b565b6000806126f38361151a565b9050806001600160a01b0316846001600160a01b0316148061273a57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061275e5750836001600160a01b031661275384610a70565b6001600160a01b0316145b949350505050565b826001600160a01b03166127798261151a565b6001600160a01b0316146127dd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b0b565b6001600160a01b03821661283f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0b565b61284a60008261256c565b6001600160a01b0383166000908152606860205260408120805460019290612873908490613ef5565b90915550506001600160a01b03821660009081526068602052604081208054600192906128a1908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff166129295760405162461bcd60e51b8152600401610b0b9061416e565b610c8d8282612f58565b600054610100900460ff1661295a5760405162461bcd60e51b8152600401610b0b9061416e565b612962612fa6565b61296a612fcd565b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603612a1f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b0b565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a97848484612766565b612aa384848484612ffd565b611c7d5760405162461bcd60e51b8152600401610b0b906141b9565b606081600003612ae65750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612b105780612afa81613ea8565b9150612b099050600a83613fa7565b9150612aea565b6000816001600160401b03811115612b2a57612b2a613aab565b6040519080825280601f01601f191660200182016040528015612b54576020820181803683370190505b5090505b841561275e57612b69600183613ef5565b9150612b76600a8661420b565b612b81906030613f0c565b60f81b818381518110612b9657612b96613e7c565b60200101906001600160f81b031916908160001a905350612bb8600a86613fa7565b9450612b58565b60606000612bce3060146130fb565b905046600103612bfe5780604051602001612be9919061421f565b60405160208183030381529060405291505090565b60c981604051602001612be992919061426f565b5090565b60006401000000008210612c6c5760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d6178000000000000006044820152606401610b0b565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c600116928315612cf95760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b6064820152608401610b0b565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e283015261010282015261012201604051602081830303815290604052805190602001209050612e088a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859392505061329d9050565b9a9950505050505050505050565b6001600160a01b038216612e6c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b0b565b6000818152606760205260409020546001600160a01b031615612ed15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b0b565b6001600160a01b0382166000908152606860205260408120805460019290612efa908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16612f7f5760405162461bcd60e51b8152600401610b0b9061416e565b8151612f92906065906020850190613600565b508051610bac906066906020840190613600565b600054610100900460ff1661296a5760405162461bcd60e51b8152600401610b0b9061416e565b600054610100900460ff16612ff45760405162461bcd60e51b8152600401610b0b9061416e565b61296a3361296c565b60006001600160a01b0384163b156130f357604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061304190339089908890889060040161431c565b6020604051808303816000875af192505050801561307c575060408051601f3d908101601f1916820190925261307991810190614359565b60015b6130d9573d8080156130aa576040519150601f19603f3d011682016040523d82523d6000602084013e6130af565b606091505b5080516000036130d15760405162461bcd60e51b8152600401610b0b906141b9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061275e565b50600161275e565b6060600061310a836002613f72565b613115906002613f0c565b6001600160401b0381111561312c5761312c613aab565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b509050600360fc1b8160008151811061317157613171613e7c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131a0576131a0613e7c565b60200101906001600160f81b031916908160001a90535060006131c4846002613f72565b6131cf906001613f0c565b90505b6001811115613247576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061320357613203613e7c565b1a60f81b82828151811061321957613219613e7c565b60200101906001600160f81b031916908160001a90535060049490941c9361324081614376565b90506131d2565b5083156132965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b0b565b9392505050565b60008060006132ac85856132b9565b9150915061127f81613324565b60008082516041036132ef5760208301516040840151606085015160001a6132e3878285856134da565b94509450505050610fa9565b8251604003613318576020830151604084015161330d8683836135c7565b935093505050610fa9565b50600090506002610fa9565b60008160048111156133385761333861404c565b036133405750565b60018160048111156133545761335461404c565b036133a15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b0b565b60028160048111156133b5576133b561404c565b036134025760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b0b565b60038160048111156134165761341661404c565b0361346e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b0b565b60048160048111156134825761348261404c565b036116565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b0b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561351157506000905060036135be565b8460ff16601b1415801561352957508460ff16601c14155b1561353a57506000905060046135be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561358e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166135b7576000600192509250506135be565b9150600090505b94509492505050565b6000806001600160ff1b038316816135e460ff86901c601b613f0c565b90506135f2878288856134da565b935093505050935093915050565b82805461360c90613ec1565b90600052602060002090601f01602090048101928261362e5760008555613674565b82601f1061364757805160ff1916838001178555613674565b82800160010185558215613674579182015b82811115613674578251825591602001919060010190613659565b50612c129291506136f4565b82805461368c90613ec1565b90600052602060002090601f0160209004810192826136ae5760008555613674565b82601f106136c75782800160ff19823516178555613674565b82800160010185558215613674579182015b828111156136745782358255916020019190600101906136d9565b5b80821115612c1257600081556001016136f5565b6001600160e01b03198116811461165657600080fd5b60006020828403121561373157600080fd5b813561329681613709565b60008083601f84011261374e57600080fd5b5081356001600160401b0381111561376557600080fd5b6020830191508360208260051b8501011115610fa957600080fd5b60008060006040848603121561379557600080fd5b8335925060208401356001600160401b038111156137b257600080fd5b6137be8682870161373c565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783511515835292840192918401916001016137e7565b50909695505050505050565b60005b8381101561382c578181015183820152602001613814565b83811115611c7d5750506000910152565b60008151808452613855816020860160208601613811565b601f01601f19169290920160200192915050565b602081526000613296602083018461383d565b60006020828403121561388e57600080fd5b5035919050565b6001600160a01b038116811461165657600080fd5b600080604083850312156138bd57600080fd5b82356138c881613895565b946020939093013593505050565b6000806000606084860312156138eb57600080fd5b83356138f681613895565b9250602084013561390681613895565b929592945050506040919091013590565b6001600160a01b038b81168252602082018b905263ffffffff8a811660408401528981166060840152888116608084015287811660a084015286811660c0840152851660e0830152831661010082015261014061012082018190526000906139818382018561383d565b9d9c50505050505050505050505050565b600080604083850312156139a557600080fd5b50508035926020909101359150565b600080604083850312156139c757600080fd5b8235915060208301356139d981613895565b809150509250929050565b803563ffffffff811681146139f857600080fd5b919050565b60008060408385031215613a1057600080fd5b82359150613a20602084016139e4565b90509250929050565b60008060208385031215613a3c57600080fd5b82356001600160401b03811115613a5257600080fd5b613a5e8582860161373c565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783516001600160a01b031683529284019291840191600101613a86565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115613adb57613adb613aab565b604051601f8501601f19908116603f01168101908282118183101715613b0357613b03613aab565b81604052809350858152868686011115613b1c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613b4757600080fd5b61329683833560208501613ac1565b60008060008060808587031215613b6c57600080fd5b8435613b7781613895565b935060208501356001600160401b0380821115613b9357600080fd5b613b9f88838901613b36565b94506040870135915080821115613bb557600080fd5b613bc188838901613b36565b93506060870135915080821115613bd757600080fd5b50613be487828801613b36565b91505092959194509250565b600060208284031215613c0257600080fd5b813561329681613895565b60008083601f840112613c1f57600080fd5b5081356001600160401b03811115613c3657600080fd5b602083019150836020828501011115610fa957600080fd5b600080600060408486031215613c6357600080fd5b8335925060208401356001600160401b03811115613c8057600080fd5b6137be86828701613c0d565b6000806000806000806000806000806101408b8d031215613cac57600080fd5b8a35613cb781613895565b995060208b01359850613ccc60408c016139e4565b9750613cda60608c016139e4565b9650613ce860808c016139e4565b9550613cf660a08c016139e4565b9450613d0460c08c016139e4565b935060e08b0135613d1481613895565b92506101008b013591506101208b01356001600160401b03811115613d3857600080fd5b613d448d828e01613b36565b9150509295989b9194979a5092959850565b60008060408385031215613d6957600080fd5b8235613d7481613895565b9150602083013580151581146139d957600080fd5b60008060008060808587031215613d9f57600080fd5b8435613daa81613895565b93506020850135613dba81613895565b92506040850135915060608501356001600160401b03811115613ddc57600080fd5b8501601f81018713613ded57600080fd5b613be487823560208401613ac1565b60008060408385031215613e0f57600080fd5b8235613e1a81613895565b915060208301356139d981613895565b60008060008060608587031215613e4057600080fd5b8435935060208501356001600160401b03811115613e5d57600080fd5b613e6987828801613c0d565b9598909750949560400135949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613eba57613eba613e92565b5060010190565b600181811c90821680613ed557607f821691505b602082108103610cd757634e487b7160e01b600052602260045260246000fd5b600082821015613f0757613f07613e92565b500390565b60008219821115613f1f57613f1f613e92565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615613f8c57613f8c613e92565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613fb657613fb6613f91565b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061408457634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600081516140a0818560208601613811565b9290920192915050565b600083516140bc818460208801613811565b8351908301906140d0818360208801613811565b6d17b6b2ba30b230ba30973539b7b760911b9101908152600e01949350505050565b60008351614104818460208801613811565b835190830190614118818360208801613811565b01949350505050565b60008251614133818460208701613811565b691cdd1bdc99599c9bdb9d60b21b920191825250600a01919050565b600063ffffffff80831681851680830382111561411857614118613e92565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261421a5761421a613f91565b500690565b7f68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f000081526000825161425781601e850160208701613811565b602f60f81b601e939091019283015250601f01919050565b600080845481600182811c91508083168061428b57607f831692505b602080841082036142aa57634e487b7160e01b86526022600452602486fd5b8180156142be57600181146142cf576142fc565b60ff198616895284890196506142fc565b60008b81526020902060005b868110156142f45781548b8201529085019083016142db565b505084890196505b505050614309848861408e565b602f60f81b815201979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061434f9083018461383d565b9695505050505050565b60006020828403121561436b57600080fd5b815161329681613709565b60008161438557614385613e92565b50600019019056fedf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42a26469706673582212207fd3ca8d6b60ba543ae3eacf6ce1388c9010c1817dc7e7c2a63e4267abdcd00264736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 PUSH1 0x20 DUP3 ADD MSTORE CHAINID SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x43E3 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4A8 ADD MSTORE PUSH2 0x2D80 ADD MSTORE PUSH2 0x43E3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x272 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x602787ED GT PUSH2 0x14F JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x7E9 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x874 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x894 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x77C JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x79C JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79672692 GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x79672692 EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x8E116AEA EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0x9725D92E EQ PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x602787ED EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x75A8F08F EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4BF44026 GT PUSH2 0x1AC JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x5076A64D EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0x5F1E6F6D EQ PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x3EF2DBC2 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCCA831 GT PUSH2 0x23A JUMPI DUP1 PUSH4 0xBCCA831 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x27399D36 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x333 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x371F JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CC PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x37CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3869 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x34E CALLDATASIZE PUSH1 0x4 PUSH2 0x38AA JUMP JUMPDEST PUSH2 0xA97 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0xBB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x421 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457 PUSH2 0x452 CALLDATASIZE PUSH1 0x4 PUSH2 0x3992 JUMP JUMPDEST PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0x1060 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x107B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x522 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x531 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1097 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x583 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A29 JUMP JUMPDEST PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3A6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5AB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3B56 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x5EB CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x14F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x60B CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x151A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x157A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x1659 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3C8C JUMP JUMPDEST PUSH2 0x17A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1C31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCB SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x737 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D56 JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x757 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D89 JUMP JUMPDEST PUSH2 0x1C4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x797 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x1D4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x7B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x7E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1ED5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x804 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1F66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x846 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x88F CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1F94 JUMP JUMPDEST PUSH2 0x353 PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E2A JUMP JUMPDEST PUSH2 0x2023 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x23F6 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x8EC JUMPI POP PUSH2 0x8EC DUP3 PUSH2 0x24BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x90E JUMPI PUSH2 0x90E PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x937 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 PUSH2 0x997 DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x95D JUMPI PUSH2 0x95D PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9B2 JUMPI PUSH2 0x9B2 PUSH2 0x3E7C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0x9CD DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x93D JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA19 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA66 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA3B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA66 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA49 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7B DUP3 PUSH2 0x250D JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA2 DUP3 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0xB30 JUMPI POP PUSH2 0xB30 DUP2 CALLER PUSH2 0x846 JUMP JUMPDEST PUSH2 0xBA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 PUSH2 0x256C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH1 0x1 SUB PUSH2 0xBD4 JUMPI POP PUSH20 0x858A92511485715CFB754F397A7894B7724C7ABD SWAP1 JUMP JUMPDEST CHAINID PUSH1 0x4 SUB PUSH2 0xBF5 JUMPI POP PUSH20 0xEE35E946DD73EF78D352454C3F915E2CA0A09D87 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x3AB739BAB83837B93A32B21031B430B4B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xC8D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x25DA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCC3 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x3F0C JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xCCF DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC97 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCE7 CALLER DUP3 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0xD03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH2 0x2766 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP7 SWAP5 SWAP6 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH5 0x100000000 DUP8 DIV DUP3 AND SWAP7 PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND SWAP7 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP5 AND SWAP7 PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP6 AND SWAP7 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV SWAP1 SWAP5 AND SWAP5 AND SWAP3 SWAP1 PUSH2 0xD8B SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xDB7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE04 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDD9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE04 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDE7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE1C DUP6 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH5 0x100000000 DUP2 DIV DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP5 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP3 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD DUP1 SLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP1 SWAP3 PUSH2 0x120 DUP5 ADD SWAP2 PUSH2 0xED7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF03 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF50 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF25 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF50 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF33 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 SWAP1 SWAP3 MSTORE POP POP DUP2 MLOAD SWAP2 SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7A JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xFA9 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xF97 DUP4 DUP10 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0xFA1 SWAP2 SWAP1 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0xFE4 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x101C CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1C4B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1088 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1092 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x10B8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x10DC JUMPI POP PUSH2 0x10DC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x11EB JUMPI PUSH2 0x11EB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1214 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x127F JUMPI PUSH2 0x1243 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x151A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1255 JUMPI PUSH2 0x1255 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x1277 DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x121A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x12A8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x12CC JUMPI POP PUSH2 0x12CC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x12E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x133E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP6 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x13C5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x13DF JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13DF JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1442 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1465 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x146F DUP5 DUP5 PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x1477 PUSH2 0x2933 JUMP JUMPDEST PUSH2 0x1480 DUP6 PUSH2 0x1F94 JUMP JUMPDEST CHAINID PUSH1 0x1 EQ PUSH2 0x149D JUMPI DUP2 MLOAD PUSH2 0x149B SWAP1 PUSH1 0xC9 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP JUMPDEST PUSH2 0x14AB PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14F1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x8EC JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x8EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1608 PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1631 JUMPI POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x1656 DUP2 PUSH2 0x296C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x167A PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x169E JUMPI POP PUSH2 0x169E DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x16BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x1704 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x1746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x2737B732BC34B9BA32B73A1032B234BA34B7B7 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1762 SWAP1 PUSH1 0x4 ADD DUP5 DUP5 PUSH2 0x3680 JUMP JUMPDEST POP PUSH32 0x1A7FCE8987747A468A9FD9D320891F1519376DAB1BAEB8E72E8D4447FD412589 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1796 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x17C5 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x17E9 JUMPI POP PUSH2 0x17E9 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1805 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH4 0xFFFFFFFF AND GT PUSH2 0x184F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH2 0x18A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 PUSH4 0xFFFFFFFF AND DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1911 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0xCB SLOAD DUP4 EQ PUSH2 0x1955 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x15DC9BDB99C819591A5D1A5BDB881251 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND ISZERO PUSH2 0x19B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x1A41 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0xC0 DUP12 ADD MLOAD PUSH1 0xE0 DUP13 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP1 MLOAD SWAP2 SWAP3 PUSH2 0x1B6B SWAP3 PUSH1 0x4 DUP6 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP POP PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP15 DUP2 AND DUP4 DUP6 ADD MSTORE DUP14 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP13 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP12 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP11 AND PUSH1 0xC0 DUP4 ADD MSTORE DUP9 AND PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 LOG2 PUSH2 0x1BF9 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST PUSH2 0xC8D CALLER DUP4 DUP4 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1C55 CALLER DUP4 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0x1C71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0x1C7D DUP5 DUP5 DUP5 DUP5 PUSH2 0x2A8C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1CA4 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1CC8 JUMPI POP PUSH2 0x1CC8 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1CE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x1398 SWAP1 PUSH1 0x1 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD5 DUP4 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x1DF6 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E22 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1E6F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E44 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1E6F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E52 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x3 DUP2 MLOAD GT ISZERO PUSH2 0x1EB3 JUMPI DUP1 PUSH2 0x1E8A DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EBB PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x1EC4 DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40F2 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1EFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0x1F09 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F70 PUSH2 0x2BBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1F80 SWAP2 SWAP1 PUSH2 0x4121 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1FBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x205C SWAP1 DUP4 SWAP1 PUSH2 0x414F JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x20DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x213E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x2187 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2289 JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x2216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x223D DUP12 DUP12 DUP15 DUP13 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x22EE JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x22EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x232D PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x2377 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x236C SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2399 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2399 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x25DA JUMP JUMPDEST PUSH2 0x23A3 CALLER DUP3 PUSH2 0x2E16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2417 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x243B JUMPI POP PUSH2 0x243B DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x2457 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x1398 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x24EE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x8EC JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x25A1 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2677 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x267C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x26F3 DUP4 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x273A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x275E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2753 DUP5 PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2779 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x283F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x284A PUSH1 0x0 DUP3 PUSH2 0x256C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2873 SWAP1 DUP5 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28A1 SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2929 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0xC8D DUP3 DUP3 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x295A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x2962 PUSH2 0x2FA6 JUMP JUMPDEST PUSH2 0x296A PUSH2 0x2FCD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2A97 DUP5 DUP5 DUP5 PUSH2 0x2766 JUMP JUMPDEST PUSH2 0x2AA3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2FFD JUMP JUMPDEST PUSH2 0x1C7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2AE6 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B10 JUMPI DUP1 PUSH2 0x2AFA DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B09 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x3FA7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B2A JUMPI PUSH2 0x2B2A PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2B54 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x275E JUMPI PUSH2 0x2B69 PUSH1 0x1 DUP4 PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B76 PUSH1 0xA DUP7 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x2B81 SWAP1 PUSH1 0x30 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B96 JUMPI PUSH2 0x2B96 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2BB8 PUSH1 0xA DUP7 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP PUSH2 0x2B58 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2BCE ADDRESS PUSH1 0x14 PUSH2 0x30FB JUMP JUMPDEST SWAP1 POP CHAINID PUSH1 0x1 SUB PUSH2 0x2BFE JUMPI DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP2 SWAP1 PUSH2 0x421F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0xC9 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP3 SWAP2 SWAP1 PUSH2 0x426F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x2CF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x2E08 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x329D SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2ED1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2EFA SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2F7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2F92 SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xBAC SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x296A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x296A CALLER PUSH2 0x296C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x30F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x3041 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x431C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x307C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3079 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4359 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x30D9 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x30AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x30D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x275E JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x275E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x310A DUP4 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x3115 SWAP1 PUSH1 0x2 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x312C JUMPI PUSH2 0x312C PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3156 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3171 JUMPI PUSH2 0x3171 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x31A0 JUMPI PUSH2 0x31A0 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x31C4 DUP5 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x31CF SWAP1 PUSH1 0x1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3247 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x3203 JUMPI PUSH2 0x3203 PUSH2 0x3E7C JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3219 JUMPI PUSH2 0x3219 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x3240 DUP2 PUSH2 0x4376 JUMP JUMPDEST SWAP1 POP PUSH2 0x31D2 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x3296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32AC DUP6 DUP6 PUSH2 0x32B9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x127F DUP2 PUSH2 0x3324 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x32EF JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x32E3 DUP8 DUP3 DUP6 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xFA9 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x3318 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x330D DUP7 DUP4 DUP4 PUSH2 0x35C7 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xFA9 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3338 JUMPI PUSH2 0x3338 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3340 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3354 JUMPI PUSH2 0x3354 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x33A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x33B5 JUMPI PUSH2 0x33B5 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3402 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3416 JUMPI PUSH2 0x3416 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x346E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3482 JUMPI PUSH2 0x3482 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x3511 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x35BE JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3529 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x353A JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x35BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x358E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35B7 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x35BE JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x35E4 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP PUSH2 0x35F2 DUP8 DUP3 DUP9 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x360C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x362E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3647 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3659 JUMP JUMPDEST POP PUSH2 0x2C12 SWAP3 SWAP2 POP PUSH2 0x36F4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x368C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36AE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x36C7 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36D9 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2C12 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x373C JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x37E7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x382C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3814 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1C7D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3855 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3296 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x388E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x38C8 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38F6 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3906 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP11 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE DUP10 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP9 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP8 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0xC0 DUP5 ADD MSTORE DUP6 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP4 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3981 DUP4 DUP3 ADD DUP6 PUSH2 0x383D JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3A20 PUSH1 0x20 DUP5 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3A52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A5E DUP6 DUP3 DUP7 ADD PUSH2 0x373C JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A86 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x3ADB JUMPI PUSH2 0x3ADB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3B03 JUMPI PUSH2 0x3B03 PUSH2 0x3AAB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x3B1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3296 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3B77 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B9F DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BC1 DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE4 DUP8 DUP3 DUP9 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x3C0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x3CAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x3CB7 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x3CCC PUSH1 0x40 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP8 POP PUSH2 0x3CDA PUSH1 0x60 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP7 POP PUSH2 0x3CE8 PUSH1 0x80 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP6 POP PUSH2 0x3CF6 PUSH1 0xA0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP5 POP PUSH2 0x3D04 PUSH1 0xC0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP4 POP PUSH1 0xE0 DUP12 ADD CALLDATALOAD PUSH2 0x3D14 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3D38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D44 DUP14 DUP3 DUP15 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D74 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x39D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3DAA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3DBA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x3DED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BE4 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E1A DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E69 DUP8 DUP3 DUP9 ADD PUSH2 0x3C0D JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3EBA JUMPI PUSH2 0x3EBA PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3ED5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCD7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3F07 JUMPI PUSH2 0x3F07 PUSH2 0x3E92 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F1F JUMPI PUSH2 0x3F1F PUSH2 0x3E92 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3F8C JUMPI PUSH2 0x3F8C PUSH2 0x3E92 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3FB6 JUMPI PUSH2 0x3FB6 PUSH2 0x3F91 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x4084 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH2 0x40A0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x40BC DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x40D0 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH14 0x17B6B2BA30B230BA30973539B7B7 PUSH1 0x91 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0xE ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4104 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4118 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4133 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0xA ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4118 JUMPI PUSH2 0x4118 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x421A JUMPI PUSH2 0x421A PUSH2 0x3F91 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x68747470733A2F2F6D657461646174612E736F756E642E78797A2F76312F0000 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4257 DUP2 PUSH1 0x1E DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL PUSH1 0x1E SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x1F ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x428B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x42AA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP7 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP7 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x42BE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x42CF JUMPI PUSH2 0x42FC JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x42FC JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x42F4 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x42DB JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP PUSH2 0x4309 DUP5 DUP9 PUSH2 0x408E JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL DUP2 MSTORE ADD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x434F SWAP1 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x436B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x4385 JUMPI PUSH2 0x4385 PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP INVALID 0xDF DUP12 0x4C MSTORE 0xF INVALID NOT PUSH29 0x5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42A264697066 PUSH20 0x582212207FD3CA8D6B60BA543AE3EACF6CE1388C SWAP1 LT 0xC1 DUP2 PUSH30 0xC7E7C2A63E4267ABDCD00264736F6C634300080E00330000000000000000 ",
              "sourceMap": "2223:22332:40:-:0;;;5882:130;;;;;;;;;-1:-1:-1;5935:69:40;;;5946:42;5935:69;;;188:25:46;5990:13:40;229:18:46;;;222:34;;;;161:18;;5935:69:40;;;-1:-1:-1;;5935:69:40;;;;;;;;;5925:80;;5935:69;5925:80;;;;5906:99;;2223:22332;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ADMIN_ROLE_11699": {
                  "entryPoint": null,
                  "id": 11699,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@DOMAIN_SEPARATOR_9065": {
                  "entryPoint": null,
                  "id": 9065,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@PERMISSIONED_SALE_TYPEHASH_9063": {
                  "entryPoint": null,
                  "id": 9063,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__AccessManager_init_11742": {
                  "entryPoint": 10547,
                  "id": 11742,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__AccessManager_init_unchained_11753": {
                  "entryPoint": 12237,
                  "id": 11753,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Context_init_unchained_2140": {
                  "entryPoint": 12198,
                  "id": 2140,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__ERC721_init_891": {
                  "entryPoint": 10498,
                  "id": 891,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__ERC721_init_unchained_909": {
                  "entryPoint": 12120,
                  "id": 909,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 9580,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 12285,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_contractBaseURI_10363": {
                  "entryPoint": 11199,
                  "id": 10363,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getBitForTicketNumber_10317": {
                  "entryPoint": null,
                  "id": 10317,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 9959,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_1423": {
                  "entryPoint": 11798,
                  "id": 1423,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 9485,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 10892,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_sendFunds_10162": {
                  "entryPoint": 9690,
                  "id": 10162,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 10686,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_throwError_4335": {
                  "entryPoint": 13092,
                  "id": 4335,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_tokenToEdition_9082": {
                  "entryPoint": null,
                  "id": 9082,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_transferOwnership_11819": {
                  "entryPoint": 10604,
                  "id": 11819,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 10086,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 2711,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@atEditionId_9073": {
                  "entryPoint": null,
                  "id": 9073,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@atTokenId_9070": {
                  "entryPoint": null,
                  "id": 9070,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 5498,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@buyEdition_9538": {
                  "entryPoint": 8227,
                  "id": 9538,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@checkTicketNumbers_10100": {
                  "entryPoint": 2290,
                  "id": 10100,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@contractURI_9839": {
                  "entryPoint": 8038,
                  "id": 9839,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@createEdition_9360": {
                  "entryPoint": 6052,
                  "id": 9360,
                  "parameterSlots": 10,
                  "returnSlots": 0
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@depositedForEdition_9086": {
                  "entryPoint": null,
                  "id": 9086,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@editionCount_9969": {
                  "entryPoint": 4219,
                  "id": 9969,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@editions_9078": {
                  "entryPoint": 3342,
                  "id": 9078,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1121": {
                  "entryPoint": 2672,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_10249": {
                  "entryPoint": 11286,
                  "id": 10249,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@grantRole_11852": {
                  "entryPoint": 4016,
                  "id": 11852,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@hasRole_11901": {
                  "entryPoint": 7174,
                  "id": 11901,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_9246": {
                  "entryPoint": 5029,
                  "id": 9246,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 2526,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 5402,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_11762": {
                  "entryPoint": null,
                  "id": 11762,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownersOfTokenIds_10043": {
                  "entryPoint": 4559,
                  "id": 10043,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@recover_4427": {
                  "entryPoint": 12957,
                  "id": 4427,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@revokeRole_11884": {
                  "entryPoint": 7893,
                  "id": 11884,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@royaltyInfo_9898": {
                  "entryPoint": 3598,
                  "id": 9898,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 4192,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 7243,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 7232,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setEditionBaseURI_9763": {
                  "entryPoint": 5721,
                  "id": 9763,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setEndTime_9623": {
                  "entryPoint": 7299,
                  "id": 9623,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setOwnerOverride_9722": {
                  "entryPoint": 5632,
                  "id": 9722,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setPermissionedQuantity_9694": {
                  "entryPoint": 4247,
                  "id": 9694,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSignerAddress_9657": {
                  "entryPoint": 4743,
                  "id": 9657,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setStartTime_9597": {
                  "entryPoint": 9206,
                  "id": 9597,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@soundRecoveryAddress_10128": {
                  "entryPoint": 2993,
                  "id": 10128,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 9405,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_9956": {
                  "entryPoint": 2247,
                  "id": 9956,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 7217,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toHexString_4250": {
                  "entryPoint": 12539,
                  "id": 4250,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@toString_4133": {
                  "entryPoint": 10943,
                  "id": 4133,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenToEdition_9995": {
                  "entryPoint": 5368,
                  "id": 9995,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_9824": {
                  "entryPoint": 7499,
                  "id": 9824,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalSupply_9932": {
                  "entryPoint": 3217,
                  "id": 9932,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 3293,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_11799": {
                  "entryPoint": 8084,
                  "id": 11799,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_4400": {
                  "entryPoint": 12985,
                  "id": 4400,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_4474": {
                  "entryPoint": 13767,
                  "id": 4474,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_4585": {
                  "entryPoint": 13530,
                  "id": 4585,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@withdrawFunds_9571": {
                  "entryPoint": 3121,
                  "id": 9571,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawnForEdition_9090": {
                  "entryPoint": null,
                  "id": 9090,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 14140,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 15041,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_string": {
                  "entryPoint": 15158,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_string_calldata": {
                  "entryPoint": 15373,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 15344,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr": {
                  "entryPoint": 15500,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 10
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 15868,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 14550,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 15753,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 15702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 15190,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 14506,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 14889,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 14772,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 14111,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 17241,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 14460,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 14208,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256": {
                  "entryPoint": 15914,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_string_calldata_ptr": {
                  "entryPoint": 15438,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 14738,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint32": {
                  "entryPoint": 14845,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint32": {
                  "entryPoint": 14820,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 16526,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_memory_ptr": {
                  "entryPoint": 14397,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_fba9": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16626,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16554,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16673,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 17007,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16927,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14615,
                  "id": null,
                  "parameterSlots": 11,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 17180,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14954,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14283,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_enum$_TimeType_$9127_t_uint256__to_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": 16482,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14441,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16825,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16368,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16315,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16750,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16164,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16406,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 16140,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint32": {
                  "entryPoint": 16719,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 16295,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 16242,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 16117,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 14353,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "decrement_t_uint256": {
                  "entryPoint": 17270,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 16065,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 16040,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 16907,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 16018,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 16273,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 16460,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 15996,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 15019,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 14485,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 14089,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:40503:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "676:283:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "725:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "734:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "737:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "727:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "727:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "727:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "704:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "712:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "700:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "700:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "696:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "696:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "689:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "686:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "750:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "773:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "760:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "760:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "823:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "832:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "835:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "825:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "825:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "825:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "795:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "803:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "789:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "864:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "872:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "860:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "946:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "949:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "900:6:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "912:1:46",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "915:6:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "908:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "908:14:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "896:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "896:27:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "925:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "892:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "892:38:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "932:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "889:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "889:47:46"
                              },
                              "nodeType": "YulIf",
                              "src": "886:67:46"
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "639:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "647:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "655:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "665:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:367:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1086:383:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1132:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1141:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1144:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1134:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1134:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1134:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1103:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1103:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1128:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1099:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1099:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1096:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1157:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1180:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1167:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1167:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1157:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1199:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1230:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1241:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1226:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1226:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1213:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1213:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1203:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1288:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1297:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1300:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1290:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1290:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1290:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1260:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1268:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1257:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1254:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1313:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1392:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1377:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1377:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1401:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1339:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1339:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1317:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1327:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1418:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1428:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1418:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1445:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1455:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1036:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1047:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1059:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1067:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1075:6:46",
                            "type": ""
                          }
                        ],
                        "src": "964:505:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1619:497:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1629:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1639:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1633:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1668:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1679:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1664:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1664:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1709:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1691:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1691:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1691:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1721:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "1732:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "1725:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1747:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1767:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1761:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1761:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1751:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1790:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1798:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1783:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1783:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1783:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1814:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1825:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1836:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1821:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1821:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1814:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1866:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1874:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1862:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1862:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1852:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1886:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1895:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1890:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:136:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "1975:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "srcPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2000:6:46"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1994:5:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1994:13:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "1987:6:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1987:21:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "1980:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1980:29:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1968:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1968:42:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1968:42:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2023:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2034:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2030:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2030:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2023:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2055:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2069:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2077:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2065:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2065:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2055:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1916:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1919:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1913:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1913:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1927:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1929:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1938:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1941:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1934:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1934:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1909:3:46",
                                "statements": []
                              },
                              "src": "1905:185:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2099:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "2107:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2099:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1588:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1599:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1610:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1474:642:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2174:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2184:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2193:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2188:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2253:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2278:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2283:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2274:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2274:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2297:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2302:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2293:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2293:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2287:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2287:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2267:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2267:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2214:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2217:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2211:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2211:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2225:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2227:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2236:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2239:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2232:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2232:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2227:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2207:3:46",
                                "statements": []
                              },
                              "src": "2203:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2342:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2355:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "2360:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2351:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2351:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2369:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2344:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2344:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2331:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2334:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2328:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2328:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2325:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2152:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "2157:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2162:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2121:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2445:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2455:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2475:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2469:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2469:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2459:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2497:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2502:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2490:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2490:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2544:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2551:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2540:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2540:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2562:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2567:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2558:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2558:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2574:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2518:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2518:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2518:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2590:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2605:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2618:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2626:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2614:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2614:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2635:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2631:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2631:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2610:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2610:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2601:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2601:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2642:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2597:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2597:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2590:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2422:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2429:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2437:3:46",
                            "type": ""
                          }
                        ],
                        "src": "2384:269:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2779:110:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2796:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2807:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2789:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2789:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2789:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2819:64:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2856:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2868:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2879:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2864:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2864:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2827:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2827:56:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2819:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2748:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2759:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2770:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2658:231:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2964:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3010:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3019:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3022:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3012:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3012:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3012:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2985:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2994:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2981:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2981:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3006:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2977:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2977:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2974:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3035:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3058:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3045:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3045:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3035:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2930:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2941:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2953:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2894:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3180:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3190:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3202:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3213:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3198:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3198:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3190:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3232:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3247:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3263:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3268:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3259:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3259:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3272:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3255:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3255:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3243:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3243:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3225:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3225:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3225:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3149:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3160:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3171:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3079:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3332:86:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3396:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3405:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3408:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3398:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3398:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3398:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3355:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3366:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3381:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3386:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3377:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3377:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3390:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "3373:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3373:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3362:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3362:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3352:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3352:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3345:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3345:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3342:70:46"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3321:5:46",
                            "type": ""
                          }
                        ],
                        "src": "3287:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3510:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3556:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3565:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3568:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3558:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3558:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3558:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3531:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3540:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3527:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3527:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3552:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3523:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3523:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3520:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3581:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3607:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3594:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3594:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3585:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3651:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3626:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3626:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3626:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3666:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3676:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3690:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3717:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3728:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3713:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3713:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3700:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3700:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3690:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3468:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3479:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3491:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3499:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3423:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3844:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3854:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3866:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3877:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3862:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3862:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3854:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3896:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3907:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3889:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3889:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3889:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3813:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3824:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3835:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3743:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4029:352:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4075:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4084:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4087:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4077:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4077:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4077:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4050:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4059:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4046:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4046:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4071:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4042:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4042:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4039:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4100:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4126:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4113:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4113:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4104:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4170:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4145:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4145:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4185:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4195:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4185:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4209:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4241:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4252:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4237:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4237:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4224:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4224:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4213:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4290:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4265:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4265:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4265:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4307:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4317:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4307:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4333:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4360:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4371:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4356:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4356:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4343:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4343:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4333:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3979:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3990:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4002:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4010:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4018:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3925:456:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4487:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4497:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4509:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4520:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4505:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4505:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4497:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4539:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4550:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4532:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4532:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4532:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4456:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4467:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4478:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4386:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4945:664:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4955:13:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4965:3:46",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4959:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4977:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4995:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5000:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4991:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4991:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5004:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4987:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4987:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4981:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5022:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5037:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5045:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5033:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5033:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5015:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5015:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5069:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5080:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5065:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5065:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5085:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5058:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5058:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5058:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5101:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5111:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5105:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5141:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5152:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5137:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5137:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5161:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5169:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5157:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5157:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5130:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5130:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5130:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5193:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5204:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5189:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5189:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5213:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5221:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5209:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5209:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5182:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5182:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5182:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5245:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5256:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5241:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5241:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "5266:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5274:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5262:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5262:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5234:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5234:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5234:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5298:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5309:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5294:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "5319:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5327:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5315:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5315:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5287:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5287:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5287:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5351:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5362:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5372:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5380:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5368:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5368:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5340:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5404:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5415:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5400:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5400:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5425:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5433:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5421:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5421:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5393:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5393:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5457:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5468:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5453:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5453:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "5478:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5486:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5474:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5474:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5446:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5446:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5446:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5521:3:46",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5506:19:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5527:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5499:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5499:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5539:64:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value9",
                                    "nodeType": "YulIdentifier",
                                    "src": "5576:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5588:9:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5599:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5584:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5584:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5547:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5547:56:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5539:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4842:9:46",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "4853:6:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "4861:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "4869:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4877:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4885:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4893:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4901:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4909:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4917:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4925:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4936:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4568:1041:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5701:161:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5747:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5756:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5759:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5749:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5749:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5749:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5722:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5731:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5718:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5718:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5743:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5714:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5714:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5711:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5772:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5795:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5782:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5782:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5772:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5814:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5841:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5852:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5837:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5837:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5824:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5824:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5814:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5659:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5670:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5682:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5690:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5614:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5996:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6006:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6018:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6029:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6014:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6014:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6006:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6048:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6063:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6079:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6084:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6075:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6075:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6088:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6071:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6071:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6059:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6059:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6041:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6041:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6041:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6112:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6123:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6108:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6128:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6101:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6101:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6101:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5957:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5968:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5976:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5987:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5867:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6233:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6279:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6288:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6291:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6281:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6281:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6281:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6254:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6250:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6250:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6275:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6246:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6246:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6243:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6304:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6327:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6314:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6304:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6346:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6376:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6387:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6372:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6372:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6359:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6359:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6350:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6425:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6400:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6400:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6400:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6440:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6450:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6440:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6191:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6202:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6214:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6222:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6146:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6514:115:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6524:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6546:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6533:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6533:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "6524:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6607:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6616:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6619:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6609:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6609:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6609:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6575:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6586:5:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6593:10:46",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6582:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6582:22:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6572:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6572:33:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6565:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6565:41:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6562:61:46"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "6493:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6504:5:46",
                            "type": ""
                          }
                        ],
                        "src": "6466:163:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6720:166:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6766:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6775:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6778:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6768:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6768:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6768:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6741:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6750:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6737:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6762:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6733:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6733:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6730:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6791:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6814:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6801:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6801:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6791:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6833:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6865:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6876:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6861:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6861:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "6843:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6843:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6833:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6678:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6689:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6701:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6709:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6634:252:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6996:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7042:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7051:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7054:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7044:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7044:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7044:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7017:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7026:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7013:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7013:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7038:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7009:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7009:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7006:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7067:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7094:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7081:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7081:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7071:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7147:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7156:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7159:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7149:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7149:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7149:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7119:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7127:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7116:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7116:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7113:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7172:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7240:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7251:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7236:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7260:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7198:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7198:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7176:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7186:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7277:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "7287:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7277:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7304:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "7314:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7304:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6954:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6965:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6977:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6985:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6891:437:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7484:507:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7494:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7504:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7498:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7515:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7533:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7544:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7529:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7529:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7519:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7563:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7574:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7556:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7556:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7556:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7586:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "7597:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "7590:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7612:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7632:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7626:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7626:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7616:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7655:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7663:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7648:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7648:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7648:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7679:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7690:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7701:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7686:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7686:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "7679:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7713:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7731:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7739:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7727:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7727:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7717:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7751:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7760:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7755:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7819:146:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7840:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7855:6:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "7849:5:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7849:13:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7872:3:46",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7877:1:46",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7868:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7868:11:46"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "7881:1:46",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "7864:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7864:19:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "7845:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7845:39:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7833:52:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7833:52:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7898:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7909:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7914:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7905:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7905:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7898:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7930:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "7944:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7952:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7940:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7940:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7930:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7781:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7784:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7778:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7778:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7792:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7794:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7803:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7806:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7799:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7799:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7794:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7774:3:46",
                                "statements": []
                              },
                              "src": "7770:195:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7974:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "7982:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7974:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7453:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7464:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7475:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7333:658:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8083:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8129:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8138:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8141:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8131:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8131:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8131:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8104:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8113:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8100:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8100:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8125:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8096:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8096:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8093:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8154:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8177:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8164:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8164:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8154:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8196:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8226:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8222:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8209:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8209:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8200:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8275:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8250:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8250:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8250:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8290:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8300:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8290:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8041:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8052:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8064:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8072:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7996:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8348:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8365:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8372:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8377:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8368:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8368:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8358:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8358:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8358:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8405:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8408:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8398:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8398:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8429:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8432:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8422:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8422:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8422:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8316:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8523:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8533:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8543:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8537:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8588:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8590:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8590:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8590:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8576:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8584:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8573:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8573:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8570:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8619:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8633:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "8629:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8629:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8623:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8645:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8665:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8659:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8659:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8649:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8677:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8699:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8723:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8731:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8719:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8719:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "8736:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "8715:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8715:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8741:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8711:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8711:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8746:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8707:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8707:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8695:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8695:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8681:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8809:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8811:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8811:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8811:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8768:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8780:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8765:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8765:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8788:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8800:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8785:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8785:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "8762:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8762:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8759:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8847:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8851:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8840:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8840:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8840:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8871:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "8880:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8871:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8902:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8910:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8895:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8895:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8895:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8955:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8964:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8967:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8957:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8957:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8957:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "8936:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "8941:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8932:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8932:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8950:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8929:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8929:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8926:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8997:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9005:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8993:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8993:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9012:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9017:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8980:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8980:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8980:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "9048:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "9056:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9044:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9044:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9065:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9040:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9040:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9072:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9033:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9033:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9033:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "8492:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8497:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8505:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8513:5:46",
                            "type": ""
                          }
                        ],
                        "src": "8448:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9138:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9187:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9196:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9199:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9189:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9189:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9189:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "9166:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9174:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9162:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9162:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9181:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9158:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9158:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9151:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9151:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9148:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9212:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9260:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9268:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9256:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9256:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9288:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "9275:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9275:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9297:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9221:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9221:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "9212:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "9112:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9120:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9128:5:46",
                            "type": ""
                          }
                        ],
                        "src": "9085:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9463:728:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9510:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9519:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9522:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9512:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9512:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9512:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9484:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9493:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9480:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9480:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9505:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9476:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9476:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9473:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9535:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9561:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9548:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9548:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9539:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9605:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9580:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9580:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9580:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9620:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9630:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9620:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9644:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9675:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9686:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9671:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9671:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9658:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9658:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9648:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9699:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9709:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9703:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9754:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9763:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9766:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9756:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9756:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9756:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9742:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9750:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9739:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9739:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9736:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9779:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9811:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9822:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9807:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9807:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9831:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9789:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9789:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9779:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9848:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9881:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9892:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9877:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9877:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9864:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9864:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9852:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9925:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9934:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9937:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9927:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9927:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9927:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9911:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9921:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9908:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9908:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9905:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9950:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9982:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9993:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9978:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9978:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10004:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9960:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9960:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9950:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10021:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10054:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10065:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10050:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10050:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10037:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10037:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10025:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10098:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10107:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10110:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10100:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10100:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10100:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10084:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10094:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10081:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10081:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10078:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10123:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10155:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10166:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10151:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10151:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10177:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10133:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10133:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10123:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9405:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9416:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9428:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9436:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9444:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9452:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9312:879:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10266:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10312:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10321:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10324:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10314:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10314:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10314:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10287:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10296:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10283:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10283:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10308:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10279:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10279:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10276:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10337:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10363:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10350:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10350:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10341:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10407:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10382:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10382:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10382:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10422:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10432:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10422:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10232:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10243:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10255:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10196:247:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10521:275:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10570:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10579:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10582:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10572:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10572:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10572:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10549:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10557:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10545:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10545:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "10564:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10541:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10541:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10534:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10531:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10595:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10618:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10605:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10605:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10595:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10668:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10677:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10680:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10670:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10670:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10670:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10640:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10648:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10637:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10637:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10634:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10693:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10709:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10717:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10705:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10705:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10693:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10774:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10783:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10786:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10776:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10776:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10776:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10745:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "10753:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10741:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10741:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10762:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10737:30:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "10769:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10734:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10734:39:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10731:59:46"
                            }
                          ]
                        },
                        "name": "abi_decode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "10484:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10492:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "10500:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10510:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10448:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10908:372:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10929:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10938:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10925:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10925:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10950:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10921:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10921:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10918:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10979:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11002:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10989:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10989:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11021:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11052:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11063:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11048:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11048:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11035:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11035:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11025:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11110:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11119:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11122:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11112:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11112:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11112:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11082:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11090:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11079:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11079:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11076:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11135:85:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11192:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11203:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11188:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11161:26:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11161:59:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11139:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11149:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11229:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "11239:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11256:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "11266:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11256:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10858:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10869:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10881:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10889:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10897:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10801:479:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11521:873:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11568:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11577:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11580:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11570:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11570:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11570:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11542:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11551:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11538:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11538:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11563:3:46",
                                    "type": "",
                                    "value": "320"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11534:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11534:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11531:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11593:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11619:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11606:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11606:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11597:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11663:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11638:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11638:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11638:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11678:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11688:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11678:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11702:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11729:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11740:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11725:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11725:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11712:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11712:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11702:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11753:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11785:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11796:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11781:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11781:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11763:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11763:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11753:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11809:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11841:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11852:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11837:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11837:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11819:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11819:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11809:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11865:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11897:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11908:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11893:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11893:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11875:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11875:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11865:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11922:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11954:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11965:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11950:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11950:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11932:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11932:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "11922:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11979:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12011:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12022:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12007:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11989:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11989:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "11979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12036:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12068:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12079:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12064:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12064:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12051:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12051:33:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12040:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12118:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12093:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12093:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12093:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12135:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12145:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "12135:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12161:43:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12188:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12199:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12184:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12184:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12171:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12171:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "12161:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12213:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12244:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12255:3:46",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12240:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12240:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12227:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12227:33:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12217:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12303:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12312:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12315:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12305:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12305:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12305:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12275:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12283:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12272:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12272:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12269:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12328:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12360:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12371:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12356:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12356:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12380:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "12338:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12338:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value9",
                                  "nodeType": "YulIdentifier",
                                  "src": "12328:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11415:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11426:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11438:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11446:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11454:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11462:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11470:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11478:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "11486:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "11494:6:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "11502:6:46",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "11510:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11285:1109:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12483:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12529:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12538:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12541:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12531:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12531:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12531:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12504:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12513:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12500:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12500:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12525:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12496:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12496:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12493:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12554:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12580:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12567:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12567:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12558:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12624:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12599:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12599:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12599:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12639:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12649:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12639:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12663:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12695:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12706:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12691:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12678:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12678:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12667:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12767:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12776:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12779:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12769:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12769:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12769:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12732:7:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "12755:7:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "12748:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12748:15:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "12741:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12741:23:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "12729:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12729:36:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12722:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12722:44:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12719:64:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12792:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12802:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12792:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12441:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12452:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12464:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12472:6:46",
                            "type": ""
                          }
                        ],
                        "src": "12399:416:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12950:665:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12997:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13006:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13009:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12999:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12999:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12999:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12971:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12980:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12967:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12967:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12992:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12963:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12963:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12960:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13022:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13048:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13035:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13035:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13026:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13092:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13067:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13067:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13067:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13107:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13117:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13107:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13131:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13163:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13174:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13159:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13159:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13146:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13146:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13135:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13187:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13187:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13187:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13229:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13239:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13255:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13282:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13293:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13278:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13278:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13265:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13265:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "13255:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13306:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13337:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13348:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13333:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13333:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13320:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13320:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13310:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13395:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13404:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13407:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13397:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13397:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13397:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13367:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13375:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13364:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13364:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13361:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13420:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13434:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13445:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13430:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13430:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13424:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13500:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13509:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13512:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13502:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13502:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13502:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "13479:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13483:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13475:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13475:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13490:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13471:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13464:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13461:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13525:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13574:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13578:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13570:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13570:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13596:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13583:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13583:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13601:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "13535:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13535:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "13525:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12892:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12903:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12915:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12923:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12931:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12939:6:46",
                            "type": ""
                          }
                        ],
                        "src": "12820:795:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13707:301:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13753:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13762:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13765:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13755:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13755:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13755:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13728:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13737:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13724:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13724:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13749:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13720:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13720:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13717:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13778:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13804:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13791:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13791:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13782:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13848:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13823:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13823:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13823:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13863:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13873:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13863:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13887:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13919:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13930:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13915:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13915:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13902:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13902:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13891:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13968:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13943:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13943:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13943:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13985:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13995:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13985:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13665:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13676:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13688:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13696:6:46",
                            "type": ""
                          }
                        ],
                        "src": "13620:388:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14136:423:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14182:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14191:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14194:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14184:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14184:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14184:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14157:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14166:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14153:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14153:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14178:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14149:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14149:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14146:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14207:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14230:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14217:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14217:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14207:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14249:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14280:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14291:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14276:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14276:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14263:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14263:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "14253:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14338:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14347:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14350:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14340:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14340:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "14310:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14318:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14307:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14307:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14304:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14363:85:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14420:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "14431:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14416:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14416:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14440:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "14389:26:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14389:59:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14367:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14377:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14457:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "14467:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14457:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14484:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "14494:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "14484:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14511:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14538:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14549:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14534:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14534:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14521:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14521:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "14511:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14078:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14089:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14101:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14109:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14117:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14125:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14013:546:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14596:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14613:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14620:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14625:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14616:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14616:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14606:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14606:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14606:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14653:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14656:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14646:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14646:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14646:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14677:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14680:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14670:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14670:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14670:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14564:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14728:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14745:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14752:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14757:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14748:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14748:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14738:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14738:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14738:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14785:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14788:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14778:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14778:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14778:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14809:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14812:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14802:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14802:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14802:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14696:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14875:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14906:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14908:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14908:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14908:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14891:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14902:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "14898:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14898:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "14888:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14888:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14885:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14937:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14948:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14955:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14944:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14944:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "14937:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "14857:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "14867:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14828:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15023:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15033:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15047:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15050:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "15043:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15043:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "15033:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15064:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15094:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15100:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "15090:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15090:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "15068:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15141:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15143:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "15157:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15165:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "15153:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15153:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "15143:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "15121:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15114:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15114:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15111:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15231:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15252:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15259:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15264:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "15255:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15255:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15245:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15245:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15245:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15296:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15299:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15289:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15289:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15289:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15324:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15327:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15317:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15317:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15317:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "15187:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "15210:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15218:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15207:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15207:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "15184:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15184:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15181:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "15003:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "15012:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14968:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15527:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15544:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15555:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15537:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15537:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15537:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15578:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15589:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15574:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15574:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15594:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15567:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15567:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15567:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15617:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15628:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15613:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15613:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15633:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15606:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15606:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15606:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15688:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15699:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15684:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15684:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15704:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15677:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15677:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15677:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15717:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15740:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15725:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15717:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15504:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15518:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15353:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15929:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15946:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15957:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15939:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15939:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15939:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15980:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15991:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15976:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15976:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15996:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15969:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15969:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15969:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16019:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16030:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16015:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16015:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16035:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16008:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16008:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16008:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16090:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16101:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16086:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16086:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16106:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16079:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16079:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16079:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16148:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16160:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16171:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16156:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16156:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16148:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15906:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15920:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15755:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16360:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16377:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16388:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16370:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16370:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16370:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16411:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16422:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16407:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16407:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16427:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16400:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16400:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16400:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16450:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16461:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16446:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16446:18:46"
                                  },
                                  {
                                    "hexValue": "756e737570706f7274656420636861696e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16466:19:46",
                                    "type": "",
                                    "value": "unsupported chain"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16439:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16439:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16439:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16495:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16507:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16518:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16503:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16503:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16495:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16337:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16351:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16186:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16581:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16603:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16605:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16605:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16605:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16597:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16600:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16594:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16594:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "16591:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16634:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16646:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16649:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "16642:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16642:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "16634:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16563:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16566:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "16572:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16532:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16710:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16737:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16739:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16739:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16739:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16726:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "16733:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "16729:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16729:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16723:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16723:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "16720:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16768:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16779:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16782:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16775:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16775:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "16768:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16693:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16696:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "16702:3:46",
                            "type": ""
                          }
                        ],
                        "src": "16662:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16969:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16986:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16997:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16979:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16979:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16979:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17020:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17031:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17016:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17016:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17036:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17009:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17009:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17009:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17059:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17070:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17055:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17055:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17075:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17048:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17048:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17048:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17130:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17141:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17126:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17126:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17146:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17119:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17119:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17119:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17172:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17184:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17195:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17180:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17180:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17172:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16946:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16960:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16795:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17262:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17321:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17323:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17323:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17323:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17293:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "17286:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17286:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "17279:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17279:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17301:1:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "17312:1:46",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "17308:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "17308:6:46"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17316:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "17304:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17304:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17298:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17298:21:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17275:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17275:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17272:71:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17352:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17367:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17370:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "17363:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17363:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "17352:7:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17241:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17244:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "17250:7:46",
                            "type": ""
                          }
                        ],
                        "src": "17210:168:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17415:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17432:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17439:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17444:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "17435:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17435:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17425:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17425:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17472:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17475:4:46",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17465:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17465:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17465:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17496:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17499:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "17489:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17489:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17489:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "17383:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17561:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17584:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "17586:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17586:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17586:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17581:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17574:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17571:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17615:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17624:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17627:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "17620:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17620:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "17615:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17546:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17549:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "17555:1:46",
                            "type": ""
                          }
                        ],
                        "src": "17515:120:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17814:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17831:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17842:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17824:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17824:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17824:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17865:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17876:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17861:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17861:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17881:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17854:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17854:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17854:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17904:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17915:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17900:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17900:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17920:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17893:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17893:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17893:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17964:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17976:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17987:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17972:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17972:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17964:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17791:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17805:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17640:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18175:162:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18192:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18203:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18185:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18185:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18185:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18226:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18222:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18242:2:46",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18215:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18215:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18215:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18265:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18276:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18261:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18261:18:46"
                                  },
                                  {
                                    "hexValue": "756e617574686f72697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18281:14:46",
                                    "type": "",
                                    "value": "unauthorized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18254:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18254:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18254:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18305:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18317:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18328:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18313:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18313:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18305:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18152:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18166:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18001:336:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18516:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18533:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18544:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18526:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18526:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18526:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18567:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18578:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18563:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18563:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18583:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18556:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18556:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18556:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18606:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18617:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18602:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18602:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18622:28:46",
                                    "type": "",
                                    "value": "Edition must have a signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18595:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18595:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18595:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18660:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18672:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18683:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18668:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18668:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18660:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18493:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18507:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18342:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18824:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18834:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18846:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18857:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18842:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18842:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18834:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18876:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18887:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18869:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18869:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18869:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18914:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18925:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18910:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18910:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18934:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18942:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18930:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18930:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18903:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18903:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18903:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18785:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18796:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18804:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18815:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18697:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19139:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19156:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19167:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19149:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19149:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19149:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19190:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19201:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19186:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19186:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19206:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19179:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19179:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19179:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19229:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19240:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19225:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19225:18:46"
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19245:28:46",
                                    "type": "",
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19218:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19218:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19218:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19283:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19295:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19306:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19291:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19291:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19283:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19116:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19130:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18965:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19494:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19511:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19522:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19504:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19504:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19504:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19545:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19556:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19541:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19541:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19561:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19534:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19534:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19584:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19595:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19580:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19580:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19600:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19573:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19573:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19573:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19655:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19666:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19651:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19651:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19671:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19644:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19644:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19644:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19697:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19709:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19720:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19705:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19705:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19697:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19471:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19485:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19320:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19842:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19852:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19864:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19875:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19860:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19852:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19894:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19909:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19917:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19905:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19905:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19887:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19887:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19887:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19811:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19822:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19833:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19735:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20108:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20125:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20136:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20118:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20118:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20118:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20159:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20170:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20155:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20155:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20175:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20148:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20148:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20148:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20198:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20209:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20194:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20194:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20214:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20187:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20187:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20187:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20250:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20262:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20273:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20258:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20258:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20250:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20085:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20099:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19934:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20461:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20478:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20489:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20471:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20471:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20471:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20512:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20523:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20508:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20508:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20528:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20501:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20501:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20501:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20551:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20562:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20547:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20547:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20567:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20540:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20540:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20622:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20633:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20618:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20618:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20638:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20611:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20611:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20611:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20659:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20671:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20682:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20667:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20667:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20659:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20438:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20452:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20287:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20871:169:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20888:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20899:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20881:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20881:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20881:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20922:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20933:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20918:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20918:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20938:2:46",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20911:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20911:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20911:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20961:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20972:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20957:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20957:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f6e6578697374656e742065646974696f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20977:21:46",
                                    "type": "",
                                    "value": "Nonexistent edition"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20950:49:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20950:49:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21008:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21020:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21031:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21016:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21016:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21008:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20848:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20862:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20697:343:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21204:302:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21221:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21232:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21214:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21214:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21214:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21259:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21270:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21255:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21255:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21275:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21248:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21248:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21248:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21298:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21309:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21294:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21314:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21287:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21287:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21287:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21347:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21358:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21343:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21343:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21363:6:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21371:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "21330:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21330:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21330:48:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "21402:9:46"
                                          },
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "21413:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "21398:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21398:22:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21422:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21394:31:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21427:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21387:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21387:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21438:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21454:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "21473:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21481:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "21469:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "21469:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21490:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "21486:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "21486:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "21465:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21465:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21450:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21450:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21497:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21446:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21446:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21438:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21157:9:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21168:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21176:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21184:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21195:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21045:461:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21685:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21702:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21713:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21695:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21695:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21695:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21736:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21747:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21732:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21732:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21752:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21725:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21725:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21725:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21775:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21786:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21771:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21771:18:46"
                                  },
                                  {
                                    "hexValue": "4d75737420736574207175616e74697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21791:19:46",
                                    "type": "",
                                    "value": "Must set quantity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21764:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21764:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21764:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21820:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21832:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21843:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21828:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21828:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21820:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21662:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21676:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21511:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22031:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22048:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22059:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22041:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22041:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22041:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22082:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22093:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22078:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22078:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22098:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22071:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22071:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22071:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22121:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22132:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22117:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22117:18:46"
                                  },
                                  {
                                    "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22137:27:46",
                                    "type": "",
                                    "value": "Must set fundingRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22110:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22110:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22110:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22174:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22186:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22197:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22182:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22182:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22174:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22008:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22022:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21857:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22385:230:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22402:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22413:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22395:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22395:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22395:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22436:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22447:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22432:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22432:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22452:2:46",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22425:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22425:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22475:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22486:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22471:18:46"
                                  },
                                  {
                                    "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e207374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22491:34:46",
                                    "type": "",
                                    "value": "End time must be greater than st"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22464:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22464:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22546:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22557:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22542:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22542:18:46"
                                  },
                                  {
                                    "hexValue": "6172742074696d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22562:10:46",
                                    "type": "",
                                    "value": "art time"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22535:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22535:38:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22535:38:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22582:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22594:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22605:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22590:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22590:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22582:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22362:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22376:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22211:404:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22794:166:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22811:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22822:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22804:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22804:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22804:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22845:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22856:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22841:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22841:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22861:2:46",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22834:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22834:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22834:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22884:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22895:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22880:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22880:18:46"
                                  },
                                  {
                                    "hexValue": "57726f6e672065646974696f6e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22900:18:46",
                                    "type": "",
                                    "value": "Wrong edition ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22873:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22873:46:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22873:46:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22928:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22940:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22951:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22936:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22936:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22928:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22771:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22785:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22620:340:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23260:512:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23270:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23282:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23293:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23278:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23278:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23270:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23306:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23324:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23329:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "23320:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23320:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23333:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "23316:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23316:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23310:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23351:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23366:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23374:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23362:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23362:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23344:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23344:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23344:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23398:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23409:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23394:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23414:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23387:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23387:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23430:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23440:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "23434:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23470:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23481:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23466:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23466:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23490:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23498:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23486:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23486:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23459:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23459:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23459:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23522:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23533:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23518:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23518:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "23542:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23550:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23538:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23538:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23511:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23511:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23511:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23574:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23585:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23570:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23570:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "23595:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23603:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23591:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23591:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23563:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23563:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23563:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23627:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23638:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23623:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23623:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "23648:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23656:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23644:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23644:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23616:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23616:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23616:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23680:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23691:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23676:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23676:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "23701:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23709:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23697:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23697:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23669:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23669:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23669:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23733:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23744:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23729:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23729:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "23754:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23762:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23750:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23750:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23722:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23722:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23722:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23173:9:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "23184:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "23192:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "23200:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "23208:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "23216:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23224:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23232:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23240:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23251:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22965:807:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23809:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23826:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23833:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23838:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "23829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23829:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23819:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23819:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23819:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23866:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23869:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23859:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23859:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23859:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23890:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23893:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "23883:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23883:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23883:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "23777:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24049:272:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "24059:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24071:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24082:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24067:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24067:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24059:4:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24127:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24148:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24155:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24160:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "24151:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24151:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24141:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24141:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24141:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24192:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24195:4:46",
                                          "type": "",
                                          "value": "0x21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24185:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24185:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24185:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24220:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24223:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24213:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24213:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24213:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "24107:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24115:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "24104:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24104:13:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "24097:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24097:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "24094:144:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24254:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24265:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24247:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24247:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24247:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24292:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24303:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24288:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24288:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24308:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24281:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24281:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24281:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_TimeType_$9127_t_uint256__to_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24010:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "24021:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24029:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24040:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23909:412:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24500:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24510:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24510:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24510:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24551:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24562:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24547:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24547:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24567:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24540:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24540:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24590:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24601:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24586:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24586:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24606:34:46",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24579:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24579:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24579:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24661:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24672:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24657:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24657:18:46"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24677:17:46",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24650:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24650:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24650:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24704:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24716:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24727:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24712:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24712:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24704:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24477:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24491:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24326:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24792:135:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24802:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "24822:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24816:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24816:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "24806:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "24863:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24870:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24859:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24859:16:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24877:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24882:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24837:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24837:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24837:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24898:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24909:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24914:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24905:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24905:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "24898:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "24769:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "24776:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "24784:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24742:185:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25210:359:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25220:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25240:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25234:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25234:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25224:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25282:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25290:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25278:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25278:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25297:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25302:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25256:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25256:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25256:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25318:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25335:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25340:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25331:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25331:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25322:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25356:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25378:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25372:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25372:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25360:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25420:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25428:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25416:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25416:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25435:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25442:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25394:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25394:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25394:57:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25460:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25477:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25484:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25473:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25473:20:46"
                              },
                              "variables": [
                                {
                                  "name": "end_2",
                                  "nodeType": "YulTypedName",
                                  "src": "25464:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25509:5:46"
                                  },
                                  {
                                    "hexValue": "2f6d657461646174612e6a736f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25516:16:46",
                                    "type": "",
                                    "value": "/metadata.json"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25502:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25502:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25502:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25542:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25553:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25560:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25549:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25549:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25542:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25178:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25183:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25191:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25202:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24932:637:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25761:283:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25771:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25791:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25785:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25785:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25775:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25833:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25841:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25829:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25848:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25853:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25807:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25807:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25807:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25869:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25886:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25891:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25882:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25882:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25873:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25907:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25929:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25923:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25923:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25911:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25971:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25979:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25967:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25967:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25986:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25993:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25945:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25945:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25945:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26011:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26022:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26029:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26018:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26018:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "26011:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25729:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25734:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25742:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25753:3:46",
                            "type": ""
                          }
                        ],
                        "src": "25574:470:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26279:209:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26289:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26309:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "26303:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26303:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "26293:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "26351:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26359:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26347:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26347:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "26366:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26371:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "26325:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26325:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26325:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26387:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "26404:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26409:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26400:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26400:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26391:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26432:5:46"
                                  },
                                  {
                                    "hexValue": "73746f726566726f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26439:12:46",
                                    "type": "",
                                    "value": "storefront"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26425:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26425:27:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26461:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26472:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26479:2:46",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26468:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26468:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "26461:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "26255:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26260:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "26271:3:46",
                            "type": ""
                          }
                        ],
                        "src": "26049:439:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26667:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26684:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26695:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26677:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26677:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26677:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26718:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26729:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26714:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26714:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26734:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26707:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26707:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26707:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26757:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26768:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26753:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26753:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26773:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26746:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26746:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26746:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26828:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26839:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26824:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26824:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26844:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26817:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26817:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26817:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26862:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26874:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26885:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26870:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26870:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26862:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26644:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26658:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26493:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26947:181:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26957:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "26967:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26961:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26986:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "27001:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27004:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "26997:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26997:10:46"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26990:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27016:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "27031:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27034:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "27027:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27027:10:46"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "27020:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27071:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "27073:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27073:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27073:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27052:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27061:2:46"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27065:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "27057:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27057:12:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27049:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27049:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "27046:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27102:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27113:3:46"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27118:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27109:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27109:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "27102:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "26930:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "26933:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "26939:3:46",
                            "type": ""
                          }
                        ],
                        "src": "26900:228:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27307:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27324:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27335:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27317:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27317:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27317:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27358:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27369:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27354:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27354:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27374:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27347:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27347:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27347:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27397:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27408:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27393:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27393:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27413:24:46",
                                    "type": "",
                                    "value": "Edition does not exist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27386:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27386:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27386:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27447:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27459:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27470:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27455:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27455:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27447:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27284:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27298:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27133:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27658:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27675:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27686:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27668:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27668:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27668:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27709:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27720:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27705:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27705:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27725:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27698:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27698:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27698:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27748:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27759:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27744:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27744:18:46"
                                  },
                                  {
                                    "hexValue": "4d7573742073656e6420656e6f75676820746f20707572636861736520746865",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27764:34:46",
                                    "type": "",
                                    "value": "Must send enough to purchase the"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27737:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27737:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27737:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27819:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27830:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27815:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27815:18:46"
                                  },
                                  {
                                    "hexValue": "2065646974696f6e2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27835:11:46",
                                    "type": "",
                                    "value": " edition."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27808:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27808:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27808:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27856:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27868:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27879:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27864:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27864:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27856:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27635:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27649:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27484:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28068:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28085:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28096:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28078:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28078:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28078:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28119:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28130:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28115:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28115:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28135:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28108:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28108:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28108:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28158:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28169:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28154:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28154:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e2068617320656e646564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28174:19:46",
                                    "type": "",
                                    "value": "Auction has ended"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28147:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28147:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28147:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28203:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28215:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28226:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28211:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28211:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28203:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28045:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28059:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27894:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28414:249:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28431:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28442:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28424:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28424:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28424:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28465:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28476:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28461:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28461:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28481:2:46",
                                    "type": "",
                                    "value": "59"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28454:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28454:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28454:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28504:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28515:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28500:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28500:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28520:34:46",
                                    "type": "",
                                    "value": "No permissioned tokens available"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28493:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28493:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28493:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28575:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28586:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28571:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28571:18:46"
                                  },
                                  {
                                    "hexValue": "2026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28591:29:46",
                                    "type": "",
                                    "value": " & open auction not started"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28564:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28564:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28564:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28630:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28642:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28653:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28638:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28638:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28630:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28391:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28405:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28240:423:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28842:164:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28859:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28870:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28852:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28852:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28852:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28893:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28904:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28889:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28909:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28882:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28882:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28882:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28932:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28943:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28928:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28928:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28948:16:46",
                                    "type": "",
                                    "value": "Invalid signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28921:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28921:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28921:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28974:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28986:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28997:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28982:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28982:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28974:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28819:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28833:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28668:338:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29185:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29202:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29213:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29195:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29195:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29195:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29236:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29247:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29232:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29232:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29252:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29225:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29225:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29225:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29275:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29286:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29271:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29271:18:46"
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f7574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29291:34:46",
                                    "type": "",
                                    "value": "This edition is already sold out"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29264:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29264:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29264:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29346:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29357:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29342:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29342:18:46"
                                  },
                                  {
                                    "hexValue": "2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29362:3:46",
                                    "type": "",
                                    "value": "."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29335:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29335:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29335:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29375:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29387:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29398:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29383:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29383:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29375:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29162:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29176:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29011:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29540:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "29550:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29562:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29573:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29558:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29558:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29550:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29592:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "29607:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29615:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29603:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29603:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29585:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29585:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29585:42:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29647:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29658:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29643:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29643:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29663:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29636:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29636:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29636:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29501:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "29512:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29520:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29531:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29413:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29855:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29872:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29883:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29865:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29865:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29865:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29906:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29917:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29902:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29902:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29922:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29895:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29895:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29895:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29945:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29956:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29941:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29941:18:46"
                                  },
                                  {
                                    "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29961:31:46",
                                    "type": "",
                                    "value": "Insufficient balance for send"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29934:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29934:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29934:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30002:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30014:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30025:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30010:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30010:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30002:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29832:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29846:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29681:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30230:14:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30232:10:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "30239:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "30232:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "30214:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "30222:3:46",
                            "type": ""
                          }
                        ],
                        "src": "30039:205:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30423:239:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30440:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30451:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30433:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30433:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30433:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30474:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30485:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30470:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30470:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30490:2:46",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30463:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30463:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30463:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30513:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30524:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30509:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30509:18:46"
                                  },
                                  {
                                    "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30529:34:46",
                                    "type": "",
                                    "value": "Unable to send value: recipient "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30502:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30502:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30502:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30584:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30595:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30580:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30580:18:46"
                                  },
                                  {
                                    "hexValue": "6d61792068617665207265766572746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30600:19:46",
                                    "type": "",
                                    "value": "may have reverted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30573:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30573:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30573:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30629:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30641:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30652:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30637:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30637:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30629:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30400:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30414:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30249:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30841:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30858:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30869:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30851:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30851:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30851:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30892:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30903:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30888:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30888:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30908:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30881:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30881:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30881:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30931:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30942:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30927:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30927:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30947:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30920:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30920:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30920:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31002:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31013:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30998:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30998:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31018:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30991:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30991:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30991:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31035:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31047:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31058:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31043:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31043:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31035:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30818:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30832:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30667:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31247:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31264:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31275:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31257:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31257:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31257:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31298:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31309:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31294:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31314:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31287:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31287:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31287:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31337:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31348:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31333:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31333:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31353:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31326:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31326:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31326:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31408:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31419:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31404:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31404:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31424:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31397:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31397:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31397:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31440:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31452:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31463:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31448:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31448:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31440:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31224:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31238:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31073:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31652:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31669:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31680:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31662:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31662:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31662:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31703:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31714:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31699:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31699:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31719:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31692:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31692:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31692:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31742:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31753:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31738:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31738:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31758:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31731:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31731:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31731:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31813:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31824:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31809:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31809:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31829:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31802:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31802:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31802:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31852:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31864:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31875:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31860:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31852:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31629:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31643:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31478:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32064:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32081:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32092:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32074:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32074:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32074:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32115:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32126:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32111:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32111:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32131:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32104:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32104:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32104:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32154:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32165:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32150:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32150:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32170:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32143:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32143:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32143:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32207:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32219:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32230:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32215:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32215:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32207:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32041:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32055:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31890:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32418:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32435:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32446:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32428:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32428:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32428:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32469:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32480:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32465:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32465:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32485:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32458:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32458:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32458:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32508:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32519:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32504:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32504:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32524:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32497:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32497:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32497:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32579:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32590:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32575:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32575:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32595:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32568:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32568:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32568:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32625:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32637:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32648:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32633:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32633:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32625:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32395:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32409:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32244:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32701:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32724:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "32726:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32726:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32726:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "32721:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32714:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32714:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "32711:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32755:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "32764:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "32767:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "32760:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32760:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "32755:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "32686:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "32689:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "32695:1:46",
                            "type": ""
                          }
                        ],
                        "src": "32663:112:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32828:20:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "32837:3:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32842:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32830:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32830:16:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32830:16:46"
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_fba9",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "32819:3:46",
                            "type": ""
                          }
                        ],
                        "src": "32780:68:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33173:263:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33190:3:46"
                                  },
                                  {
                                    "hexValue": "68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33195:32:46",
                                    "type": "",
                                    "value": "https://metadata.sound.xyz/v1/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33183:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33183:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33183:45:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33237:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33257:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33251:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33251:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33241:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "33299:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33307:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33295:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33295:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "33318:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33323:2:46",
                                        "type": "",
                                        "value": "30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33314:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33314:12:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33328:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "33273:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33273:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33273:62:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33344:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33358:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33363:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33354:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33354:16:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33348:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33390:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33394:2:46",
                                        "type": "",
                                        "value": "30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33386:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33386:11:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33399:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33379:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33379:24:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33379:24:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33412:18:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33423:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33427:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33419:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33419:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "33412:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33149:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33154:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33165:3:46",
                            "type": ""
                          }
                        ],
                        "src": "32853:583:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33497:65:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33514:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33517:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33507:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33507:14:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33507:14:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33530:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33548:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33551:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "33538:9:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33538:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "33530:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "33480:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "33488:4:46",
                            "type": ""
                          }
                        ],
                        "src": "33441:121:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33841:1071:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33851:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33862:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulTypedName",
                                  "src": "33855:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33872:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33895:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33889:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33889:13:46"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "33876:9:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33911:17:46",
                              "value": {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "33925:3:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33915:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33937:11:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33947:1:46",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33941:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33957:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33971:2:46"
                                  },
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "33975:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33967:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33967:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "33957:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33994:44:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "34024:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34035:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "34020:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34020:18:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "33998:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34077:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34079:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "34093:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34101:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "34089:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34089:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "34079:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "34057:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "34050:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34050:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "34047:61:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34117:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34127:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "34121:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34188:115:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "34209:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "34218:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "34223:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "34214:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34214:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34202:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34202:33:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34202:33:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34255:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34258:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34248:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34248:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34248:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "34283:3:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34288:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "34276:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34276:17:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34276:17:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "34144:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "34167:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "34175:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "34164:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34164:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "34141:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34141:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "34138:165:46"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "34353:97:46",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34374:3:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34383:9:46"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "34398:3:46",
                                                      "type": "",
                                                      "value": "255"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34394:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "34394:8:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "34379:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "34379:24:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "34367:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34367:37:46"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "34367:37:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "34417:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34428:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34433:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34424:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34424:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "34417:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "34346:104:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34351:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "34466:313:46",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "34480:52:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "value0",
                                              "nodeType": "YulIdentifier",
                                              "src": "34525:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "34495:29:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34495:37:46"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "34484:7:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "34545:10:46",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34554:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "34549:1:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "34622:111:46",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34651:3:46"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34656:1:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "34647:3:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "34647:11:46"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34666:7:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "34660:5:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "34660:14:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34640:6:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34640:35:46"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "34640:35:46"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "34692:27:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34707:7:46"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34716:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34703:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34703:16:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34692:7:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "34579:1:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34582:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "34576:2:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34576:13:46"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "34590:19:46",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "34592:15:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34601:1:46"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34604:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34597:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34597:10:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34592:1:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "34572:3:46",
                                          "statements": []
                                        },
                                        "src": "34568:165:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "34746:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34757:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34762:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34753:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34753:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "34746:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "34459:320:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34464:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "outOfPlaceEncoding",
                                "nodeType": "YulIdentifier",
                                "src": "34319:18:46"
                              },
                              "nodeType": "YulSwitch",
                              "src": "34312:467:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34788:43:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34819:6:46"
                                  },
                                  {
                                    "name": "ret",
                                    "nodeType": "YulIdentifier",
                                    "src": "34827:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "34801:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34801:30:46"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34792:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34870:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_fba9",
                                  "nodeType": "YulIdentifier",
                                  "src": "34840:29:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34840:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34840:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34885:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34896:5:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34903:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34892:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34892:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "34885:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33809:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "33814:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33822:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33833:3:46",
                            "type": ""
                          }
                        ],
                        "src": "33567:1345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35091:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35108:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35119:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35101:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35101:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35101:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35142:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35153:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35138:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35138:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35158:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35131:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35131:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35131:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35181:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35192:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35177:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35177:18:46"
                                  },
                                  {
                                    "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35197:27:46",
                                    "type": "",
                                    "value": "Ticket number exceeds max"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35170:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35170:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35170:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35234:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35246:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35257:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35242:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35242:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35234:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35068:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35082:4:46",
                            "type": ""
                          }
                        ],
                        "src": "34917:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35445:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35462:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35473:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35455:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35455:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35455:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35496:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35507:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35492:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35492:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35512:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35485:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35485:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35485:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35535:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35546:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35531:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35531:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35551:34:46",
                                    "type": "",
                                    "value": "Invalid ticket number or NFT alr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35524:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35524:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35524:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35606:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35617:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35602:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35602:18:46"
                                  },
                                  {
                                    "hexValue": "6561647920636c61696d6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35622:14:46",
                                    "type": "",
                                    "value": "eady claimed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35595:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35595:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35595:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35646:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35658:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35669:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35654:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35654:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35646:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35422:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35436:4:46",
                            "type": ""
                          }
                        ],
                        "src": "35271:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35897:306:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35907:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35919:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35930:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35915:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35915:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35907:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35950:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "35961:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35943:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35943:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35943:25:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35977:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35995:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36000:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "35991:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35991:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36004:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "35987:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35987:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "35981:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36026:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36037:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36022:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36022:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36046:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36054:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36042:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36042:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36015:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36015:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36078:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36089:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36074:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36074:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "36098:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36106:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36094:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36094:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36067:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36067:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36067:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36130:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36141:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36126:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36126:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "36146:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36119:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36119:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36119:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36173:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36184:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36169:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36169:19:46"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "36190:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36162:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36162:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36162:35:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35834:9:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "35845:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "35853:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35861:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35869:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35877:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35888:4:46",
                            "type": ""
                          }
                        ],
                        "src": "35684:519:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36456:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "36473:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36482:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36487:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "36478:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36478:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36466:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36466:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36466:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "36513:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36518:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36509:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36509:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36522:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36502:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36502:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36502:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "36549:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36554:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36545:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36545:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36559:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36538:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36538:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36538:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36575:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "36586:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36591:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36582:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36582:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "36575:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "36424:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36429:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36437:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "36448:3:46",
                            "type": ""
                          }
                        ],
                        "src": "36208:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36779:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36796:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36807:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36789:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36789:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36789:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36830:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36841:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36826:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36826:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36846:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36819:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36819:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36819:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36869:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36880:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36865:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36865:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36885:34:46",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36858:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36858:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36858:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36929:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36941:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36952:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36937:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36937:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36929:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36756:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36770:4:46",
                            "type": ""
                          }
                        ],
                        "src": "36605:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37140:178:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37157:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37168:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37150:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37150:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37150:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37191:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37202:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37187:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37187:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37207:2:46",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37180:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37180:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37180:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37230:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37241:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37226:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37226:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "37246:30:46",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37219:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37219:58:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37219:58:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37286:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37298:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37309:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37294:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37294:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37286:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37117:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37131:4:46",
                            "type": ""
                          }
                        ],
                        "src": "36966:352:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37526:297:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37536:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37554:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37559:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "37550:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37550:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37563:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "37546:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37546:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37540:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37581:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "37596:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37604:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37592:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37592:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37574:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37574:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37628:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37639:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37624:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37624:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37648:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37656:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37644:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37644:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37617:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37617:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37617:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37680:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37691:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37676:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37676:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "37696:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37669:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37669:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37669:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37723:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37734:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37719:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37719:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37739:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37712:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37712:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37712:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37752:65:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "37789:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37801:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37812:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37797:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37797:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "37760:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37760:57:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37752:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37471:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "37482:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "37490:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "37498:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37506:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37517:4:46",
                            "type": ""
                          }
                        ],
                        "src": "37323:500:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37908:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "37956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "37929:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37938:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "37925:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37925:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37950:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "37921:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37921:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "37918:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37979:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37998:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37992:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37992:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "37983:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38041:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "38017:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38017:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38017:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38056:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "38066:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "38056:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37874:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "37885:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37897:6:46",
                            "type": ""
                          }
                        ],
                        "src": "37828:249:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38129:89:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38156:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "38158:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38158:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38158:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38149:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "38142:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38142:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "38139:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38187:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38198:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38209:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "38205:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38205:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38194:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38194:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "38187:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "38111:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "38121:3:46",
                            "type": ""
                          }
                        ],
                        "src": "38082:136:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38397:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38414:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38425:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38407:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38407:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38407:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38448:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38459:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38444:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38444:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38464:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38437:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38437:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38437:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38487:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38498:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38483:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38483:18:46"
                                  },
                                  {
                                    "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38503:34:46",
                                    "type": "",
                                    "value": "Strings: hex length insufficient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38476:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38476:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38476:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38547:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38559:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38570:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38555:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38555:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "38547:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "38374:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "38388:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38223:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38758:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38775:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38786:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38768:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38768:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38768:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38809:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38820:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38805:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38805:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38825:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38798:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38798:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38798:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38848:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38859:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38844:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38844:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38864:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38837:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38837:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38837:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38900:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38912:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38923:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38908:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38908:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "38900:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "38735:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "38749:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38584:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39111:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39128:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39139:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39121:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39121:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39121:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39162:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39173:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39158:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39158:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39178:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39151:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39151:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39151:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39201:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39212:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39197:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39197:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39217:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39190:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39190:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39190:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39260:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39272:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39283:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39268:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39268:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39260:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39088:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39102:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38937:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39471:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39488:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39499:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39481:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39481:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39481:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39522:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39533:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39518:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39518:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39538:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39511:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39511:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39511:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39561:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39572:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39557:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39557:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39577:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39550:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39550:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39550:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39632:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39643:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39628:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39628:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39648:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39621:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39621:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39621:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39662:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39674:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39685:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39670:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39670:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39662:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39448:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39462:4:46",
                            "type": ""
                          }
                        ],
                        "src": "39297:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39874:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39891:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39902:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39884:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39884:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39884:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39925:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39936:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39921:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39921:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39941:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39914:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39914:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39914:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39964:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39975:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39960:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39960:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39980:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39953:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39953:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39953:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40035:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40046:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40031:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40031:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "40051:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40024:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40024:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40024:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40065:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40077:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40088:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40073:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40073:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40065:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39851:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39865:4:46",
                            "type": ""
                          }
                        ],
                        "src": "39700:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40284:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "40294:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40306:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40317:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40302:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40302:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40294:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40337:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "40348:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40330:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40330:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40330:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40375:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40386:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40371:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40371:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "40395:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40403:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "40391:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40391:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40364:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40364:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40364:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40429:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40440:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40425:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40425:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "40445:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40418:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40418:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40418:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40472:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40483:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40468:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40468:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "40488:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40461:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40461:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40461:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "40229:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "40240:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "40248:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "40256:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "40264:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "40275:4:46",
                            "type": ""
                          }
                        ],
                        "src": "40103:398:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string_memory_ptr(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_memory_ptr(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 320\n        let _2 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _2))\n        mstore(add(headStart, 32), value1)\n        let _3 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _3))\n        mstore(add(headStart, 96), and(value3, _3))\n        mstore(add(headStart, 128), and(value4, _3))\n        mstore(add(headStart, 160), and(value5, _3))\n        mstore(add(headStart, 192), and(value6, _3))\n        mstore(add(headStart, 224), and(value7, _3))\n        mstore(add(headStart, 256), and(value8, _2))\n        mstore(add(headStart, 288), _1)\n        tail := abi_encode_string_memory_ptr(value9, add(headStart, _1))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value1 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9\n    {\n        if slt(sub(dataEnd, headStart), 320) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        value4 := abi_decode_uint32(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint32(add(headStart, 192))\n        let value_1 := calldataload(add(headStart, 224))\n        validator_revert_address(value_1)\n        value7 := value_1\n        value8 := calldataload(add(headStart, 256))\n        let offset := calldataload(add(headStart, 288))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value9 := abi_decode_string(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        value3 := calldataload(add(headStart, 64))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"unsupported chain\")\n        tail := add(headStart, 96)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"unauthorized\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Edition must have a signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Signer address cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Nonexistent edition\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), value2)\n        calldatacopy(add(headStart, 96), value1, value2)\n        mstore(add(add(headStart, value2), 96), 0)\n        tail := add(add(headStart, and(add(value2, 31), not(31))), 96)\n    }\n    function abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Must set quantity\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Must set fundingRecipient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"End time must be greater than st\")\n        mstore(add(headStart, 96), \"art time\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Wrong edition ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _1))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_enum$_TimeType_$9127_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        if iszero(lt(value0, 2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        mstore(end_2, \"/metadata.json\")\n        end := add(end_2, 14)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, \"storefront\")\n        end := add(end_1, 10)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Edition does not exist\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"Must send enough to purchase the\")\n        mstore(add(headStart, 96), \" edition.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Auction has ended\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 59)\n        mstore(add(headStart, 64), \"No permissioned tokens available\")\n        mstore(add(headStart, 96), \" & open auction not started\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"This edition is already sold out\")\n        mstore(add(headStart, 96), \".\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Insufficient balance for send\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Unable to send value: recipient \")\n        mstore(add(headStart, 96), \"may have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function abi_encode_stringliteral_fba9(pos)\n    { mstore(pos, \"/\") }\n    function abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, \"https://metadata.sound.xyz/v1/\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 30), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 30), \"/\")\n        end := add(_1, 31)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let ret := 0\n        let slotValue := sload(value0)\n        let length := ret\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        let _2 := 32\n        if eq(outOfPlaceEncoding, lt(length, _2))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(ret, 0x24)\n        }\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, length)\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value0)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n        let pos_1 := abi_encode_string(value1, ret)\n        abi_encode_stringliteral_fba9(pos_1)\n        end := add(pos_1, _1)\n    }\n    function abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Ticket number exceeds max\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Invalid ticket number or NFT alr\")\n        mstore(add(headStart, 96), \"eady claimed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string_memory_ptr(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\n    }\n    function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Strings: hex length insufficient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "9065": [
                  {
                    "length": 32,
                    "start": 1192
                  },
                  {
                    "length": 32,
                    "start": 11648
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106102725760003560e01c8063602787ed1161014f578063a22cb465116100c1578063e1a3d5731161007a578063e1a3d573146107e9578063e8a3d48514610816578063e985e9c51461082b578063f2fde38b14610874578063f71e54fb14610894578063fbab9e04146108a757600080fd5b8063a22cb4651461071c578063b88d4fde1461073c578063bb314ca11461075c578063c87b56dd1461077c578063d3bb05281461079c578063d547741f146107c957600080fd5b8063796726921161011357806379672692146106725780638da5cb5b146106925780638e116aea146106b057806391d14854146106d057806395d89b41146106f05780639725d92e1461070557600080fd5b8063602787ed146105d05780636352211e146105f057806370a082311461061057806375a8f08f1461063057806375b238fc1461065057600080fd5b80632a55205a116101e85780634bf44026116101ac5780634bf44026146105015780635076a64d1461051657806352e25bf21461054357806352f5c2e41461056357806356dee996146105905780635f1e6f6d146105b057600080fd5b80632a55205a146104375780632f2ff15d146104765780633644e515146104965780633ef2dbc2146104ca57806342842e0e146104e157600080fd5b80630bcca8311161023a5780630bcca83114610355578063155dd5ee1461036a57806318160ddd1461038a57806323b872dd146103ad57806327399d36146103cd578063279c806e1461040157600080fd5b806301ffc9a714610277578063065d5b85146102ac57806306fdde03146102d9578063081812fc146102fb578063095ea7b314610333575b600080fd5b34801561028357600080fd5b5061029761029236600461371f565b6108c7565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004613780565b6108f2565b6040516102a391906137cb565b3480156102e557600080fd5b506102ee6109de565b6040516102a39190613869565b34801561030757600080fd5b5061031b61031636600461387c565b610a70565b6040516001600160a01b0390911681526020016102a3565b34801561033f57600080fd5b5061035361034e3660046138aa565b610a97565b005b34801561036157600080fd5b5061031b610bb1565b34801561037657600080fd5b5061035361038536600461387c565b610c31565b34801561039657600080fd5b5061039f610c91565b6040519081526020016102a3565b3480156103b957600080fd5b506103536103c83660046138d6565b610cdd565b3480156103d957600080fd5b5061039f7fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e881565b34801561040d57600080fd5b5061042161041c36600461387c565b610d0e565b6040516102a39a99989796959493929190613917565b34801561044357600080fd5b50610457610452366004613992565b610e0e565b604080516001600160a01b0390931683526020830191909152016102a3565b34801561048257600080fd5b506103536104913660046139b4565b610fb0565b3480156104a257600080fd5b5061039f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d657600080fd5b5060ca5461039f9081565b3480156104ed57600080fd5b506103536104fc3660046138d6565b611060565b34801561050d57600080fd5b5061039f61107b565b34801561052257600080fd5b5061039f61053136600461387c565b60cd6020526000908152604090205481565b34801561054f57600080fd5b5061035361055e3660046139fd565b611097565b34801561056f57600080fd5b5061058361057e366004613a29565b6111cf565b6040516102a39190613a6a565b34801561059c57600080fd5b506103536105ab3660046139b4565b611287565b3480156105bc57600080fd5b506103536105cb366004613b56565b6113a5565b3480156105dc57600080fd5b5061039f6105eb36600461387c565b6114f8565b3480156105fc57600080fd5b5061031b61060b36600461387c565b61151a565b34801561061c57600080fd5b5061039f61062b366004613bf0565b61157a565b34801561063c57600080fd5b5061035361064b366004613bf0565b611600565b34801561065c57600080fd5b5061039f60008051602061438e83398151915281565b34801561067e57600080fd5b5061035361068d366004613c4e565b611659565b34801561069e57600080fd5b506097546001600160a01b031661031b565b3480156106bc57600080fd5b506103536106cb366004613c8c565b6117a4565b3480156106dc57600080fd5b506102976106eb3660046139b4565b611c06565b3480156106fc57600080fd5b506102ee611c31565b34801561071157600080fd5b5060cb5461039f9081565b34801561072857600080fd5b50610353610737366004613d56565b611c40565b34801561074857600080fd5b50610353610757366004613d89565b611c4b565b34801561076857600080fd5b506103536107773660046139fd565b611c83565b34801561078857600080fd5b506102ee61079736600461387c565b611d4b565b3480156107a857600080fd5b5061039f6107b736600461387c565b60cf6020526000908152604090205481565b3480156107d557600080fd5b506103536107e43660046139b4565b611ed5565b3480156107f557600080fd5b5061039f61080436600461387c565b60ce6020526000908152604090205481565b34801561082257600080fd5b506102ee611f66565b34801561083757600080fd5b50610297610846366004613dfc565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561088057600080fd5b5061035361088f366004613bf0565b611f94565b6103536108a2366004613e2a565b612023565b3480156108b357600080fd5b506103536108c23660046139fd565b6123f6565b600063152a902d60e11b6001600160e01b0319831614806108ec57506108ec826124bd565b92915050565b60606000826001600160401b0381111561090e5761090e613aab565b604051908082528060200260200182016040528015610937578160200160208202803683370190505b50905060005b838110156109d55760006109978787878581811061095d5761095d613e7c565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106109b2576109b2613e7c565b9115156020928302919091019091015250806109cd81613ea8565b91505061093d565b50949350505050565b6060606580546109ed90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1990613ec1565b8015610a665780601f10610a3b57610100808354040283529160200191610a66565b820191906000526020600020905b815481529060010190602001808311610a4957829003601f168201915b5050505050905090565b6000610a7b8261250d565b506000908152606960205260409020546001600160a01b031690565b6000610aa28261151a565b9050806001600160a01b0316836001600160a01b031603610b145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b305750610b308133610846565b610ba25760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610b0b565b610bac838361256c565b505050565b600046600103610bd4575073858a92511485715cfb754f397a7894b7724c7abd90565b46600403610bf5575073ee35e946dd73ef78d352454c3f915e2ca0a09d8790565b60405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b21031b430b4b760791b6044820152606401610b0b565b600081815260cf602090815260408083205460ce909252822054610c559190613ef5565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610c8d906001600160a01b0316826125da565b5050565b60008060015b60cb54811015610cd757600081815260cc6020526040902060020154610cc39063ffffffff1683613f0c565b915080610ccf81613ea8565b915050610c97565b50919050565b610ce733826126e7565b610d035760405162461bcd60e51b8152600401610b0b90613f24565b610bac838383612766565b60cc60205260009081526040902080546001820154600283015460038401546004850180546001600160a01b0395861696949563ffffffff808616966401000000008704821696600160401b8104831696600160601b8204841696600160801b8304851696600160a01b90930490941694169290610d8b90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db790613ec1565b8015610e045780601f10610dd957610100808354040283529160200191610e04565b820191906000526020600020905b815481529060010190602001808311610de757829003601f168201915b505050505090508a565b6000806000610e1c856114f8565b600081815260cc6020908152604080832081516101408101835281546001600160a01b039081168252600183015494820194909452600282015463ffffffff80821694830194909452640100000000810484166060830152600160401b810484166080830152600160601b8104841660a0830152600160801b8104841660c0830152600160a01b900490921660e0830152600381015490921661010082015260048201805494955092939092610120840191610ed790613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613ec1565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050509190925250508151919250506001600160a01b0316610f7a5751925060009150610fa99050565b6080810151815163ffffffff90911690612710610f978389613f72565b610fa19190613fa7565b945094505050505b9250929050565b6097546001600160a01b03163314610fda5760405162461bcd60e51b8152600401610b0b90613fbb565b610fe48282611c06565b610c8d5760008281526098602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561101c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610bac83838360405180602001604052806000815250611c4b565b6000600161108860cb5490565b6110929190613ef5565b905090565b60008051602061438e8339815191526110b86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806110dc57506110dc8133611c06565b6110f85760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc60205260409020600301546001600160a01b031661115f5760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610b0b565b600083815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8716908102919091179091558251868152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a1505050565b60606000826001600160401b038111156111eb576111eb613aab565b604051908082528060200260200182016040528015611214578160200160208202803683370190505b50905060005b8381101561127f5761124385858381811061123757611237613e7c565b9050602002013561151a565b82828151811061125557611255613e7c565b6001600160a01b03909216602092830291909101909101528061127781613ea8565b91505061121a565b509392505050565b60008051602061438e8339815191526112a86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806112cc57506112cc8133611c06565b6112e85760405162461bcd60e51b8152600401610b0b90613ff0565b6001600160a01b03821661133e5760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b600083815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03861690811790915591518581527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a2505050565b600054610100900460ff16158080156113c55750600054600160ff909116105b806113df5750303b1580156113df575060005460ff166001145b6114425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b0b565b6000805460ff191660011790558015611465576000805461ff0019166101001790555b61146f8484612902565b611477612933565b61148085611f94565b4660011461149d57815161149b9060c9906020850190613600565b505b6114ab60cb80546001019055565b80156114f1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000608082901c8082036108ec575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806108ec5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b60006001600160a01b0382166115e45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b0b565b506001600160a01b031660009081526068602052604090205490565b611608610bb1565b6001600160a01b0316336001600160a01b0316148061163157506097546001600160a01b031633145b61164d5760405162461bcd60e51b8152600401610b0b90613ff0565b6116568161296c565b50565b60008051602061438e83398151915261167a6097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061169e575061169e8133611c06565b6116ba5760405162461bcd60e51b8152600401610b0b90613ff0565b600084815260cc6020526040902060020154640100000000900463ffffffff161515806117045750600084815260cc6020526040902060020154600160a01b900463ffffffff1615155b6117465760405162461bcd60e51b81526020600482015260136024820152722737b732bc34b9ba32b73a1032b234ba34b7b760691b6044820152606401610b0b565b600084815260cc60205260409020611762906004018484613680565b507f1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd41258984848460405161179693929190614016565b60405180910390a150505050565b60008051602061438e8339815191526117c56097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806117e957506117e98133611c06565b6118055760405162461bcd60e51b8152600401610b0b90613ff0565b60008963ffffffff161161184f5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610b0b565b6001600160a01b038b166118a55760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610b0b565b8663ffffffff168663ffffffff16116119115760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610b0b565b60cb5483146119555760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c819591a5d1a5bdb88125160821b6044820152606401610b0b565b63ffffffff8516156119b7576001600160a01b0384166119b75760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b6040518061014001604052808c6001600160a01b031681526020018b8152602001600063ffffffff1681526020018a63ffffffff1681526020018963ffffffff1681526020018863ffffffff1681526020018763ffffffff1681526020018663ffffffff168152602001856001600160a01b031681526020018381525060cc6000611a4160cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355858501516001840155928501516002830180546060880151608089015160a08a015160c08b015160e08c015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b939091169290920291909117905561010085015160038301805490941691161790915561012083015180519192611b6b92600485019290910190613600565b505060cb54604080516001600160a01b038f81168252602082018f905263ffffffff8e8116838501528d811660608401528c811660808401528b811660a08401528a1660c0830152881660e082015290519192507fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f391908190036101000190a2611bf960cb80546001019055565b5050505050505050505050565b60009182526098602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060606680546109ed90613ec1565b610c8d3383836129be565b611c5533836126e7565b611c715760405162461bcd60e51b8152600401610b0b90613f24565b611c7d84848484612a8c565b50505050565b60008051602061438e833981519152611ca46097546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611cc85750611cc88133611c06565b611ce45760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff86169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90611398906001908790614062565b6000818152606760205260409020546060906001600160a01b0316611dca5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b0b565b6000611dd5836114f8565b600081815260cc6020526040812060040180549293509091611df690613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2290613ec1565b8015611e6f5780601f10611e4457610100808354040283529160200191611e6f565b820191906000526020600020905b815481529060010190602001808311611e5257829003601f168201915b50505050509050600381511115611eb35780611e8a85612abf565b604051602001611e9b9291906140aa565b60405160208183030381529060405292505050919050565b611ebb612bbf565b611ec485612abf565b604051602001611e9b9291906140f2565b6097546001600160a01b03163314611eff5760405162461bcd60e51b8152600401610b0b90613fbb565b611f098282611c06565b15610c8d5760008281526098602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060611f70612bbf565b604051602001611f809190614121565b604051602081830303815290604052905090565b6097546001600160a01b03163314611fbe5760405162461bcd60e51b8152600401610b0b90613fbb565b6001600160a01b03811661164d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0b565b600084815260cc60205260408120600180820154600290920154919263ffffffff6401000000008404811693169161205c90839061414f565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166120dc5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610b0b565b8634101561213e5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610b0b565b428263ffffffff16116121875760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610b0b565b428363ffffffff161115612289578063ffffffff168563ffffffff16106122165760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610b0b565b60008b815260cc60205260409020600301546001600160a01b031661223d8b8b8e8c612c16565b6001600160a01b0316146122845760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610b0b565b6122ee565b8563ffffffff168563ffffffff16106122ee5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610b0b565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b1761232d6097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b039182169116036123775760008c815260ce60205260408120805434929061236c908490613f0c565b909155506123999050565b60008c815260cc6020526040902054612399906001600160a01b0316346125da565b6123a33382612e16565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b60008051602061438e8339815191526124176097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061243b575061243b8133611c06565b6124575760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff871690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c9161139891908790614062565b60006001600160e01b031982166380ac58cd60e01b14806124ee57506001600160e01b03198216635b5e139f60e01b145b806108ec57506301ffc9a760e01b6001600160e01b03198316146108ec565b6000818152606760205260409020546001600160a01b03166116565760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125a18261151a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b8047101561262a5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610b0b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612677576040519150601f19603f3d011682016040523d82523d6000602084013e61267c565b606091505b5050905080610bac5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610b0b565b6000806126f38361151a565b9050806001600160a01b0316846001600160a01b0316148061273a57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061275e5750836001600160a01b031661275384610a70565b6001600160a01b0316145b949350505050565b826001600160a01b03166127798261151a565b6001600160a01b0316146127dd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b0b565b6001600160a01b03821661283f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0b565b61284a60008261256c565b6001600160a01b0383166000908152606860205260408120805460019290612873908490613ef5565b90915550506001600160a01b03821660009081526068602052604081208054600192906128a1908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff166129295760405162461bcd60e51b8152600401610b0b9061416e565b610c8d8282612f58565b600054610100900460ff1661295a5760405162461bcd60e51b8152600401610b0b9061416e565b612962612fa6565b61296a612fcd565b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603612a1f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b0b565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a97848484612766565b612aa384848484612ffd565b611c7d5760405162461bcd60e51b8152600401610b0b906141b9565b606081600003612ae65750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612b105780612afa81613ea8565b9150612b099050600a83613fa7565b9150612aea565b6000816001600160401b03811115612b2a57612b2a613aab565b6040519080825280601f01601f191660200182016040528015612b54576020820181803683370190505b5090505b841561275e57612b69600183613ef5565b9150612b76600a8661420b565b612b81906030613f0c565b60f81b818381518110612b9657612b96613e7c565b60200101906001600160f81b031916908160001a905350612bb8600a86613fa7565b9450612b58565b60606000612bce3060146130fb565b905046600103612bfe5780604051602001612be9919061421f565b60405160208183030381529060405291505090565b60c981604051602001612be992919061426f565b5090565b60006401000000008210612c6c5760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d6178000000000000006044820152606401610b0b565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c600116928315612cf95760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b6064820152608401610b0b565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e283015261010282015261012201604051602081830303815290604052805190602001209050612e088a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859392505061329d9050565b9a9950505050505050505050565b6001600160a01b038216612e6c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b0b565b6000818152606760205260409020546001600160a01b031615612ed15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b0b565b6001600160a01b0382166000908152606860205260408120805460019290612efa908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16612f7f5760405162461bcd60e51b8152600401610b0b9061416e565b8151612f92906065906020850190613600565b508051610bac906066906020840190613600565b600054610100900460ff1661296a5760405162461bcd60e51b8152600401610b0b9061416e565b600054610100900460ff16612ff45760405162461bcd60e51b8152600401610b0b9061416e565b61296a3361296c565b60006001600160a01b0384163b156130f357604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061304190339089908890889060040161431c565b6020604051808303816000875af192505050801561307c575060408051601f3d908101601f1916820190925261307991810190614359565b60015b6130d9573d8080156130aa576040519150601f19603f3d011682016040523d82523d6000602084013e6130af565b606091505b5080516000036130d15760405162461bcd60e51b8152600401610b0b906141b9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061275e565b50600161275e565b6060600061310a836002613f72565b613115906002613f0c565b6001600160401b0381111561312c5761312c613aab565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b509050600360fc1b8160008151811061317157613171613e7c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131a0576131a0613e7c565b60200101906001600160f81b031916908160001a90535060006131c4846002613f72565b6131cf906001613f0c565b90505b6001811115613247576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061320357613203613e7c565b1a60f81b82828151811061321957613219613e7c565b60200101906001600160f81b031916908160001a90535060049490941c9361324081614376565b90506131d2565b5083156132965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b0b565b9392505050565b60008060006132ac85856132b9565b9150915061127f81613324565b60008082516041036132ef5760208301516040840151606085015160001a6132e3878285856134da565b94509450505050610fa9565b8251604003613318576020830151604084015161330d8683836135c7565b935093505050610fa9565b50600090506002610fa9565b60008160048111156133385761333861404c565b036133405750565b60018160048111156133545761335461404c565b036133a15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b0b565b60028160048111156133b5576133b561404c565b036134025760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b0b565b60038160048111156134165761341661404c565b0361346e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b0b565b60048160048111156134825761348261404c565b036116565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b0b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561351157506000905060036135be565b8460ff16601b1415801561352957508460ff16601c14155b1561353a57506000905060046135be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561358e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166135b7576000600192509250506135be565b9150600090505b94509492505050565b6000806001600160ff1b038316816135e460ff86901c601b613f0c565b90506135f2878288856134da565b935093505050935093915050565b82805461360c90613ec1565b90600052602060002090601f01602090048101928261362e5760008555613674565b82601f1061364757805160ff1916838001178555613674565b82800160010185558215613674579182015b82811115613674578251825591602001919060010190613659565b50612c129291506136f4565b82805461368c90613ec1565b90600052602060002090601f0160209004810192826136ae5760008555613674565b82601f106136c75782800160ff19823516178555613674565b82800160010185558215613674579182015b828111156136745782358255916020019190600101906136d9565b5b80821115612c1257600081556001016136f5565b6001600160e01b03198116811461165657600080fd5b60006020828403121561373157600080fd5b813561329681613709565b60008083601f84011261374e57600080fd5b5081356001600160401b0381111561376557600080fd5b6020830191508360208260051b8501011115610fa957600080fd5b60008060006040848603121561379557600080fd5b8335925060208401356001600160401b038111156137b257600080fd5b6137be8682870161373c565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783511515835292840192918401916001016137e7565b50909695505050505050565b60005b8381101561382c578181015183820152602001613814565b83811115611c7d5750506000910152565b60008151808452613855816020860160208601613811565b601f01601f19169290920160200192915050565b602081526000613296602083018461383d565b60006020828403121561388e57600080fd5b5035919050565b6001600160a01b038116811461165657600080fd5b600080604083850312156138bd57600080fd5b82356138c881613895565b946020939093013593505050565b6000806000606084860312156138eb57600080fd5b83356138f681613895565b9250602084013561390681613895565b929592945050506040919091013590565b6001600160a01b038b81168252602082018b905263ffffffff8a811660408401528981166060840152888116608084015287811660a084015286811660c0840152851660e0830152831661010082015261014061012082018190526000906139818382018561383d565b9d9c50505050505050505050505050565b600080604083850312156139a557600080fd5b50508035926020909101359150565b600080604083850312156139c757600080fd5b8235915060208301356139d981613895565b809150509250929050565b803563ffffffff811681146139f857600080fd5b919050565b60008060408385031215613a1057600080fd5b82359150613a20602084016139e4565b90509250929050565b60008060208385031215613a3c57600080fd5b82356001600160401b03811115613a5257600080fd5b613a5e8582860161373c565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783516001600160a01b031683529284019291840191600101613a86565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115613adb57613adb613aab565b604051601f8501601f19908116603f01168101908282118183101715613b0357613b03613aab565b81604052809350858152868686011115613b1c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613b4757600080fd5b61329683833560208501613ac1565b60008060008060808587031215613b6c57600080fd5b8435613b7781613895565b935060208501356001600160401b0380821115613b9357600080fd5b613b9f88838901613b36565b94506040870135915080821115613bb557600080fd5b613bc188838901613b36565b93506060870135915080821115613bd757600080fd5b50613be487828801613b36565b91505092959194509250565b600060208284031215613c0257600080fd5b813561329681613895565b60008083601f840112613c1f57600080fd5b5081356001600160401b03811115613c3657600080fd5b602083019150836020828501011115610fa957600080fd5b600080600060408486031215613c6357600080fd5b8335925060208401356001600160401b03811115613c8057600080fd5b6137be86828701613c0d565b6000806000806000806000806000806101408b8d031215613cac57600080fd5b8a35613cb781613895565b995060208b01359850613ccc60408c016139e4565b9750613cda60608c016139e4565b9650613ce860808c016139e4565b9550613cf660a08c016139e4565b9450613d0460c08c016139e4565b935060e08b0135613d1481613895565b92506101008b013591506101208b01356001600160401b03811115613d3857600080fd5b613d448d828e01613b36565b9150509295989b9194979a5092959850565b60008060408385031215613d6957600080fd5b8235613d7481613895565b9150602083013580151581146139d957600080fd5b60008060008060808587031215613d9f57600080fd5b8435613daa81613895565b93506020850135613dba81613895565b92506040850135915060608501356001600160401b03811115613ddc57600080fd5b8501601f81018713613ded57600080fd5b613be487823560208401613ac1565b60008060408385031215613e0f57600080fd5b8235613e1a81613895565b915060208301356139d981613895565b60008060008060608587031215613e4057600080fd5b8435935060208501356001600160401b03811115613e5d57600080fd5b613e6987828801613c0d565b9598909750949560400135949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613eba57613eba613e92565b5060010190565b600181811c90821680613ed557607f821691505b602082108103610cd757634e487b7160e01b600052602260045260246000fd5b600082821015613f0757613f07613e92565b500390565b60008219821115613f1f57613f1f613e92565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615613f8c57613f8c613e92565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613fb657613fb6613f91565b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061408457634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600081516140a0818560208601613811565b9290920192915050565b600083516140bc818460208801613811565b8351908301906140d0818360208801613811565b6d17b6b2ba30b230ba30973539b7b760911b9101908152600e01949350505050565b60008351614104818460208801613811565b835190830190614118818360208801613811565b01949350505050565b60008251614133818460208701613811565b691cdd1bdc99599c9bdb9d60b21b920191825250600a01919050565b600063ffffffff80831681851680830382111561411857614118613e92565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261421a5761421a613f91565b500690565b7f68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f000081526000825161425781601e850160208701613811565b602f60f81b601e939091019283015250601f01919050565b600080845481600182811c91508083168061428b57607f831692505b602080841082036142aa57634e487b7160e01b86526022600452602486fd5b8180156142be57600181146142cf576142fc565b60ff198616895284890196506142fc565b60008b81526020902060005b868110156142f45781548b8201529085019083016142db565b505084890196505b505050614309848861408e565b602f60f81b815201979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061434f9083018461383d565b9695505050505050565b60006020828403121561436b57600080fd5b815161329681613709565b60008161438557614385613e92565b50600019019056fedf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42a26469706673582212207fd3ca8d6b60ba543ae3eacf6ce1388c9010c1817dc7e7c2a63e4267abdcd00264736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x272 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x602787ED GT PUSH2 0x14F JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x7E9 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x874 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x894 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x77C JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x79C JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79672692 GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x79672692 EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x8E116AEA EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0x9725D92E EQ PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x602787ED EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x75A8F08F EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4BF44026 GT PUSH2 0x1AC JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x5076A64D EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0x5F1E6F6D EQ PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x3EF2DBC2 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCCA831 GT PUSH2 0x23A JUMPI DUP1 PUSH4 0xBCCA831 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x27399D36 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x333 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x371F JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CC PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x37CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3869 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x34E CALLDATASIZE PUSH1 0x4 PUSH2 0x38AA JUMP JUMPDEST PUSH2 0xA97 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0xBB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x421 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457 PUSH2 0x452 CALLDATASIZE PUSH1 0x4 PUSH2 0x3992 JUMP JUMPDEST PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0x1060 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x107B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x522 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x531 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1097 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x583 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A29 JUMP JUMPDEST PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3A6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5AB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3B56 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x5EB CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x14F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x60B CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x151A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x157A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x1659 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3C8C JUMP JUMPDEST PUSH2 0x17A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1C31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCB SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x737 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D56 JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x757 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D89 JUMP JUMPDEST PUSH2 0x1C4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x797 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x1D4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x7B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x7E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1ED5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x804 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1F66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x846 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x88F CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1F94 JUMP JUMPDEST PUSH2 0x353 PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E2A JUMP JUMPDEST PUSH2 0x2023 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x23F6 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x8EC JUMPI POP PUSH2 0x8EC DUP3 PUSH2 0x24BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x90E JUMPI PUSH2 0x90E PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x937 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 PUSH2 0x997 DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x95D JUMPI PUSH2 0x95D PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9B2 JUMPI PUSH2 0x9B2 PUSH2 0x3E7C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0x9CD DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x93D JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA19 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA66 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA3B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA66 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA49 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7B DUP3 PUSH2 0x250D JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA2 DUP3 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0xB30 JUMPI POP PUSH2 0xB30 DUP2 CALLER PUSH2 0x846 JUMP JUMPDEST PUSH2 0xBA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 PUSH2 0x256C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH1 0x1 SUB PUSH2 0xBD4 JUMPI POP PUSH20 0x858A92511485715CFB754F397A7894B7724C7ABD SWAP1 JUMP JUMPDEST CHAINID PUSH1 0x4 SUB PUSH2 0xBF5 JUMPI POP PUSH20 0xEE35E946DD73EF78D352454C3F915E2CA0A09D87 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x3AB739BAB83837B93A32B21031B430B4B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xC8D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x25DA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCC3 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x3F0C JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xCCF DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC97 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCE7 CALLER DUP3 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0xD03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH2 0x2766 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP7 SWAP5 SWAP6 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH5 0x100000000 DUP8 DIV DUP3 AND SWAP7 PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND SWAP7 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP5 AND SWAP7 PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP6 AND SWAP7 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV SWAP1 SWAP5 AND SWAP5 AND SWAP3 SWAP1 PUSH2 0xD8B SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xDB7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE04 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDD9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE04 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDE7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE1C DUP6 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH5 0x100000000 DUP2 DIV DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP5 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP3 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD DUP1 SLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP1 SWAP3 PUSH2 0x120 DUP5 ADD SWAP2 PUSH2 0xED7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF03 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF50 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF25 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF50 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF33 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 SWAP1 SWAP3 MSTORE POP POP DUP2 MLOAD SWAP2 SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7A JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xFA9 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xF97 DUP4 DUP10 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0xFA1 SWAP2 SWAP1 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0xFE4 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x101C CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1C4B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1088 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1092 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x10B8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x10DC JUMPI POP PUSH2 0x10DC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x11EB JUMPI PUSH2 0x11EB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1214 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x127F JUMPI PUSH2 0x1243 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x151A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1255 JUMPI PUSH2 0x1255 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x1277 DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x121A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x12A8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x12CC JUMPI POP PUSH2 0x12CC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x12E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x133E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP6 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x13C5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x13DF JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13DF JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1442 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1465 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x146F DUP5 DUP5 PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x1477 PUSH2 0x2933 JUMP JUMPDEST PUSH2 0x1480 DUP6 PUSH2 0x1F94 JUMP JUMPDEST CHAINID PUSH1 0x1 EQ PUSH2 0x149D JUMPI DUP2 MLOAD PUSH2 0x149B SWAP1 PUSH1 0xC9 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP JUMPDEST PUSH2 0x14AB PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14F1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x8EC JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x8EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1608 PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1631 JUMPI POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x1656 DUP2 PUSH2 0x296C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x167A PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x169E JUMPI POP PUSH2 0x169E DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x16BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x1704 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x1746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x2737B732BC34B9BA32B73A1032B234BA34B7B7 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1762 SWAP1 PUSH1 0x4 ADD DUP5 DUP5 PUSH2 0x3680 JUMP JUMPDEST POP PUSH32 0x1A7FCE8987747A468A9FD9D320891F1519376DAB1BAEB8E72E8D4447FD412589 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1796 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x17C5 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x17E9 JUMPI POP PUSH2 0x17E9 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1805 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH4 0xFFFFFFFF AND GT PUSH2 0x184F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH2 0x18A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 PUSH4 0xFFFFFFFF AND DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1911 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0xCB SLOAD DUP4 EQ PUSH2 0x1955 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x15DC9BDB99C819591A5D1A5BDB881251 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND ISZERO PUSH2 0x19B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x1A41 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0xC0 DUP12 ADD MLOAD PUSH1 0xE0 DUP13 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP1 MLOAD SWAP2 SWAP3 PUSH2 0x1B6B SWAP3 PUSH1 0x4 DUP6 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP POP PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP15 DUP2 AND DUP4 DUP6 ADD MSTORE DUP14 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP13 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP12 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP11 AND PUSH1 0xC0 DUP4 ADD MSTORE DUP9 AND PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 LOG2 PUSH2 0x1BF9 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST PUSH2 0xC8D CALLER DUP4 DUP4 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1C55 CALLER DUP4 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0x1C71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0x1C7D DUP5 DUP5 DUP5 DUP5 PUSH2 0x2A8C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1CA4 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1CC8 JUMPI POP PUSH2 0x1CC8 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1CE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x1398 SWAP1 PUSH1 0x1 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD5 DUP4 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x1DF6 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E22 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1E6F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E44 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1E6F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E52 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x3 DUP2 MLOAD GT ISZERO PUSH2 0x1EB3 JUMPI DUP1 PUSH2 0x1E8A DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EBB PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x1EC4 DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40F2 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1EFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0x1F09 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F70 PUSH2 0x2BBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1F80 SWAP2 SWAP1 PUSH2 0x4121 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1FBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x205C SWAP1 DUP4 SWAP1 PUSH2 0x414F JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x20DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x213E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x2187 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2289 JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x2216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x223D DUP12 DUP12 DUP15 DUP13 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x22EE JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x22EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x232D PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x2377 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x236C SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2399 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2399 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x25DA JUMP JUMPDEST PUSH2 0x23A3 CALLER DUP3 PUSH2 0x2E16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2417 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x243B JUMPI POP PUSH2 0x243B DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x2457 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x1398 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x24EE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x8EC JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x25A1 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2677 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x267C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x26F3 DUP4 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x273A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x275E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2753 DUP5 PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2779 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x283F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x284A PUSH1 0x0 DUP3 PUSH2 0x256C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2873 SWAP1 DUP5 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28A1 SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2929 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0xC8D DUP3 DUP3 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x295A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x2962 PUSH2 0x2FA6 JUMP JUMPDEST PUSH2 0x296A PUSH2 0x2FCD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2A97 DUP5 DUP5 DUP5 PUSH2 0x2766 JUMP JUMPDEST PUSH2 0x2AA3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2FFD JUMP JUMPDEST PUSH2 0x1C7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2AE6 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B10 JUMPI DUP1 PUSH2 0x2AFA DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B09 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x3FA7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B2A JUMPI PUSH2 0x2B2A PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2B54 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x275E JUMPI PUSH2 0x2B69 PUSH1 0x1 DUP4 PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B76 PUSH1 0xA DUP7 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x2B81 SWAP1 PUSH1 0x30 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B96 JUMPI PUSH2 0x2B96 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2BB8 PUSH1 0xA DUP7 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP PUSH2 0x2B58 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2BCE ADDRESS PUSH1 0x14 PUSH2 0x30FB JUMP JUMPDEST SWAP1 POP CHAINID PUSH1 0x1 SUB PUSH2 0x2BFE JUMPI DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP2 SWAP1 PUSH2 0x421F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0xC9 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP3 SWAP2 SWAP1 PUSH2 0x426F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x2CF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x2E08 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x329D SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2ED1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2EFA SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2F7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2F92 SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xBAC SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x296A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x296A CALLER PUSH2 0x296C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x30F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x3041 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x431C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x307C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3079 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4359 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x30D9 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x30AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x30D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x275E JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x275E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x310A DUP4 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x3115 SWAP1 PUSH1 0x2 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x312C JUMPI PUSH2 0x312C PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3156 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3171 JUMPI PUSH2 0x3171 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x31A0 JUMPI PUSH2 0x31A0 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x31C4 DUP5 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x31CF SWAP1 PUSH1 0x1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3247 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x3203 JUMPI PUSH2 0x3203 PUSH2 0x3E7C JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3219 JUMPI PUSH2 0x3219 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x3240 DUP2 PUSH2 0x4376 JUMP JUMPDEST SWAP1 POP PUSH2 0x31D2 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x3296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32AC DUP6 DUP6 PUSH2 0x32B9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x127F DUP2 PUSH2 0x3324 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x32EF JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x32E3 DUP8 DUP3 DUP6 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xFA9 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x3318 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x330D DUP7 DUP4 DUP4 PUSH2 0x35C7 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xFA9 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3338 JUMPI PUSH2 0x3338 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3340 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3354 JUMPI PUSH2 0x3354 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x33A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x33B5 JUMPI PUSH2 0x33B5 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3402 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3416 JUMPI PUSH2 0x3416 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x346E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3482 JUMPI PUSH2 0x3482 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x3511 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x35BE JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3529 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x353A JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x35BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x358E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35B7 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x35BE JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x35E4 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP PUSH2 0x35F2 DUP8 DUP3 DUP9 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x360C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x362E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3647 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3659 JUMP JUMPDEST POP PUSH2 0x2C12 SWAP3 SWAP2 POP PUSH2 0x36F4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x368C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36AE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x36C7 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36D9 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2C12 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x373C JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x37E7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x382C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3814 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1C7D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3855 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3296 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x388E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x38C8 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38F6 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3906 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP11 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE DUP10 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP9 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP8 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0xC0 DUP5 ADD MSTORE DUP6 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP4 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3981 DUP4 DUP3 ADD DUP6 PUSH2 0x383D JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3A20 PUSH1 0x20 DUP5 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3A52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A5E DUP6 DUP3 DUP7 ADD PUSH2 0x373C JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A86 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x3ADB JUMPI PUSH2 0x3ADB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3B03 JUMPI PUSH2 0x3B03 PUSH2 0x3AAB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x3B1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3296 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3B77 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B9F DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BC1 DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE4 DUP8 DUP3 DUP9 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x3C0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x3CAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x3CB7 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x3CCC PUSH1 0x40 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP8 POP PUSH2 0x3CDA PUSH1 0x60 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP7 POP PUSH2 0x3CE8 PUSH1 0x80 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP6 POP PUSH2 0x3CF6 PUSH1 0xA0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP5 POP PUSH2 0x3D04 PUSH1 0xC0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP4 POP PUSH1 0xE0 DUP12 ADD CALLDATALOAD PUSH2 0x3D14 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3D38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D44 DUP14 DUP3 DUP15 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D74 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x39D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3DAA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3DBA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x3DED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BE4 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E1A DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E69 DUP8 DUP3 DUP9 ADD PUSH2 0x3C0D JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3EBA JUMPI PUSH2 0x3EBA PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3ED5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCD7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3F07 JUMPI PUSH2 0x3F07 PUSH2 0x3E92 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F1F JUMPI PUSH2 0x3F1F PUSH2 0x3E92 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3F8C JUMPI PUSH2 0x3F8C PUSH2 0x3E92 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3FB6 JUMPI PUSH2 0x3FB6 PUSH2 0x3F91 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x4084 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH2 0x40A0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x40BC DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x40D0 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH14 0x17B6B2BA30B230BA30973539B7B7 PUSH1 0x91 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0xE ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4104 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4118 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4133 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0xA ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4118 JUMPI PUSH2 0x4118 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x421A JUMPI PUSH2 0x421A PUSH2 0x3F91 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x68747470733A2F2F6D657461646174612E736F756E642E78797A2F76312F0000 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4257 DUP2 PUSH1 0x1E DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL PUSH1 0x1E SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x1F ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x428B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x42AA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP7 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP7 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x42BE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x42CF JUMPI PUSH2 0x42FC JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x42FC JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x42F4 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x42DB JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP PUSH2 0x4309 DUP5 DUP9 PUSH2 0x408E JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL DUP2 MSTORE ADD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x434F SWAP1 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x436B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x4385 JUMPI PUSH2 0x4385 PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP INVALID 0xDF DUP12 0x4C MSTORE 0xF INVALID NOT PUSH29 0x5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42A264697066 PUSH20 0x582212207FD3CA8D6B60BA543AE3EACF6CE1388C SWAP1 LT 0xC1 DUP2 PUSH30 0xC7E7C2A63E4267ABDCD00264736F6C634300080E00330000000000000000 ",
              "sourceMap": "2223:22332:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18324:301;;;;;;;;;;-1:-1:-1;18324:301:40;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;18324:301:40;;;;;;;;20045:457;;;;;;;;;;-1:-1:-1;20045:457:40;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2931:98:7:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;;;;;-1:-1:-1;4407:167:7;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3243:32:46;;;3225:51;;3213:2;3198:18;4407:167:7;3079:203:46;3928:418:7;;;;;;;;;;-1:-1:-1;3928:418:7;;;;;:::i;:::-;;:::i;:::-;;20609:346:40;;;;;;;;;;;;;:::i;12362:546::-;;;;;;;;;;-1:-1:-1;12362:546:40;;;;;:::i;:::-;;:::i;17903:229::-;;;;;;;;;;;;;:::i;:::-;;;3889:25:46;;;3877:2;3862:18;17903:229:40;3743:177:46;5084:327:7;;;;;;;;;;-1:-1:-1;5084:327:7;;;;;:::i;:::-;;:::i;2472:170:40:-;;;;;;;;;;;;2533:109;2472:170;;3040:43;;;;;;;;;;-1:-1:-1;3040:43:40;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;17282:547::-;;;;;;;;;;-1:-1:-1;17282:547:40;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;6059:32:46;;;6041:51;;6123:2;6108:18;;6101:34;;;;6014:18;17282:547:40;5867:274:46;2754:226:42;;;;;;;;;;-1:-1:-1;2754:226:42;;;;;:::i;:::-;;:::i;2746:41:40:-;;;;;;;;;;;;;;;2867:44;;;;;;;;;;-1:-1:-1;2867:44:40;;;;;;5477:179:7;;;;;;;;;;-1:-1:-1;5477:179:7;;;;;:::i;:::-;;:::i;18694:173:40:-;;;;;;;;;;;;;:::i;3150:50::-;;;;;;;;;;-1:-1:-1;3150:50:40;;;;;:::i;:::-;;;;;;;;;;;;;;14514:477;;;;;;;;;;-1:-1:-1;14514:477:40;;;;;:::i;:::-;;:::i;19523:308::-;;;;;;;;;;-1:-1:-1;19523:308:40;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13978:324::-;;;;;;;;;;-1:-1:-1;13978:324:40;;;;;:::i;:::-;;:::i;6237:539::-;;;;;;;;;;-1:-1:-1;6237:539:40;;;;;:::i;:::-;;:::i;18966:428::-;;;;;;;;;;-1:-1:-1;18966:428:40;;;;;:::i;:::-;;:::i;2651:218:7:-;;;;;;;;;;-1:-1:-1;2651:218:7;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;;;;;-1:-1:-1;2390:204:7;;;;;:::i;:::-;;:::i;15163:207:40:-;;;;;;;;;;-1:-1:-1;15163:207:40;;;;;:::i;:::-;;:::i;569:55:42:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;569:55:42;;15516:373:40;;;;;;;;;;-1:-1:-1;15516:373:40;;;;;:::i;:::-;;:::i;1559:77:42:-;;;;;;;;;;-1:-1:-1;1623:6:42;;-1:-1:-1;;;;;1623:6:42;1559:77;;7509:1547:40;;;;;;;;;;-1:-1:-1;7509:1547:40;;;;;:::i;:::-;;:::i;3492:120:42:-;;;;;;;;;;-1:-1:-1;3492:120:42;;;;;:::i;:::-;;:::i;3093:102:7:-;;;;;;;;;;;;;:::i;2937:46:40:-;;;;;;;;;;-1:-1:-1;2937:46:40;;;;;;4641:153:7;;;;;;;;;;-1:-1:-1;4641:153:7;;;;;:::i;:::-;;:::i;5722:315::-;;;;;;;;;;-1:-1:-1;5722:315:7;;;;;:::i;:::-;;:::i;13545:215:40:-;;;;;;;;;;-1:-1:-1;13545:215:40;;;;;:::i;:::-;;:::i;16191:696::-;;;;;;;;;;-1:-1:-1;16191:696:40;;;;;:::i;:::-;;:::i;3420:54::-;;;;;;;;;;-1:-1:-1;3420:54:40;;;;;:::i;:::-;;;;;;;;;;;;;;3130:227:42;;;;;;;;;;-1:-1:-1;3130:227:42;;;;;:::i;:::-;;:::i;3279:54:40:-;;;;;;;;;;-1:-1:-1;3279:54:40;;;;;:::i;:::-;;;;;;;;;;;;;;17012:130;;;;;;;;;;;;;:::i;4860:162:7:-;;;;;;;;;;-1:-1:-1;4860:162:7;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;1990:190:42;;;;;;;;;;-1:-1:-1;1990:190:42;;;;;:::i;:::-;;:::i;9392:2818:40:-;;;;;;:::i;:::-;;:::i;13117:227::-;;;;;;;;;;-1:-1:-1;13117:227:40;;;;;:::i;:::-;;:::i;18324:301::-;18473:4;-1:-1:-1;;;;;;;;;18512:53:40;;;;:106;;;18569:49;18605:12;18569:35;:49::i;:::-;18493:125;18324:301;-1:-1:-1;;18324:301:40:o;20045:457::-;20175:13;20204:21;20239:14;-1:-1:-1;;;;;20228:33:40;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20228:33:40;;20204:57;;20277:9;20272:199;20292:25;;;20272:199;;;20339:17;20366:53;20389:10;20401:14;;20416:1;20401:17;;;;;;;:::i;:::-;;;;;;;23313:7;23935:25;;;:13;:25;;;;;;;;23798:3;23782:19;;23935:43;;;;;;;;;24075:1;23834:19;;;;24033:30;;;24032:45;;;;;23935:43;;23782:19;23179:982;20366:53;20338:81;;;;;20446:9;20459:1;20446:14;20433:7;20441:1;20433:10;;;;;;;;:::i;:::-;:27;;;:10;;;;;;;;;;;:27;-1:-1:-1;20319:3:40;;;;:::i;:::-;;;;20272:199;;;-1:-1:-1;20488:7:40;20045:457;-1:-1:-1;;;;20045:457:40:o;2931:98:7:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;15555:2:46;4068:57:7;;;15537:21:46;15594:2;15574:18;;;15567:30;15633:34;15613:18;;;15606:62;-1:-1:-1;;;15684:18:46;;;15677:31;15725:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;15957:2:46;4136:171:7;;;15939:21:46;15996:2;15976:18;;;15969:30;16035:34;16015:18;;;16008:62;16106:32;16086:18;;;16079:60;16156:19;;4136:171:7;15755:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;20609:346:40:-;20670:7;20693:13;20710:1;20693:18;20689:260;;-1:-1:-1;20734:42:40;;20609:346::o;20689:260::-;20797:13;20814:1;20797:18;20793:156;;-1:-1:-1;20838:42:40;;20609:346::o;20793:156::-;20911:27;;-1:-1:-1;;;20911:27:40;;16388:2:46;20911:27:40;;;16370:21:46;16427:2;16407:18;;;16400:30;-1:-1:-1;;;16446:18:46;;;16439:47;16503:18;;20911:27:40;16186:341:46;12362:546:40;12499:27;12563:31;;;:19;:31;;;;;;;;;12529:19;:31;;;;;;:65;;12563:31;12529:65;:::i;:::-;12700:31;;;;:19;:31;;;;;;;;;12666:19;:31;;;;;:65;12842:8;:20;;;;;:37;12499:95;;-1:-1:-1;12831:70:40;;-1:-1:-1;;;;;12842:37:40;12499:95;12831:10;:70::i;:::-;12414:494;12362:546;:::o;17903:229::-;17949:7;;18013:1;17995:109;18021:11;929:14:13;18016:2:40;:26;17995:109;;;18073:12;;;;:8;:12;;;;;:20;;;18064:29;;18073:20;;18064:29;;:::i;:::-;;-1:-1:-1;18044:4:40;;;;:::i;:::-;;;;17995:109;;;-1:-1:-1;18120:5:40;17903:229;-1:-1:-1;17903:229:40:o;5084:327:7:-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;3040:43:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3040:43:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;3040:43:40;;;;;-1:-1:-1;;;3040:43:40;;;;;-1:-1:-1;;;3040:43:40;;;;;-1:-1:-1;;;3040:43:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17282:547::-;17405:24;17431:21;17468:17;17488:24;17503:8;17488:14;:24::i;:::-;17522:22;17547:19;;;:8;:19;;;;;;;;17522:44;;;;;;;;;-1:-1:-1;;;;;17522:44:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17522:44:40;;;;;;;;-1:-1:-1;;;17522:44:40;;;;;;;;-1:-1:-1;;;17522:44:40;;;;;;;;-1:-1:-1;;;17522:44:40;;;;;;;;;;;;;;;;;;;;;;;;;17468;;-1:-1:-1;17522:22:40;;:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17522:44:40;;;;-1:-1:-1;;17581:24:40;;17522:44;;-1:-1:-1;;;;;;;17581:40:40;17577:107;;17645:24;;-1:-1:-1;17645:24:40;;-1:-1:-1;17637:36:40;;-1:-1:-1;17637:36:40;17577:107;17723:18;;;;17761:24;;17715:27;;;;;17815:6;17788:23;17715:27;17788:10;:23;:::i;:::-;17787:34;;;;:::i;:::-;17753:69;;;;;;;17282:547;;;;;;:::o;2754:226:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;2838:22:::1;2846:4;2852:7;2838;:22::i;:::-;2833:141;;2876:12;::::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;2876:21:42;::::1;::::0;;;;;;;:28;;-1:-1:-1;;2876:28:42::1;2900:4;2876:28;::::0;;2950:12:::1;929:10:12::0;;850:96;2950:12:42::1;-1:-1:-1::0;;;;;2923:40:42::1;2941:7;-1:-1:-1::0;;;;;2923:40:42::1;2935:4;2923:40;;;;;;;;;;2754:226:::0;;:::o;5477:179:7:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;18694:173:40:-;18741:7;18791:1;18767:21;:11;929:14:13;;838:112;18767:21:40;:25;;;;:::i;:::-;18760:32;;18694:173;:::o;14514:477::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;14802:1:40::1;14756:20:::0;;;:8:::1;:20;::::0;;;;:34:::1;;::::0;-1:-1:-1;;;;;14756:34:40::1;14748:87;;;::::0;-1:-1:-1;;;14748:87:40;;18544:2:46;14748:87:40::1;::::0;::::1;18526:21:46::0;18583:2;18563:18;;;18556:30;18622:28;18602:18;;;18595:56;18668:18;;14748:87:40::1;18342:350:46::0;14748:87:40::1;14846:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:41:::1;;:65:::0;;-1:-1:-1;;;;14846:65:40::1;-1:-1:-1::0;;;14846:65:40::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;14926:58;;18869:25:46;;;18910:18;;;18903:51;14926:58:40::1;::::0;18842:18:46;14926:58:40::1;;;;;;;14514:477:::0;;;:::o;19523:308::-;19602:16;19630:23;19670:9;-1:-1:-1;;;;;19656:31:40;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19656:31:40;;19630:57;;19702:9;19697:105;19717:20;;;19697:105;;;19770:21;19778:9;;19788:1;19778:12;;;;;;;:::i;:::-;;;;;;;19770:7;:21::i;:::-;19758:6;19765:1;19758:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19758:33:40;;;:9;;;;;;;;;;;:33;19739:3;;;;:::i;:::-;;;;19697:105;;;-1:-1:-1;19818:6:40;19523:308;-1:-1:-1;;;19523:308:40:o;13978:324::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;14106:31:40;::::1;14098:70;;;::::0;-1:-1:-1;;;14098:70:40;;19167:2:46;14098:70:40::1;::::0;::::1;19149:21:46::0;19206:2;19186:18;;;19179:30;19245:28;19225:18;;;19218:56;19291:18;;14098:70:40::1;18965:350:46::0;14098:70:40::1;14179:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:34:::1;;:54:::0;;-1:-1:-1;;;;;;14179:54:40::1;-1:-1:-1::0;;;;;14179:54:40;::::1;::::0;;::::1;::::0;;;14248:47;;3889:25:46;;;14248:47:40::1;::::0;3862:18:46;14248:47:40::1;;;;;;;;13978:324:::0;;;:::o;6237:539::-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;19522:2:46;3157:201:5;;;19504:21:46;19561:2;19541:18;;;19534:30;19600:34;19580:18;;;19573:62;-1:-1:-1;;;19651:18:46;;;19644:44;19705:19;;3157:201:5;19320:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;6408:29:40::1;6422:5;6429:7;6408:13;:29::i;:::-;6447:22;:20;:22::i;:::-;6541:25;6559:6;6541:17;:25::i;:::-;6627:13;6644:1;6627:18;6623:67;;6661:18:::0;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;6623:67;6746:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;6746:23:40::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;19887:36:46;;3553:14:5;;19875:2:46;19860:18;3553:14:5;;;;;;;3479:99;3101:483;6237:539:40;;;;:::o;18966:428::-;19029:7;19144:3;19132:15;;;19245:14;;;19241:120;;-1:-1:-1;;19325:25:40;;;;:15;:25;;;;;;;18966:428::o;2651:218:7:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;20136:2:46;2784:56:7;;;20118:21:46;20175:2;20155:18;;;20148:30;-1:-1:-1;;;20194:18:46;;;20187:54;20258:18;;2784:56:7;19934:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;20489:2:46;2481:73:7;;;20471:21:46;20528:2;20508:18;;;20501:30;20567:34;20547:18;;;20540:62;-1:-1:-1;;;20618:18:46;;;20611:39;20667:19;;2481:73:7;20287:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;15163:207:40:-;15251:22;:20;:22::i;:::-;-1:-1:-1;;;;;15235:38:40;929:10:12;-1:-1:-1;;;;;15235:38:40;;:65;;;-1:-1:-1;1623:6:42;;-1:-1:-1;;;;;1623:6:42;929:10:12;15277:23:40;15235:65;15227:90;;;;-1:-1:-1;;;15227:90:40;;;;;;;:::i;:::-;15328:35;15353:9;15328:24;:35::i;:::-;15163:207;:::o;15516:373::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;15689:1:40::1;15657:20:::0;;;:8:::1;:20;::::0;;;;:29:::1;;::::0;;;::::1;;;:33:::0;;;:82:::1;;-1:-1:-1::0;15738:1:40::1;15694:20:::0;;;:8:::1;:20;::::0;;;;:41:::1;;::::0;-1:-1:-1;;;15694:41:40;::::1;;;:45:::0;;15657:82:::1;15636:148;;;::::0;-1:-1:-1;;;15636:148:40;;20899:2:46;15636:148:40::1;::::0;::::1;20881:21:46::0;20938:2;20918:18;;;20911:30;-1:-1:-1;;;20957:18:46;;;20950:49;21016:18;;15636:148:40::1;20697:343:46::0;15636:148:40::1;15795:20;::::0;;;:8:::1;:20;::::0;;;;:39:::1;::::0;:28:::1;;15826:8:::0;;15795:39:::1;:::i;:::-;;15850:32;15861:10;15873:8;;15850:32;;;;;;;;:::i;:::-;;;;;;;;15516:373:::0;;;;:::o;7509:1547::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;7908:1:40::1;7896:9;:13;;;7888:43;;;::::0;-1:-1:-1;;;7888:43:40;;21713:2:46;7888:43:40::1;::::0;::::1;21695:21:46::0;21752:2;21732:18;;;21725:30;-1:-1:-1;;;21771:18:46;;;21764:47;21828:18;;7888:43:40::1;21511:341:46::0;7888:43:40::1;-1:-1:-1::0;;;;;7949:31:40;::::1;7941:69;;;::::0;-1:-1:-1;;;7941:69:40;;22059:2:46;7941:69:40::1;::::0;::::1;22041:21:46::0;22098:2;22078:18;;;22071:30;22137:27;22117:18;;;22110:55;22182:18;;7941:69:40::1;21857:349:46::0;7941:69:40::1;8039:10;8028:21;;:8;:21;;;8020:74;;;::::0;-1:-1:-1;;;8020:74:40;;22413:2:46;8020:74:40::1;::::0;::::1;22395:21:46::0;22452:2;22432:18;;;22425:30;22491:34;22471:18;;;22464:62;-1:-1:-1;;;22542:18:46;;;22535:38;22590:19;;8020:74:40::1;22211:404:46::0;8020:74:40::1;8126:11;929:14:13::0;8112:10:40::1;:35;8104:64;;;::::0;-1:-1:-1;;;8104:64:40;;22822:2:46;8104:64:40::1;::::0;::::1;22804:21:46::0;22861:2;22841:18;;;22834:30;-1:-1:-1;;;22880:18:46;;;22873:46;22936:18;;8104:64:40::1;22620:340:46::0;8104:64:40::1;8183:25;::::0;::::1;::::0;8179:123:::1;;-1:-1:-1::0;;;;;8232:28:40;::::1;8224:67;;;::::0;-1:-1:-1;;;8224:67:40;;19167:2:46;8224:67:40::1;::::0;::::1;19149:21:46::0;19206:2;19186:18;;;19179:30;19245:28;19225:18;;;19218:56;19291:18;;8224:67:40::1;18965:350:46::0;8224:67:40::1;8346:386;;;;;;;;8386:17;-1:-1:-1::0;;;;;8346:386:40::1;;;;;8424:6;8346:386;;;;8453:1;8346:386;;;;;;8478:9;8346:386;;;;;;8513:11;8346:386;;;;;;8549:10;8346:386;;;;;;8582:8;8346:386;;;;;;8626:21;8346:386;;;;;;8676:14;-1:-1:-1::0;;;;;8346:386:40::1;;;;;8713:8;8346:386;;::::0;8312:8:::1;:31;8321:21;:11;929:14:13::0;;838:112;8321:21:40::1;8312:31:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;8312:31:40;:420;;;;-1:-1:-1;;;;;;8312:420:40;;::::1;-1:-1:-1::0;;;;;8312:420:40;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;8312:420:40;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;8312:420:40;;;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;8312:420:40;-1:-1:-1;;;8312:420:40;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8312:420:40;;;;;-1:-1:-1;;;8312:420:40;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;8312:420:40;-1:-1:-1;;;8312:420:40;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8312:420:40;;-1:-1:-1;;;8312:420:40;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;:31;;:420:::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;8776:11:40::1;929:14:13::0;8748:267:40::1;::::0;;-1:-1:-1;;;;;23362:15:46;;;23344:34;;23409:2;23394:18;;23387:34;;;23440:10;23486:15;;;23466:18;;;23459:43;23538:15;;;23533:2;23518:18;;23511:43;23591:15;;;23585:3;23570:19;;23563:44;23644:15;;;23324:3;23623:19;;23616:44;23697:15;;23691:3;23676:19;;23669:44;23750:15;;23744:3;23729:19;;23722:44;8748:267:40;;929:14:13;;-1:-1:-1;8748:267:40::1;::::0;;;;;23293:3:46;8748:267:40;;::::1;9026:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;9026:23:40::1;7509:1547:::0;;;;;;;;;;;:::o;3492:120:42:-;3561:4;3584:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3584:21:42;;;;;;;;;;;;;;;3492:120::o;3093:102:7:-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;5722:315::-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;13545:215:40:-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;13649:20:40::1;::::0;;;:8:::1;:20;::::0;;;;;;:28:::1;;:39:::0;;-1:-1:-1;;;;13649:39:40::1;-1:-1:-1::0;;;13649:39:40::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13703:50;;::::1;::::0;::::1;::::0;-1:-1:-1;;13649:20:40;;13703:50:::1;:::i;16191:696::-:0;7571:4:7;7594:16;;;:7;:16;;;;;;16257:13:40;;-1:-1:-1;;;;;7594:16:7;16282:77:40;;;;-1:-1:-1;;;16282:77:40;;24528:2:46;16282:77:40;;;24510:21:46;24567:2;24547:18;;;24540:30;24606:34;24586:18;;;24579:62;-1:-1:-1;;;24657:18:46;;;24650:45;24712:19;;16282:77:40;24326:411:46;16282:77:40;16370:17;16390:24;16405:8;16390:14;:24::i;:::-;16425:28;16456:19;;;:8;:19;;;;;:27;;16425:58;;16370:44;;-1:-1:-1;16425:28:40;;:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16692:1;16667:14;16661:28;:32;16657:145;;;16730:14;16746:26;16763:8;16746:16;:26::i;:::-;16716:75;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16709:82;;;;16191:696;;;:::o;16657:145::-;16833:18;:16;:18::i;:::-;16853:26;16870:8;16853:16;:26::i;:::-;16819:61;;;;;;;;;:::i;3130:227:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;3214:22:::1;3222:4;3228:7;3214;:22::i;:::-;3210:141;;;3276:5;3252:12:::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;3252:21:42;::::1;::::0;;;;;;;;:29;;-1:-1:-1;;3252:29:42::1;::::0;;3300:40;929:10:12;;3252:12:42;;3300:40:::1;::::0;3276:5;3300:40:::1;3130:227:::0;;:::o;17012:130:40:-;17056:13;17102:18;:16;:18::i;:::-;17088:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;17081:54;;17012:130;:::o;1990:190:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;2070:22:42;::::1;2062:73;;;::::0;-1:-1:-1;;;2062:73:42;;26695:2:46;2062:73:42::1;::::0;::::1;26677:21:46::0;26734:2;26714:18;;;26707:30;26773:34;26753:18;;;26746:62;-1:-1:-1;;;26824:18:46;;;26817:36;26870:19;;2062:73:42::1;26493:402:46::0;9392:2818:40;9592:13;9608:20;;;:8;:20;;;;;:26;;;;;9662:29;;;;;9608:26;;9662:29;;;;;;;9718:28;;9776:11;;9718:28;;9776:11;:::i;:::-;9797:16;9816:20;;;:8;:20;;;;;:30;;;9756:31;;-1:-1:-1;9816:30:40;-1:-1:-1;;;9816:30:40;;;;;-1:-1:-1;;;9873:28:40;;;;;-1:-1:-1;;;9941:41:40;;;;;;10145:12;;10137:47;;;;-1:-1:-1;;;10137:47:40;;27335:2:46;10137:47:40;;;27317:21:46;27374:2;27354:18;;;27347:30;-1:-1:-1;;;27393:18:46;;;27386:52;27455:18;;10137:47:40;27133:346:46;10137:47:40;10278:5;10265:9;:18;;10257:72;;;;-1:-1:-1;;;10257:72:40;;27686:2:46;10257:72:40;;;27668:21:46;27725:2;27705:18;;;27698:30;27764:34;27744:18;;;27737:62;-1:-1:-1;;;27815:18:46;;;27808:39;27864:19;;10257:72:40;27484:405:46;10257:72:40;10409:15;10399:7;:25;;;10391:55;;;;-1:-1:-1;;;10391:55:40;;28096:2:46;10391:55:40;;;28078:21:46;28135:2;28115:18;;;28108:30;-1:-1:-1;;;28154:18:46;;;28147:47;28211:18;;10391:55:40;27894:341:46;10391:55:40;10524:15;10512:9;:27;;;10508:749;;;10639:20;10629:30;;:7;:30;;;10621:102;;;;-1:-1:-1;;;10621:102:40;;28442:2:46;10621:102:40;;;28424:21:46;28481:2;28461:18;;;28454:30;28520:34;28500:18;;;28493:62;28591:29;28571:18;;;28564:57;28638:19;;10621:102:40;28240:423:46;10621:102:40;10865:20;;;;:8;:20;;;;;:34;;;-1:-1:-1;;;;;10865:34:40;10813:48;10823:10;;10874;10847:13;10813:9;:48::i;:::-;-1:-1:-1;;;;;10813:86:40;;10788:159;;;;-1:-1:-1;;;10788:159:40;;28870:2:46;10788:159:40;;;28852:21:46;28909:2;28889:18;;;28882:30;-1:-1:-1;;;28928:18:46;;;28921:44;28982:18;;10788:159:40;28668:338:46;10788:159:40;10508:749;;;11200:8;11190:18;;:7;:18;;;11182:64;;;;-1:-1:-1;;;11182:64:40;;29213:2:46;11182:64:40;;;29195:21:46;29252:2;29232:18;;;29225:30;29291:34;29271:18;;;29264:62;-1:-1:-1;;;29342:18:46;;;29335:31;29383:19;;11182:64:40;29011:397:46;11182:64:40;11335:15;11509:20;;;:8;:20;;;;;:28;;:41;;-1:-1:-1;;11509:41:40;11394:32;;;11509:41;;;;;;11409:3;11395:17;;;11394:32;11731:7;1623:6:42;;-1:-1:-1;;;;;1623:6:42;;1559:77;11731:7:40;11690:20;;;;:8;:20;;;;;:37;-1:-1:-1;;;;;11690:48:40;;;:37;;:48;11686:324;;11812:31;;;;:19;:31;;;;;:44;;11847:9;;11812:31;:44;;11847:9;;11812:44;:::i;:::-;;;;-1:-1:-1;11686:324:40;;-1:-1:-1;11686:324:40;;11950:20;;;;:8;:20;;;;;:37;11939:60;;-1:-1:-1;;;;;11950:37:40;11989:9;11939:10;:60::i;:::-;12085:26;12091:10;12103:7;12085:5;:26::i;:::-;12127:76;;;29615:10:46;29603:23;;29585:42;;29658:2;29643:18;;29636:34;;;12177:10:40;;12156:7;;12144:10;;12127:76;;29558:18:46;12127:76:40;;;;;;;9529:2681;;;;;;;;9392:2818;;;;:::o;13117:227::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;13225:20:40::1;::::0;;;:8:::1;:20;::::0;;;;;:30:::1;;:43:::0;;-1:-1:-1;;;;13225:43:40::1;-1:-1:-1::0;;;13225:43:40::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13283:54;;13225:43;;13283:54:::1;::::0;::::1;::::0;13225:20;;;13283:54:::1;:::i;1987:344:7:-:0;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;1060:166:17;12173:133:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;20136:2:46;12246:53:7;;;20118:21:46;20175:2;20155:18;;;20148:30;-1:-1:-1;;;20194:18:46;;;20187:54;20258:18;;12246:53:7;19934:348:46;11464:182:7;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;21215:308:40:-;21331:7;21306:21;:32;;21298:74;;;;-1:-1:-1;;;21298:74:40;;29883:2:46;21298:74:40;;;29865:21:46;29922:2;29902:18;;;29895:30;29961:31;29941:18;;;29934:59;30010:18;;21298:74:40;29681:353:46;21298:74:40;21384:12;21402:10;-1:-1:-1;;;;;21402:15:40;21425:7;21402:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21383:54;;;21455:7;21447:69;;;;-1:-1:-1;;;21447:69:40;;30451:2:46;21447:69:40;;;30433:21:46;30490:2;30470:18;;;30463:30;30529:34;30509:18;;;30502:62;-1:-1:-1;;;30580:18:46;;;30573:47;30637:19;;21447:69:40;30249:413:46;7789:272:7;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;30869:2:46;10855:92:7;;;30851:21:46;30908:2;30888:18;;;30881:30;30947:34;30927:18;;;30920:62;-1:-1:-1;;;30998:18:46;;;30991:35;31043:19;;10855:92:7;30667:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;31275:2:46;10957:65:7;;;31257:21:46;31314:2;31294:18;;;31287:30;31353:34;31333:18;;;31326:62;-1:-1:-1;;;31404:18:46;;;31397:34;31448:19;;10957:65:7;31073:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1605:149::-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1708:39:7::1;1732:5;1739:7;1708:23;:39::i;1217:143:42:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1285:26:42::1;:24;:26::i;:::-;1321:32;:30;:32::i;:::-;1217:143::o:0;2334:179::-;2418:6;;;-1:-1:-1;;;;;2434:17:42;;;-1:-1:-1;;;;;;2434:17:42;;;;;;;2466:40;;2418:6;;;2434:17;2418:6;;2466:40;;2399:16;;2466:40;2389:124;2334:179;:::o;11782:307:7:-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;32092:2:46;11915:55:7;;;32074:21:46;32131:2;32111:18;;;32104:30;32170:27;32150:18;;;32143:55;32215:18;;11915:55:7;31890:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;392:703:30:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:30;;;;;;;;;;;;-1:-1:-1;;;691:10:30;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:30;;-1:-1:-1;837:2:30;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;-1:-1:-1;;;;;881:17:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:30;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:30;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:30;;;;;;;;-1:-1:-1;1036:11:30;1045:2;1036:11;;:::i;:::-;;;908:150;;24167:386:40;24217:13;24242:29;24274:56;24318:4;24327:2;24274:19;:56::i;:::-;24242:88;;24344:13;24361:1;24344:18;24340:207;;24433:15;24385:69;;;;;;;;:::i;:::-;;;;;;;;;;;;;24378:76;;;24167:386;:::o;24340:207::-;24506:7;24515:15;24492:44;;;;;;;;;:::i;24340:207::-;24232:321;24167:386;:::o;21815:1207::-;21951:7;22162:5;22146:13;:21;22138:59;;;;-1:-1:-1;;;22138:59:40;;35119:2:46;22138:59:40;;;35101:21:46;35158:2;35138:18;;;35131:30;35197:27;35177:18;;;35170:55;35242:18;;22138:59:40;34917:349:46;22138:59:40;22253:17;23935:25;;;:13;:25;;;;;;;;23798:3;23782:19;;23935:43;;;;;;;;;23834:19;;;24033:30;;;24075:1;24032:45;;22459:14;;22451:71;;;;-1:-1:-1;;;22451:71:40;;35473:2:46;22451:71:40;;;35455:21:46;35512:2;35492:18;;;35485:30;35551:34;35531:18;;;35524:62;-1:-1:-1;;;35602:18:46;;;35595:42;35654:19;;22451:71:40;35271:408:46;22451:71:40;22607:25;;;;:13;:25;;;;;;;;:43;;;;;;;;22675:1;22667:30;;22653:45;;22607:91;;22855:92;;2533:109;22855:92;;;35943:25:46;22902:4:40;36022:18:46;;;36015:43;22909:10:40;36074:18:46;;;36067:43;36126:18;;;36119:34;;;36169:19;;;;36162:35;;;22855:92:40;;;;;;;;;;35915:19:46;;;22855:92:40;;;22845:103;;;;;;;-1:-1:-1;;;22749:213:40;;;36466:27:46;22811:16:40;36509:11:46;;;36502:27;36545:12;;;36538:28;36582:12;;22749:213:40;;;;;;;;;;;;22726:246;;;;;;22709:263;;22989:26;23004:10;;22989:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22989:6:40;;:26;-1:-1:-1;;22989:14:40;:26;-1:-1:-1;22989:26:40:i;:::-;22982:33;21815:1207;-1:-1:-1;;;;;;;;;;21815:1207:40:o;9351:427:7:-;-1:-1:-1;;;;;9430:16:7;;9422:61;;;;-1:-1:-1;;;9422:61:7;;36807:2:46;9422:61:7;;;36789:21:46;;;36826:18;;;36819:30;36885:34;36865:18;;;36858:62;36937:18;;9422:61:7;36605:356:46;9422:61:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;:30;9493:58;;;;-1:-1:-1;;;9493:58:7;;37168:2:46;9493:58:7;;;37150:21:46;37207:2;37187:18;;;37180:30;37246;37226:18;;;37219:58;37294:18;;9493:58:7;36966:352:46;9493:58:7;-1:-1:-1;;;;;9618:13:7;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:7;-1:-1:-1;;;;;9646:21:7;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;12414:494:40;12362:546;:::o;1760:160:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1873:13:7;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1896:17:7;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;776:69:12:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;1366:117:42:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1444:32:42::1;929:10:12::0;1444:18:42::1;:32::i;12858:853:7:-:0;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;13683:11;;1652:441:30;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;-1:-1:-1;;;;;1774:25:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:30;;1752:47;;-1:-1:-1;;;1809:6:30;1816:1;1809:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1809:15:30;;;;;;;;;-1:-1:-1;;;1834:6:30;1841:1;1834:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1834:15:30;;;;;;;;-1:-1:-1;1864:9:30;1876:10;1880:6;1876:1;:10;:::i;:::-;:14;;1889:1;1876:14;:::i;:::-;1864:26;;1859:132;1896:1;1892;:5;1859:132;;;-1:-1:-1;;;1943:5:30;1951:3;1943:11;1930:25;;;;;;;:::i;:::-;;;;1918:6;1925:1;1918:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;1918:37:30;;;;;;;;-1:-1:-1;1979:1:30;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:30;;2000:55;;;;-1:-1:-1;;;2000:55:30;;38425:2:46;2000:55:30;;;38407:21:46;;;38444:18;;;38437:30;38503:34;38483:18;;;38476:62;38555:18;;2000:55:30;38223:356:46;2000:55:30;2079:6;1652:441;-1:-1:-1;;;1652:441:30:o;4402:227:31:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:31;;-1:-1:-1;3563:35:31;3543:56;;548:631;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;766:34;;-1:-1:-1;;;766:34:31;;38786:2:46;766:34:31;;;38768:21:46;38825:2;38805:18;;;38798:30;38864:26;38844:18;;;38837:54;38908:18;;766:34:31;38584:348:46;708:465:31;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;881:41;;-1:-1:-1;;;881:41:31;;39139:2:46;881:41:31;;;39121:21:46;39178:2;39158:18;;;39151:30;39217:33;39197:18;;;39190:61;39268:18;;881:41:31;38937:355:46;817:356:31;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;998:44;;-1:-1:-1;;;998:44:31;;39499:2:46;998:44:31;;;39481:21:46;39538:2;39518:18;;;39511:30;39577:34;39557:18;;;39550:62;-1:-1:-1;;;39628:18:46;;;39621:32;39670:19;;998:44:31;39297:398:46;939:234:31;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;1118:44;;-1:-1:-1;;;1118:44:31;;39902:2:46;1118:44:31;;;39884:21:46;39941:2;39921:18;;;39914:30;39980:34;39960:18;;;39953:62;-1:-1:-1;;;40031:18:46;;;40024:32;40073:19;;1118:44:31;39700:398:46;5810:1603:31;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:31;;-1:-1:-1;6962:30:31;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:31;;-1:-1:-1;7071:30:31;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;40330:25:46;;;40403:4;40391:17;;40371:18;;;40364:45;;;;40425:18;;;40418:34;;;40468:18;;;40461:34;;;7224:24:31;;40302:19:46;;7224:24:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:31;;-1:-1:-1;;7224:24:31;;;-1:-1:-1;;;;;;;7262:20:31;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:31;;-1:-1:-1;5810:1603:31;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:31;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:46;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:367::-;655:8;665:6;719:3;712:4;704:6;700:17;696:27;686:55;;737:1;734;727:12;686:55;-1:-1:-1;760:20:46;;-1:-1:-1;;;;;792:30:46;;789:50;;;835:1;832;825:12;789:50;872:4;864:6;860:17;848:29;;932:3;925:4;915:6;912:1;908:14;900:6;896:27;892:38;889:47;886:67;;;949:1;946;939:12;964:505;1059:6;1067;1075;1128:2;1116:9;1107:7;1103:23;1099:32;1096:52;;;1144:1;1141;1134:12;1096:52;1180:9;1167:23;1157:33;;1241:2;1230:9;1226:18;1213:32;-1:-1:-1;;;;;1260:6:46;1257:30;1254:50;;;1300:1;1297;1290:12;1254:50;1339:70;1401:7;1392:6;1381:9;1377:22;1339:70;:::i;:::-;964:505;;1428:8;;-1:-1:-1;1313:96:46;;-1:-1:-1;;;;964:505:46:o;1474:642::-;1639:2;1691:21;;;1761:13;;1664:18;;;1783:22;;;1610:4;;1639:2;1862:15;;;;1836:2;1821:18;;;1610:4;1905:185;1919:6;1916:1;1913:13;1905:185;;;1994:13;;1987:21;1980:29;1968:42;;2065:15;;;;2030:12;;;;1941:1;1934:9;1905:185;;;-1:-1:-1;2107:3:46;;1474:642;-1:-1:-1;;;;;;1474:642:46:o;2121:258::-;2193:1;2203:113;2217:6;2214:1;2211:13;2203:113;;;2293:11;;;2287:18;2274:11;;;2267:39;2239:2;2232:10;2203:113;;;2334:6;2331:1;2328:13;2325:48;;;-1:-1:-1;;2369:1:46;2351:16;;2344:27;2121:258::o;2384:269::-;2437:3;2475:5;2469:12;2502:6;2497:3;2490:19;2518:63;2574:6;2567:4;2562:3;2558:14;2551:4;2544:5;2540:16;2518:63;:::i;:::-;2635:2;2614:15;-1:-1:-1;;2610:29:46;2601:39;;;;2642:4;2597:50;;2384:269;-1:-1:-1;;2384:269:46:o;2658:231::-;2807:2;2796:9;2789:21;2770:4;2827:56;2879:2;2868:9;2864:18;2856:6;2827:56;:::i;2894:180::-;2953:6;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;-1:-1:-1;3045:23:46;;2894:180;-1:-1:-1;2894:180:46:o;3287:131::-;-1:-1:-1;;;;;3362:31:46;;3352:42;;3342:70;;3408:1;3405;3398:12;3423:315;3491:6;3499;3552:2;3540:9;3531:7;3527:23;3523:32;3520:52;;;3568:1;3565;3558:12;3520:52;3607:9;3594:23;3626:31;3651:5;3626:31;:::i;:::-;3676:5;3728:2;3713:18;;;;3700:32;;-1:-1:-1;;;3423:315:46:o;3925:456::-;4002:6;4010;4018;4071:2;4059:9;4050:7;4046:23;4042:32;4039:52;;;4087:1;4084;4077:12;4039:52;4126:9;4113:23;4145:31;4170:5;4145:31;:::i;:::-;4195:5;-1:-1:-1;4252:2:46;4237:18;;4224:32;4265:33;4224:32;4265:33;:::i;:::-;3925:456;;4317:7;;-1:-1:-1;;;4371:2:46;4356:18;;;;4343:32;;3925:456::o;4568:1041::-;-1:-1:-1;;;;;5033:15:46;;;5015:34;;5080:2;5065:18;;5058:34;;;5111:10;5157:15;;;5152:2;5137:18;;5130:43;5209:15;;;5204:2;5189:18;;5182:43;5262:15;;;5256:3;5241:19;;5234:44;5315:15;;;4995:3;5294:19;;5287:44;5368:15;;;5362:3;5347:19;;5340:44;5421:15;;5415:3;5400:19;;5393:44;5474:15;;5468:3;5453:19;;5446:44;4965:3;5521;5506:19;;5499:31;;;4936:4;;5547:56;5584:18;;;5576:6;5547:56;:::i;:::-;5539:64;4568:1041;-1:-1:-1;;;;;;;;;;;;;4568:1041:46:o;5614:248::-;5682:6;5690;5743:2;5731:9;5722:7;5718:23;5714:32;5711:52;;;5759:1;5756;5749:12;5711:52;-1:-1:-1;;5782:23:46;;;5852:2;5837:18;;;5824:32;;-1:-1:-1;5614:248:46:o;6146:315::-;6214:6;6222;6275:2;6263:9;6254:7;6250:23;6246:32;6243:52;;;6291:1;6288;6281:12;6243:52;6327:9;6314:23;6304:33;;6387:2;6376:9;6372:18;6359:32;6400:31;6425:5;6400:31;:::i;:::-;6450:5;6440:15;;;6146:315;;;;;:::o;6466:163::-;6533:20;;6593:10;6582:22;;6572:33;;6562:61;;6619:1;6616;6609:12;6562:61;6466:163;;;:::o;6634:252::-;6701:6;6709;6762:2;6750:9;6741:7;6737:23;6733:32;6730:52;;;6778:1;6775;6768:12;6730:52;6814:9;6801:23;6791:33;;6843:37;6876:2;6865:9;6861:18;6843:37;:::i;:::-;6833:47;;6634:252;;;;;:::o;6891:437::-;6977:6;6985;7038:2;7026:9;7017:7;7013:23;7009:32;7006:52;;;7054:1;7051;7044:12;7006:52;7094:9;7081:23;-1:-1:-1;;;;;7119:6:46;7116:30;7113:50;;;7159:1;7156;7149:12;7113:50;7198:70;7260:7;7251:6;7240:9;7236:22;7198:70;:::i;:::-;7287:8;;7172:96;;-1:-1:-1;6891:437:46;-1:-1:-1;;;;6891:437:46:o;7333:658::-;7504:2;7556:21;;;7626:13;;7529:18;;;7648:22;;;7475:4;;7504:2;7727:15;;;;7701:2;7686:18;;;7475:4;7770:195;7784:6;7781:1;7778:13;7770:195;;;7849:13;;-1:-1:-1;;;;;7845:39:46;7833:52;;7940:15;;;;7905:12;;;;7881:1;7799:9;7770:195;;8316:127;8377:10;8372:3;8368:20;8365:1;8358:31;8408:4;8405:1;8398:15;8432:4;8429:1;8422:15;8448:632;8513:5;-1:-1:-1;;;;;8584:2:46;8576:6;8573:14;8570:40;;;8590:18;;:::i;:::-;8665:2;8659:9;8633:2;8719:15;;-1:-1:-1;;8715:24:46;;;8741:2;8711:33;8707:42;8695:55;;;8765:18;;;8785:22;;;8762:46;8759:72;;;8811:18;;:::i;:::-;8851:10;8847:2;8840:22;8880:6;8871:15;;8910:6;8902;8895:22;8950:3;8941:6;8936:3;8932:16;8929:25;8926:45;;;8967:1;8964;8957:12;8926:45;9017:6;9012:3;9005:4;8997:6;8993:17;8980:44;9072:1;9065:4;9056:6;9048;9044:19;9040:30;9033:41;;;;8448:632;;;;;:::o;9085:222::-;9128:5;9181:3;9174:4;9166:6;9162:17;9158:27;9148:55;;9199:1;9196;9189:12;9148:55;9221:80;9297:3;9288:6;9275:20;9268:4;9260:6;9256:17;9221:80;:::i;9312:879::-;9428:6;9436;9444;9452;9505:3;9493:9;9484:7;9480:23;9476:33;9473:53;;;9522:1;9519;9512:12;9473:53;9561:9;9548:23;9580:31;9605:5;9580:31;:::i;:::-;9630:5;-1:-1:-1;9686:2:46;9671:18;;9658:32;-1:-1:-1;;;;;9739:14:46;;;9736:34;;;9766:1;9763;9756:12;9736:34;9789:50;9831:7;9822:6;9811:9;9807:22;9789:50;:::i;:::-;9779:60;;9892:2;9881:9;9877:18;9864:32;9848:48;;9921:2;9911:8;9908:16;9905:36;;;9937:1;9934;9927:12;9905:36;9960:52;10004:7;9993:8;9982:9;9978:24;9960:52;:::i;:::-;9950:62;;10065:2;10054:9;10050:18;10037:32;10021:48;;10094:2;10084:8;10081:16;10078:36;;;10110:1;10107;10100:12;10078:36;;10133:52;10177:7;10166:8;10155:9;10151:24;10133:52;:::i;:::-;10123:62;;;9312:879;;;;;;;:::o;10196:247::-;10255:6;10308:2;10296:9;10287:7;10283:23;10279:32;10276:52;;;10324:1;10321;10314:12;10276:52;10363:9;10350:23;10382:31;10407:5;10382:31;:::i;10448:348::-;10500:8;10510:6;10564:3;10557:4;10549:6;10545:17;10541:27;10531:55;;10582:1;10579;10572:12;10531:55;-1:-1:-1;10605:20:46;;-1:-1:-1;;;;;10637:30:46;;10634:50;;;10680:1;10677;10670:12;10634:50;10717:4;10709:6;10705:17;10693:29;;10769:3;10762:4;10753:6;10745;10741:19;10737:30;10734:39;10731:59;;;10786:1;10783;10776:12;10801:479;10881:6;10889;10897;10950:2;10938:9;10929:7;10925:23;10921:32;10918:52;;;10966:1;10963;10956:12;10918:52;11002:9;10989:23;10979:33;;11063:2;11052:9;11048:18;11035:32;-1:-1:-1;;;;;11082:6:46;11079:30;11076:50;;;11122:1;11119;11112:12;11076:50;11161:59;11212:7;11203:6;11192:9;11188:22;11161:59;:::i;11285:1109::-;11438:6;11446;11454;11462;11470;11478;11486;11494;11502;11510;11563:3;11551:9;11542:7;11538:23;11534:33;11531:53;;;11580:1;11577;11570:12;11531:53;11619:9;11606:23;11638:31;11663:5;11638:31;:::i;:::-;11688:5;-1:-1:-1;11740:2:46;11725:18;;11712:32;;-1:-1:-1;11763:37:46;11796:2;11781:18;;11763:37;:::i;:::-;11753:47;;11819:37;11852:2;11841:9;11837:18;11819:37;:::i;:::-;11809:47;;11875:38;11908:3;11897:9;11893:19;11875:38;:::i;:::-;11865:48;;11932:38;11965:3;11954:9;11950:19;11932:38;:::i;:::-;11922:48;;11989:38;12022:3;12011:9;12007:19;11989:38;:::i;:::-;11979:48;;12079:3;12068:9;12064:19;12051:33;12093;12118:7;12093:33;:::i;:::-;12145:7;-1:-1:-1;12199:3:46;12184:19;;12171:33;;-1:-1:-1;12255:3:46;12240:19;;12227:33;-1:-1:-1;;;;;12272:30:46;;12269:50;;;12315:1;12312;12305:12;12269:50;12338;12380:7;12371:6;12360:9;12356:22;12338:50;:::i;:::-;12328:60;;;11285:1109;;;;;;;;;;;;;:::o;12399:416::-;12464:6;12472;12525:2;12513:9;12504:7;12500:23;12496:32;12493:52;;;12541:1;12538;12531:12;12493:52;12580:9;12567:23;12599:31;12624:5;12599:31;:::i;:::-;12649:5;-1:-1:-1;12706:2:46;12691:18;;12678:32;12748:15;;12741:23;12729:36;;12719:64;;12779:1;12776;12769:12;12820:795;12915:6;12923;12931;12939;12992:3;12980:9;12971:7;12967:23;12963:33;12960:53;;;13009:1;13006;12999:12;12960:53;13048:9;13035:23;13067:31;13092:5;13067:31;:::i;:::-;13117:5;-1:-1:-1;13174:2:46;13159:18;;13146:32;13187:33;13146:32;13187:33;:::i;:::-;13239:7;-1:-1:-1;13293:2:46;13278:18;;13265:32;;-1:-1:-1;13348:2:46;13333:18;;13320:32;-1:-1:-1;;;;;13364:30:46;;13361:50;;;13407:1;13404;13397:12;13361:50;13430:22;;13483:4;13475:13;;13471:27;-1:-1:-1;13461:55:46;;13512:1;13509;13502:12;13461:55;13535:74;13601:7;13596:2;13583:16;13578:2;13574;13570:11;13535:74;:::i;13620:388::-;13688:6;13696;13749:2;13737:9;13728:7;13724:23;13720:32;13717:52;;;13765:1;13762;13755:12;13717:52;13804:9;13791:23;13823:31;13848:5;13823:31;:::i;:::-;13873:5;-1:-1:-1;13930:2:46;13915:18;;13902:32;13943:33;13902:32;13943:33;:::i;14013:546::-;14101:6;14109;14117;14125;14178:2;14166:9;14157:7;14153:23;14149:32;14146:52;;;14194:1;14191;14184:12;14146:52;14230:9;14217:23;14207:33;;14291:2;14280:9;14276:18;14263:32;-1:-1:-1;;;;;14310:6:46;14307:30;14304:50;;;14350:1;14347;14340:12;14304:50;14389:59;14440:7;14431:6;14420:9;14416:22;14389:59;:::i;:::-;14013:546;;14467:8;;-1:-1:-1;14363:85:46;;14549:2;14534:18;14521:32;;14013:546;-1:-1:-1;;;;14013:546:46:o;14564:127::-;14625:10;14620:3;14616:20;14613:1;14606:31;14656:4;14653:1;14646:15;14680:4;14677:1;14670:15;14696:127;14757:10;14752:3;14748:20;14745:1;14738:31;14788:4;14785:1;14778:15;14812:4;14809:1;14802:15;14828:135;14867:3;14888:17;;;14885:43;;14908:18;;:::i;:::-;-1:-1:-1;14955:1:46;14944:13;;14828:135::o;14968:380::-;15047:1;15043:12;;;;15090;;;15111:61;;15165:4;15157:6;15153:17;15143:27;;15111:61;15218:2;15210:6;15207:14;15187:18;15184:38;15181:161;;15264:10;15259:3;15255:20;15252:1;15245:31;15299:4;15296:1;15289:15;15327:4;15324:1;15317:15;16532:125;16572:4;16600:1;16597;16594:8;16591:34;;;16605:18;;:::i;:::-;-1:-1:-1;16642:9:46;;16532:125::o;16662:128::-;16702:3;16733:1;16729:6;16726:1;16723:13;16720:39;;;16739:18;;:::i;:::-;-1:-1:-1;16775:9:46;;16662:128::o;16795:410::-;16997:2;16979:21;;;17036:2;17016:18;;;17009:30;17075:34;17070:2;17055:18;;17048:62;-1:-1:-1;;;17141:2:46;17126:18;;17119:44;17195:3;17180:19;;16795:410::o;17210:168::-;17250:7;17316:1;17312;17308:6;17304:14;17301:1;17298:21;17293:1;17286:9;17279:17;17275:45;17272:71;;;17323:18;;:::i;:::-;-1:-1:-1;17363:9:46;;17210:168::o;17383:127::-;17444:10;17439:3;17435:20;17432:1;17425:31;17475:4;17472:1;17465:15;17499:4;17496:1;17489:15;17515:120;17555:1;17581;17571:35;;17586:18;;:::i;:::-;-1:-1:-1;17620:9:46;;17515:120::o;17640:356::-;17842:2;17824:21;;;17861:18;;;17854:30;17920:34;17915:2;17900:18;;17893:62;17987:2;17972:18;;17640:356::o;18001:336::-;18203:2;18185:21;;;18242:2;18222:18;;;18215:30;-1:-1:-1;;;18276:2:46;18261:18;;18254:42;18328:2;18313:18;;18001:336::o;21045:461::-;21232:6;21221:9;21214:25;21275:2;21270;21259:9;21255:18;21248:30;21314:6;21309:2;21298:9;21294:18;21287:34;21371:6;21363;21358:2;21347:9;21343:18;21330:48;21427:1;21398:22;;;21422:2;21394:31;;;21387:42;;;;21490:2;21469:15;;;-1:-1:-1;;21465:29:46;21450:45;21446:54;;21045:461;-1:-1:-1;;21045:461:46:o;23777:127::-;23838:10;23833:3;23829:20;23826:1;23819:31;23869:4;23866:1;23859:15;23893:4;23890:1;23883:15;23909:412;24082:2;24067:18;;24115:1;24104:13;;24094:144;;24160:10;24155:3;24151:20;24148:1;24141:31;24195:4;24192:1;24185:15;24223:4;24220:1;24213:15;24094:144;24247:25;;;24303:2;24288:18;24281:34;23909:412;:::o;24742:185::-;24784:3;24822:5;24816:12;24837:52;24882:6;24877:3;24870:4;24863:5;24859:16;24837:52;:::i;:::-;24905:16;;;;;24742:185;-1:-1:-1;;24742:185:46:o;24932:637::-;25202:3;25240:6;25234:13;25256:53;25302:6;25297:3;25290:4;25282:6;25278:17;25256:53;:::i;:::-;25372:13;;25331:16;;;;25394:57;25372:13;25331:16;25428:4;25416:17;;25394:57;:::i;:::-;-1:-1:-1;;;25473:20:46;;25502:31;;;25560:2;25549:14;;24932:637;-1:-1:-1;;;;24932:637:46:o;25574:470::-;25753:3;25791:6;25785:13;25807:53;25853:6;25848:3;25841:4;25833:6;25829:17;25807:53;:::i;:::-;25923:13;;25882:16;;;;25945:57;25923:13;25882:16;25979:4;25967:17;;25945:57;:::i;:::-;26018:20;;25574:470;-1:-1:-1;;;;25574:470:46:o;26049:439::-;26271:3;26309:6;26303:13;26325:53;26371:6;26366:3;26359:4;26351:6;26347:17;26325:53;:::i;:::-;-1:-1:-1;;;26400:16:46;;26425:27;;;-1:-1:-1;26479:2:46;26468:14;;26049:439;-1:-1:-1;26049:439:46:o;26900:228::-;26939:3;26967:10;27004:2;27001:1;26997:10;27034:2;27031:1;27027:10;27065:3;27061:2;27057:12;27052:3;27049:21;27046:47;;;27073:18;;:::i;31478:407::-;31680:2;31662:21;;;31719:2;31699:18;;;31692:30;31758:34;31753:2;31738:18;;31731:62;-1:-1:-1;;;31824:2:46;31809:18;;31802:41;31875:3;31860:19;;31478:407::o;32244:414::-;32446:2;32428:21;;;32485:2;32465:18;;;32458:30;32524:34;32519:2;32504:18;;32497:62;-1:-1:-1;;;32590:2:46;32575:18;;32568:48;32648:3;32633:19;;32244:414::o;32663:112::-;32695:1;32721;32711:35;;32726:18;;:::i;:::-;-1:-1:-1;32760:9:46;;32663:112::o;32853:583::-;33195:32;33190:3;33183:45;33165:3;33257:6;33251:13;33273:62;33328:6;33323:2;33318:3;33314:12;33307:4;33299:6;33295:17;33273:62;:::i;:::-;-1:-1:-1;;;33394:2:46;33354:16;;;;33386:11;;;33379:24;-1:-1:-1;33427:2:46;33419:11;;32853:583;-1:-1:-1;32853:583:46:o;33567:1345::-;33833:3;33862:1;33895:6;33889:13;33925:3;33947:1;33975:9;33971:2;33967:18;33957:28;;34035:2;34024:9;34020:18;34057;34047:61;;34101:4;34093:6;34089:17;34079:27;;34047:61;34127:2;34175;34167:6;34164:14;34144:18;34141:38;34138:165;;-1:-1:-1;;;34202:33:46;;34258:4;34255:1;34248:15;34288:4;34209:3;34276:17;34138:165;34319:18;34346:104;;;;34464:1;34459:320;;;;34312:467;;34346:104;-1:-1:-1;;34379:24:46;;34367:37;;34424:16;;;;-1:-1:-1;34346:104:46;;34459:320;33514:1;33507:14;;;33551:4;33538:18;;34554:1;34568:165;34582:6;34579:1;34576:13;34568:165;;;34660:14;;34647:11;;;34640:35;34703:16;;;;34597:10;;34568:165;;;34572:3;;34762:6;34757:3;34753:16;34746:23;;34312:467;;;;34801:30;34827:3;34819:6;34801:30;:::i;:::-;-1:-1:-1;;;32830:16:46;;34892:14;;;-1:-1:-1;;;;;;;33567:1345:46:o;37323:500::-;-1:-1:-1;;;;;37592:15:46;;;37574:34;;37644:15;;37639:2;37624:18;;37617:43;37691:2;37676:18;;37669:34;;;37739:3;37734:2;37719:18;;37712:31;;;37517:4;;37760:57;;37797:19;;37789:6;37760:57;:::i;:::-;37752:65;37323:500;-1:-1:-1;;;;;;37323:500:46:o;37828:249::-;37897:6;37950:2;37938:9;37929:7;37925:23;37921:32;37918:52;;;37966:1;37963;37956:12;37918:52;37998:9;37992:16;38017:30;38041:5;38017:30;:::i;38082:136::-;38121:3;38149:5;38139:39;;38158:18;;:::i;:::-;-1:-1:-1;;;38194:18:46;;38082:136::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3475800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ADMIN_ROLE()": "infinite",
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMISSIONED_SALE_TYPEHASH()": "329",
                "_tokenToEdition(uint256)": "2505",
                "approve(address,uint256)": "infinite",
                "atEditionId()": "2453",
                "atTokenId()": "2410",
                "balanceOf(address)": "2673",
                "buyEdition(uint256,bytes,uint256)": "infinite",
                "checkTicketNumbers(uint256,uint256[])": "infinite",
                "contractURI()": "infinite",
                "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": "infinite",
                "depositedForEdition(uint256)": "2482",
                "editionCount()": "2445",
                "editions(uint256)": "infinite",
                "getApproved(uint256)": "4837",
                "grantRole(bytes32,address)": "31197",
                "hasRole(bytes32,address)": "2764",
                "initialize(address,string,string,string)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "owner()": "2398",
                "ownerOf(uint256)": "2606",
                "ownersOfTokenIds(uint256[])": "infinite",
                "revokeRole(bytes32,address)": "31221",
                "royaltyInfo(uint256,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26722",
                "setEditionBaseURI(uint256,string)": "infinite",
                "setEndTime(uint256,uint32)": "infinite",
                "setOwnerOverride(address)": "infinite",
                "setPermissionedQuantity(uint256,uint32)": "infinite",
                "setSignerAddress(uint256,address)": "infinite",
                "setStartTime(uint256,uint32)": "infinite",
                "soundRecoveryAddress()": "351",
                "supportsInterface(bytes4)": "infinite",
                "symbol()": "infinite",
                "tokenToEdition(uint256)": "2537",
                "tokenURI(uint256)": "infinite",
                "totalSupply()": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite",
                "withdrawFunds(uint256)": "infinite",
                "withdrawnForEdition(uint256)": "2571"
              },
              "internal": {
                "_contractBaseURI()": "infinite",
                "_getBitForTicketNumber(uint256,uint256)": "infinite",
                "_sendFunds(address payable,uint256)": "infinite",
                "getSigner(bytes calldata,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "ADMIN_ROLE()": "75b238fc",
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMISSIONED_SALE_TYPEHASH()": "27399d36",
              "_tokenToEdition(uint256)": "5076a64d",
              "approve(address,uint256)": "095ea7b3",
              "atEditionId()": "9725d92e",
              "atTokenId()": "3ef2dbc2",
              "balanceOf(address)": "70a08231",
              "buyEdition(uint256,bytes,uint256)": "f71e54fb",
              "checkTicketNumbers(uint256,uint256[])": "065d5b85",
              "contractURI()": "e8a3d485",
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": "8e116aea",
              "depositedForEdition(uint256)": "e1a3d573",
              "editionCount()": "4bf44026",
              "editions(uint256)": "279c806e",
              "getApproved(uint256)": "081812fc",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "initialize(address,string,string,string)": "5f1e6f6d",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "ownersOfTokenIds(uint256[])": "52f5c2e4",
              "revokeRole(bytes32,address)": "d547741f",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setEditionBaseURI(uint256,string)": "79672692",
              "setEndTime(uint256,uint32)": "bb314ca1",
              "setOwnerOverride(address)": "75a8f08f",
              "setPermissionedQuantity(uint256,uint32)": "52e25bf2",
              "setSignerAddress(uint256,address)": "56dee996",
              "setStartTime(uint256,uint32)": "fbab9e04",
              "soundRecoveryAddress()": "0bcca831",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenToEdition(uint256)": "602787ed",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply()": "18160ddd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdrawFunds(uint256)": "155dd5ee",
              "withdrawnForEdition(uint256)": "d3bb0528"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum ArtistV5.TimeType\",\"name\":\"timeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"newTime\",\"type\":\"uint32\"}],\"name\":\"AuctionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"BaseURISet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"EditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ticketNumber\",\"type\":\"uint256\"}],\"name\":\"EditionPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"PermissionedQuantitySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"SignerAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMISSIONED_SALE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"atEditionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"atTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_ticketNumber\",\"type\":\"uint256\"}],\"name\":\"buyEdition\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_ticketNumbers\",\"type\":\"uint256[]\"}],\"name\":\"checkTicketNumbers\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_signerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createEdition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositedForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"editionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"editions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"ownersOfTokenIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"setEditionBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"setEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"setOwnerOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"setPermissionedQuantity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_newSignerAddress\",\"type\":\"address\"}],\"name\":\"setSignerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"}],\"name\":\"setStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"soundRecoveryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawnForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SoundXYZ - @gigamesh & @vigneshka\",\"details\":\"Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyEdition(uint256,bytes,uint256)\":{\"params\":{\"_editionId\":\"The id of the edition to purchase\",\"_signature\":\"A signed message for authorizing permissioned purchases\",\"_ticketNumber\":\"Ticket number required for validating this buyer hasn't already bought.\"}},\"checkTicketNumbers(uint256,uint256[])\":{\"params\":{\"_editionId\":\"Edition id\",\"_ticketNumbers\":\"List of ticket numbers (indexes)\"}},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)\":{\"params\":{\"_baseURI\":\"The base URI for the edition\",\"_editionId\":\"The expected edition ID\",\"_endTime\":\"The end time of the auction, in seconds since unix epoch.\",\"_fundingRecipient\":\"The account that will receive sales revenue.\",\"_permissionedQuantity\":\"The quantity of tokens that require a signature to buy.\",\"_price\":\"The price at which each token will be sold, in ETH.\",\"_quantity\":\"The maximum number of tokens that can be sold.\",\"_royaltyBPS\":\"The royalty amount in bps.\",\"_signerAddress\":\"signer address.\",\"_startTime\":\"The start time of the auction, in seconds since unix epoch.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"grantRole(bytes32,address)\":{\"params\":{\"account\":\"The account to register\",\"role\":\"The role to grant to the given account\"}},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"The account to check\",\"role\":\"The role to check\"}},\"initialize(address,string,string,string)\":{\"params\":{\"_baseURI\":\"Default base URI for all editions\",\"_name\":\"Name of artist\",\"_owner\":\"Owner of edition\",\"_symbol\":\"Symbol for the artist\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"ownersOfTokenIds(uint256[])\":{\"params\":{\"_tokenIds\":\"List of token ids\"}},\"revokeRole(bytes32,address)\":{\"params\":{\"account\":\"The account to revoke the role from\",\"role\":\"The role to revoke\"}},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"Sale price for the token\",\"_tokenId\":\"token id\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setEditionBaseURI(uint256,string)\":{\"params\":{\"_baseURI\":\"The new base URI\",\"_editionId\":\"The target edition's id\"}},\"setEndTime(uint256,uint32)\":{\"params\":{\"_editionId\":\"The id of the edition to set the end time for\",\"_endTime\":\"The end time to set (in seconds since unix epoch)\"}},\"setOwnerOverride(address)\":{\"params\":{\"_newOwner\":\"The new owner of the contract\"}},\"setPermissionedQuantity(uint256,uint32)\":{\"params\":{\"_editionId\":\"The edition id to set the permissioned quantity for\",\"_permissionedQuantity\":\"The new permissiond quantity\"}},\"setSignerAddress(uint256,address)\":{\"params\":{\"_editionId\":\"The edition id to set the signature address for\",\"_newSignerAddress\":\"The address that will be used to sign purchases\"}},\"setStartTime(uint256,uint32)\":{\"params\":{\"_editionId\":\"The id of the edition to set the start time for\",\"_startTime\":\"The start time to set (in seconds since unix epoch)\"}},\"supportsInterface(bytes4)\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-165\",\"params\":{\"_interfaceId\":\"The interface id to check\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenToEdition(uint256)\":{\"params\":{\"_tokenId\":\"token id\"}},\"tokenURI(uint256)\":{\"details\":\"Concatenate the baseURI and tokenId, to create URI.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"withdrawFunds(uint256)\":{\"params\":{\"_editionId\":\"The id of the edition to withdraw from\"}}},\"title\":\"Artist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyEdition(uint256,bytes,uint256)\":{\"notice\":\"Creates a new token for the given edition, and assigns it to the buyer\"},\"checkTicketNumbers(uint256,uint256[])\":{\"notice\":\"Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\"},\"constructor\":{\"notice\":\"Contract constructor\"},\"contractURI()\":{\"notice\":\"Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\"},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)\":{\"notice\":\"Creates a new edition.\"},\"editionCount()\":{\"notice\":\"returns the number of editions for this artist\"},\"grantRole(bytes32,address)\":{\"notice\":\"Register an account as an admin\"},\"hasRole(bytes32,address)\":{\"notice\":\"Check if an account has a role\"},\"initialize(address,string,string,string)\":{\"notice\":\"Initializes the contract\"},\"ownersOfTokenIds(uint256[])\":{\"notice\":\"Returns a list of owner addresses for a given list of token ids\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revoke a role from an account\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Get royalty information for token\"},\"setEditionBaseURI(uint256,string)\":{\"notice\":\"Sets the base URI for an edition\"},\"setEndTime(uint256,uint32)\":{\"notice\":\"Sets the end time for an edition\"},\"setOwnerOverride(address)\":{\"notice\":\"Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\"},\"setPermissionedQuantity(uint256,uint32)\":{\"notice\":\"Sets the permissioned quantity for an edition\"},\"setSignerAddress(uint256,address)\":{\"notice\":\"Sets the signature address of an edition\"},\"setStartTime(uint256,uint32)\":{\"notice\":\"Sets the start time for an edition\"},\"soundRecoveryAddress()\":{\"notice\":\"Returns the address (ie: gnosis safe) authorized to change ownership of the contract\"},\"supportsInterface(bytes4)\":{\"notice\":\"Informs other contracts which interfaces this contract supports\"},\"tokenToEdition(uint256)\":{\"notice\":\"Returns the edition id for a given token id\"},\"tokenURI(uint256)\":{\"notice\":\"Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\"},\"totalSupply()\":{\"notice\":\"The total number of tokens created by this contract\"},\"withdrawFunds(uint256)\":{\"notice\":\"Withdraws from the Artist to the fundingRecipient for an edition\"}},\"notice\":\"This contract is used to create & sell song NFTs for the artist who owns the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistV5.sol\":\"ArtistV5\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\"},\"contracts/ArtistV5.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.14;\\n\\n/*\\n               ^###############################################&5               \\n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \\n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \\n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \\n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \\n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \\n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \\n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \\n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \\n\\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\\nimport '@openzeppelin/contracts/utils/Strings.sol';\\nimport './auxillary/AccessManager.sol';\\n\\n/// @title Artist\\n/// @author SoundXYZ - @gigamesh & @vigneshka\\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\\ncontract ArtistV5 is ERC721Upgradeable, IERC2981Upgradeable, AccessManager {\\n    // ================================\\n    // STORAGE\\n    // ================================\\n\\n    // The permissioned typehash (used for checking signature validity)\\n    bytes32 public constant PERMISSIONED_SALE_TYPEHASH =\\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\\n    // Domain separator - used to prevent replay attacks using signatures from different networks\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    // The default baseURI for the contract\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter public atTokenId; // DEPRECATED IN V3\\n    CountersUpgradeable.Counter public atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public _tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\\n\\n    // ================================\\n    // TYPES\\n    // ================================\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n        // quantity of permissioned tokens\\n        uint32 permissionedQuantity;\\n        // whitelist signer address\\n        address signerAddress;\\n        // base uri for the edition\\n        string baseURI;\\n    }\\n\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSA for bytes32;\\n\\n    enum TimeType {\\n        START,\\n        END\\n    }\\n\\n    // ================================\\n    // EVENTS\\n    // ================================\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime,\\n        uint32 permissionedQuantity,\\n        address signerAddress\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer,\\n        uint256 ticketNumber\\n    );\\n\\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\\n\\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\\n\\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\\n\\n    event BaseURISet(uint256 editionId, string baseURI);\\n\\n    // ================================\\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Contract constructor\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n    }\\n\\n    /// @notice Initializes the contract\\n    /// @param _owner Owner of edition\\n    /// @param _name Name of artist\\n    /// @param _symbol Symbol for the artist\\n    /// @param _baseURI Default base URI for all editions\\n    function initialize(\\n        address _owner,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __AccessManager_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // baseURI override only for testnets\\n        if (block.chainid != 1) {\\n            baseURI = _baseURI;\\n        }\\n\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new edition.\\n    /// @param _fundingRecipient The account that will receive sales revenue.\\n    /// @param _price The price at which each token will be sold, in ETH.\\n    /// @param _quantity The maximum number of tokens that can be sold.\\n    /// @param _royaltyBPS The royalty amount in bps.\\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\\n    /// @param _signerAddress signer address.\\n    /// @param _editionId The expected edition ID\\n    /// @param _baseURI The base URI for the edition\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime,\\n        uint32 _permissionedQuantity,\\n        address _signerAddress,\\n        uint256 _editionId,\\n        string memory _baseURI\\n    ) external checkPermission(ADMIN_ROLE) {\\n        require(_quantity > 0, 'Must set quantity');\\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\\n        require(_endTime > _startTime, 'End time must be greater than start time');\\n        require(_editionId == atEditionId.current(), 'Wrong edition ID');\\n\\n        if (_permissionedQuantity > 0) {\\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\\n        }\\n\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime,\\n            permissionedQuantity: _permissionedQuantity,\\n            signerAddress: _signerAddress,\\n            baseURI: _baseURI\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime,\\n            _permissionedQuantity,\\n            _signerAddress\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\\n    /// @param _editionId The id of the edition to purchase\\n    /// @param _signature A signed message for authorizing permissioned purchases\\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\\n    function buyEdition(\\n        uint256 _editionId,\\n        bytes calldata _signature,\\n        uint256 _ticketNumber\\n    ) external payable {\\n        // Caching variables locally to reduce reads\\n        uint256 price = editions[_editionId].price;\\n        uint32 quantity = editions[_editionId].quantity;\\n        uint32 numSold = editions[_editionId].numSold;\\n        uint32 newNumSold = numSold + 1;\\n        uint32 startTime = editions[_editionId].startTime;\\n        uint32 endTime = editions[_editionId].endTime;\\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\\n\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(quantity > 0, 'Edition does not exist');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases after the end time\\n        require(endTime > block.timestamp, 'Auction has ended');\\n\\n        // If the public auction hasn't started...\\n        if (startTime > block.timestamp) {\\n            // Check that permissioned tokens are still available\\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\\n\\n            // Check that the signature is valid.\\n            require(\\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\\n                'Invalid signer'\\n            );\\n        } else {\\n            // Check that there are still tokens available to purchase.\\n            // Only need to check this for the public sale (after the start time)\\n            // so we can accomodate open editions\\n            require(numSold < quantity, 'This edition is already sold out.');\\n        }\\n\\n        // Create the token id by packing editionId in the top bits\\n        uint256 tokenId;\\n        unchecked {\\n            tokenId = (_editionId << 128) | newNumSold;\\n            // Increment the number of tokens sold for this edition.\\n            editions[_editionId].numSold = newNumSold;\\n        }\\n\\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\\n        if (editions[_editionId].fundingRecipient == owner()) {\\n            // Update the deposited total for the edition\\n            depositedForEdition[_editionId] += msg.value;\\n        } else {\\n            // Send funds to the funding recipient.\\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\\n        }\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, tokenId);\\n\\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\\n    }\\n\\n    /// @notice Withdraws from the Artist to the fundingRecipient for an edition\\n    /// @param _editionId The id of the edition to withdraw from\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    /// @notice Sets the start time for an edition\\n    /// @param _editionId The id of the edition to set the start time for\\n    /// @param _startTime The start time to set (in seconds since unix epoch)\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external checkPermission(ADMIN_ROLE) {\\n        editions[_editionId].startTime = _startTime;\\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\\n    }\\n\\n    /// @notice Sets the end time for an edition\\n    /// @param _editionId The id of the edition to set the end time for\\n    /// @param _endTime The end time to set (in seconds since unix epoch)\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external checkPermission(ADMIN_ROLE) {\\n        editions[_editionId].endTime = _endTime;\\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\\n    }\\n\\n    /// @notice Sets the signature address of an edition\\n    /// @param _editionId The edition id to set the signature address for\\n    /// @param _newSignerAddress The address that will be used to sign purchases\\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external checkPermission(ADMIN_ROLE) {\\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\\n\\n        editions[_editionId].signerAddress = _newSignerAddress;\\n        emit SignerAddressSet(_editionId, _newSignerAddress);\\n    }\\n\\n    /// @notice Sets the permissioned quantity for an edition\\n    /// @param _editionId The edition id to set the permissioned quantity for\\n    /// @param _permissionedQuantity The new permissiond quantity\\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity)\\n        external\\n        checkPermission(ADMIN_ROLE)\\n    {\\n        // Prevent setting to permissioned quantity when there is no signer address\\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\\n\\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\\n    }\\n\\n    /// @notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\\n    /// @param _newOwner The new owner of the contract\\n    function setOwnerOverride(address _newOwner) external {\\n        require(_msgSender() == soundRecoveryAddress() || _msgSender() == owner(), 'unauthorized');\\n\\n        super._transferOwnership(_newOwner);\\n    }\\n\\n    /// @notice Sets the base URI for an edition\\n    /// @param _editionId The target edition's id\\n    /// @param _baseURI The new base URI\\n    function setEditionBaseURI(uint256 _editionId, string calldata _baseURI) external checkPermission(ADMIN_ROLE) {\\n        require(\\n            editions[_editionId].quantity > 0 || editions[_editionId].permissionedQuantity > 0,\\n            'Nonexistent edition'\\n        );\\n\\n        editions[_editionId].baseURI = _baseURI;\\n\\n        emit BaseURISet(_editionId, _baseURI);\\n    }\\n\\n    // ================================\\n    // VIEW FUNCTIONS\\n    // ================================\\n\\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\\n    /// @dev Concatenate the baseURI and tokenId, to create URI.\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        uint256 editionId = tokenToEdition(_tokenId);\\n\\n        string memory editionBaseURI = editions[editionId].baseURI;\\n\\n        // If the edition has a baseURI, it means this edition is on permastorage\\n        // Using 3 as the length in case it gets accidentally set to empty space\\n        if (bytes(editionBaseURI).length > 3) {\\n            return string.concat(editionBaseURI, Strings.toString(_tokenId), '/metadata.json');\\n        }\\n\\n        return string.concat(_contractBaseURI(), Strings.toString(_tokenId));\\n    }\\n\\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\\n    function contractURI() public view returns (string memory) {\\n        return string.concat(_contractBaseURI(), 'storefront');\\n    }\\n\\n    /// @notice Get royalty information for token\\n    /// @param _tokenId token id\\n    /// @param _salePrice Sale price for the token\\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        uint256 editionId = tokenToEdition(_tokenId);\\n        Edition memory edition = editions[editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    /// @notice The total number of tokens created by this contract\\n    function totalSupply() external view returns (uint256) {\\n        uint256 total = 0;\\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\\n            total += editions[id].numSold;\\n        }\\n        return total;\\n    }\\n\\n    /// @notice Informs other contracts which interfaces this contract supports\\n    /// @param _interfaceId The interface id to check\\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    /// @notice returns the number of editions for this artist\\n    function editionCount() external view returns (uint256) {\\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\\n    }\\n\\n    /// @notice Returns the edition id for a given token id\\n    /// @param _tokenId token id\\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\\n        // Check the top bits to see if the edition id is there\\n        uint256 editionId = _tokenId >> 128;\\n\\n        // If edition ID is 0, then this edition was created before the V3 upgrade\\n        if (editionId == 0) {\\n            // get edition ID from storage\\n            return _tokenToEdition[_tokenId];\\n        }\\n\\n        return editionId;\\n    }\\n\\n    /// @notice Returns a list of owner addresses for a given list of token ids\\n    /// @param _tokenIds List of token ids\\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\\n        address[] memory owners = new address[](_tokenIds.length);\\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\\n            owners[i] = ownerOf(_tokenIds[i]);\\n        }\\n        return owners;\\n    }\\n\\n    /// @notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\\n    /// @param _editionId Edition id\\n    /// @param _ticketNumbers List of ticket numbers (indexes)\\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\\n        external\\n        view\\n        returns (bool[] memory)\\n    {\\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\\n\\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\\n            claimed[i] = storedBit == 1;\\n        }\\n\\n        return claimed;\\n    }\\n\\n    /// @notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract\\n    function soundRecoveryAddress() public view virtual returns (address) {\\n        if (block.chainid == 1) {\\n            return 0x858a92511485715Cfb754f397a7894b7724c7Abd;\\n        } else if (block.chainid == 4) {\\n            return 0xee35E946Dd73EF78d352454c3F915e2cA0a09d87;\\n        } else {\\n            revert('unsupported chain');\\n        }\\n    }\\n\\n    // ================================\\n    // PRIVATE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Sends funds to an address\\n    /// @param _recipient The address to send funds to\\n    /// @param _amount The amount of funds to send\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n\\n    /// @notice Gets signer address to validate permissioned purchase\\n    /// @param _signature signed message\\n    /// @param _editionId edition id\\n    /// @param _ticketNumber ticket number to check\\n    /// @return address of signer\\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\\n    function getSigner(\\n        bytes calldata _signature,\\n        uint256 _editionId,\\n        uint256 _ticketNumber\\n    ) private returns (address) {\\n        // Check that the ticket number is within the reserved range for the edition\\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\\n\\n        // gets the stored bit\\n        (\\n            uint256 storedBit,\\n            uint256 localGroup,\\n            uint256 localGroupOffset,\\n            uint256 ticketNumbersIdx\\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\\n\\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\\n\\n        // Flip the bit to 1 to indicate that the ticket has been claimed\\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\\n\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                '\\\\x19\\\\x01',\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\\n            )\\n        );\\n        return digest.recover(_signature);\\n    }\\n\\n    /// @notice Gets the bit variables associated with a ticket number\\n    /// @param _editionId edition id\\n    /// @param _ticketNumber ticket number\\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\\n        private\\n        view\\n        returns (\\n            uint256,\\n            uint256,\\n            uint256,\\n            uint256\\n        )\\n    {\\n        uint256 localGroup; // the bit array for this ticket number\\n        uint256 ticketNumbersIdx; // the index of the the local group\\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\\n        unchecked {\\n            ticketNumbersIdx = _ticketNumber / 256;\\n            localGroupOffset = _ticketNumber % 256;\\n        }\\n\\n        // cache the local group for efficiency\\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\\n\\n        // gets the stored bit\\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\\n\\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\\n    }\\n\\n    function _contractBaseURI() private view returns (string memory) {\\n        string memory contractAddress = Strings.toHexString(uint256(uint160(address(this))), 20);\\n        if (block.chainid == 1) {\\n            return string.concat('https://metadata.sound.xyz/v1/', contractAddress, '/');\\n        } else {\\n            return string.concat(baseURI, contractAddress, '/');\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd98ca0495d5a3d38f3711ee1dec5021b3837e4edc6b00331e6408dd5181e6ec4\",\"license\":\"GPL-3.0-or-later\"},\"contracts/auxillary/AccessManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.14;\\n\\nimport '@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\n\\n/// @title AccessManager\\n/// @author OpenZeppelin & Sound.xyz (@gigma)\\n/// @notice Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.\\n/// @dev Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)\\ncontract AccessManager is Initializable, ContextUpgradeable {\\n    // The admin role identifier\\n    bytes32 public constant ADMIN_ROLE = keccak256('ADMIN');\\n\\n    address private _owner;\\n\\n    // Track registered admins\\n    mapping(bytes32 => mapping(address => bool)) private _roles;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    // =====================\\n    // Ownership functions\\n    // =====================\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __AccessManager_init() internal onlyInitializing {\\n        __Context_init_unchained();\\n        __AccessManager_init_unchained();\\n    }\\n\\n    function __AccessManager_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), 'Ownable: caller is not the owner');\\n        _;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        require(newOwner != address(0), 'Ownable: new owner is the zero address');\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    // =====================\\n    // Role functions\\n    // =====================\\n\\n    /// @notice Register an account as an admin\\n    /// @param role The role to grant to the given account\\n    /// @param account The account to register\\n    function grantRole(bytes32 role, address account) external onlyOwner {\\n        if (!hasRole(role, account)) {\\n            _roles[role][account] = true;\\n            emit RoleGranted(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Revoke a role from an account\\n    /// @param role The role to revoke\\n    /// @param account The account to revoke the role from\\n    function revokeRole(bytes32 role, address account) external onlyOwner {\\n        if (hasRole(role, account)) {\\n            _roles[role][account] = false;\\n            emit RoleRevoked(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Check if an account has a role\\n    /// @param role The role to check\\n    /// @param account The account to check\\n    function hasRole(bytes32 role, address account) public view returns (bool) {\\n        return _roles[role][account];\\n    }\\n\\n    /// @notice Check if the given address is the owner or has the given role.\\n    /// @param role The role to check for.\\n    modifier checkPermission(bytes32 role) {\\n        require(_msgSender() == owner() || hasRole(role, _msgSender()), 'unauthorized');\\n        _;\\n    }\\n\\n    uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0xc5cf31ec516a0981fd88b34b36d42a24e3678ae49f8fb5c81701cc6d0e28a316\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              },
              {
                "astId": 11701,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 11707,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_roles",
                "offset": 0,
                "slot": "152",
                "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 11927,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "__gap",
                "offset": 0,
                "slot": "153",
                "type": "t_array(t_uint256)48_storage"
              },
              {
                "astId": 9067,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "baseURI",
                "offset": 0,
                "slot": "201",
                "type": "t_string_storage"
              },
              {
                "astId": 9070,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "atTokenId",
                "offset": 0,
                "slot": "202",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 9073,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "atEditionId",
                "offset": 0,
                "slot": "203",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 9078,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "editions",
                "offset": 0,
                "slot": "204",
                "type": "t_mapping(t_uint256,t_struct(Edition)9117_storage)"
              },
              {
                "astId": 9082,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "_tokenToEdition",
                "offset": 0,
                "slot": "205",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 9086,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "depositedForEdition",
                "offset": 0,
                "slot": "206",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 9090,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "withdrawnForEdition",
                "offset": 0,
                "slot": "207",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 9096,
                "contract": "contracts/ArtistV5.sol:ArtistV5",
                "label": "ticketNumbers",
                "offset": 0,
                "slot": "208",
                "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_address_payable": {
                "encoding": "inplace",
                "label": "address payable",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)48_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[48]",
                "numberOfBytes": "1536"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(uint256 => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_uint256)"
              },
              "t_mapping(t_uint256,t_struct(Edition)9117_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ArtistV5.Edition)",
                "numberOfBytes": "32",
                "value": "t_struct(Edition)9117_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(Edition)9117_storage": {
                "encoding": "inplace",
                "label": "struct ArtistV5.Edition",
                "members": [
                  {
                    "astId": 9098,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "fundingRecipient",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address_payable"
                  },
                  {
                    "astId": 9100,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "price",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 9102,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "numSold",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 9104,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "quantity",
                    "offset": 4,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 9106,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "royaltyBPS",
                    "offset": 8,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 9108,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "startTime",
                    "offset": 12,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 9110,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "endTime",
                    "offset": 16,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 9112,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "permissionedQuantity",
                    "offset": 20,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 9114,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "signerAddress",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_address"
                  },
                  {
                    "astId": 9116,
                    "contract": "contracts/ArtistV5.sol:ArtistV5",
                    "label": "baseURI",
                    "offset": 0,
                    "slot": "4",
                    "type": "t_string_storage"
                  }
                ],
                "numberOfBytes": "160"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "buyEdition(uint256,bytes,uint256)": {
                "notice": "Creates a new token for the given edition, and assigns it to the buyer"
              },
              "checkTicketNumbers(uint256,uint256[])": {
                "notice": "Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)"
              },
              "constructor": {
                "notice": "Contract constructor"
              },
              "contractURI()": {
                "notice": "Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront"
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": {
                "notice": "Creates a new edition."
              },
              "editionCount()": {
                "notice": "returns the number of editions for this artist"
              },
              "grantRole(bytes32,address)": {
                "notice": "Register an account as an admin"
              },
              "hasRole(bytes32,address)": {
                "notice": "Check if an account has a role"
              },
              "initialize(address,string,string,string)": {
                "notice": "Initializes the contract"
              },
              "ownersOfTokenIds(uint256[])": {
                "notice": "Returns a list of owner addresses for a given list of token ids"
              },
              "revokeRole(bytes32,address)": {
                "notice": "Revoke a role from an account"
              },
              "royaltyInfo(uint256,uint256)": {
                "notice": "Get royalty information for token"
              },
              "setEditionBaseURI(uint256,string)": {
                "notice": "Sets the base URI for an edition"
              },
              "setEndTime(uint256,uint32)": {
                "notice": "Sets the end time for an edition"
              },
              "setOwnerOverride(address)": {
                "notice": "Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)"
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "notice": "Sets the permissioned quantity for an edition"
              },
              "setSignerAddress(uint256,address)": {
                "notice": "Sets the signature address of an edition"
              },
              "setStartTime(uint256,uint32)": {
                "notice": "Sets the start time for an edition"
              },
              "soundRecoveryAddress()": {
                "notice": "Returns the address (ie: gnosis safe) authorized to change ownership of the contract"
              },
              "supportsInterface(bytes4)": {
                "notice": "Informs other contracts which interfaces this contract supports"
              },
              "tokenToEdition(uint256)": {
                "notice": "Returns the edition id for a given token id"
              },
              "tokenURI(uint256)": {
                "notice": "Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json"
              },
              "totalSupply()": {
                "notice": "The total number of tokens created by this contract"
              },
              "withdrawFunds(uint256)": {
                "notice": "Withdraws from the Artist to the fundingRecipient for an edition"
              }
            },
            "notice": "This contract is used to create & sell song NFTs for the artist who owns the contract.",
            "version": 1
          }
        }
      },
      "contracts/ArtistV6.sol": {
        "ArtistV6": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "enum ArtistV6.TimeType",
                  "name": "timeType",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint32",
                  "name": "newTime",
                  "type": "uint32"
                }
              ],
              "name": "AuctionTimeSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "baseURI",
                  "type": "string"
                }
              ],
              "name": "BaseURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "EditionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "EditionPurchased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "PermissionedQuantitySet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleGranted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleRevoked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "SignerAddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADMIN_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMISSIONED_SALE_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "_tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "atEditionId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "atTokenId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "_ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "buyEdition",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ticketNumbers",
                  "type": "uint256[]"
                }
              ],
              "name": "checkTicketNumbers",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "",
                  "type": "bool[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "createEdition",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "depositedForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "editionCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "editions",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "baseURI",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "grantRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "hasRole",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "ownersOfTokenIds",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "revokeRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "setEditionBaseURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "setEndTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "setOwnerOverride",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "setPermissionedQuantity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_newSignerAddress",
                  "type": "address"
                }
              ],
              "name": "setSignerAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                }
              ],
              "name": "setStartTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "soundRecoveryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "withdrawFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdrawnForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "SoundXYZ - @gigamesh & @vigneshka",
            "details": "Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "buyEdition(uint256,bytes,uint256)": {
                "params": {
                  "_editionId": "The id of the edition to purchase",
                  "_signature": "A signed message for authorizing permissioned purchases",
                  "_ticketNumber": "Ticket number required for validating this buyer hasn't already bought."
                }
              },
              "checkTicketNumbers(uint256,uint256[])": {
                "params": {
                  "_editionId": "Edition id",
                  "_ticketNumbers": "List of ticket numbers (indexes)"
                }
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": {
                "params": {
                  "_baseURI": "The base URI for the edition",
                  "_editionId": "The expected edition ID",
                  "_endTime": "The end time of the auction, in seconds since unix epoch.",
                  "_fundingRecipient": "The account that will receive sales revenue.",
                  "_permissionedQuantity": "The quantity of tokens that require a signature to buy.",
                  "_price": "The price at which each token will be sold, in ETH.",
                  "_quantity": "The maximum number of tokens that can be sold.",
                  "_royaltyBPS": "The royalty amount in bps.",
                  "_signerAddress": "signer address.",
                  "_startTime": "The start time of the auction, in seconds since unix epoch."
                }
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "grantRole(bytes32,address)": {
                "params": {
                  "account": "The account to register",
                  "role": "The role to grant to the given account"
                }
              },
              "hasRole(bytes32,address)": {
                "params": {
                  "account": "The account to check",
                  "role": "The role to check"
                }
              },
              "initialize(address,string,string,string)": {
                "params": {
                  "_baseURI": "Default base URI for all editions",
                  "_name": "Name of artist",
                  "_owner": "Owner of edition",
                  "_symbol": "Symbol for the artist"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "ownersOfTokenIds(uint256[])": {
                "params": {
                  "_tokenIds": "List of token ids"
                }
              },
              "revokeRole(bytes32,address)": {
                "params": {
                  "account": "The account to revoke the role from",
                  "role": "The role to revoke"
                }
              },
              "royaltyInfo(uint256,uint256)": {
                "params": {
                  "_salePrice": "Sale price for the token",
                  "_tokenId": "token id"
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "setEditionBaseURI(uint256,string)": {
                "params": {
                  "_baseURI": "The new base URI",
                  "_editionId": "The target edition's id"
                }
              },
              "setEndTime(uint256,uint32)": {
                "params": {
                  "_editionId": "The id of the edition to set the end time for",
                  "_endTime": "The end time to set (in seconds since unix epoch)"
                }
              },
              "setOwnerOverride(address)": {
                "params": {
                  "_newOwner": "The new owner of the contract"
                }
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "params": {
                  "_editionId": "The edition id to set the permissioned quantity for",
                  "_permissionedQuantity": "The new permissiond quantity"
                }
              },
              "setSignerAddress(uint256,address)": {
                "params": {
                  "_editionId": "The edition id to set the signature address for",
                  "_newSignerAddress": "The address that will be used to sign purchases"
                }
              },
              "setStartTime(uint256,uint32)": {
                "params": {
                  "_editionId": "The id of the edition to set the start time for",
                  "_startTime": "The start time to set (in seconds since unix epoch)"
                }
              },
              "supportsInterface(bytes4)": {
                "details": "https://eips.ethereum.org/EIPS/eip-165",
                "params": {
                  "_interfaceId": "The interface id to check"
                }
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenToEdition(uint256)": {
                "params": {
                  "_tokenId": "token id"
                }
              },
              "tokenURI(uint256)": {
                "details": "Concatenate the baseURI and tokenId, to create URI."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawFunds(uint256)": {
                "params": {
                  "_editionId": "The id of the edition to withdraw from"
                }
              }
            },
            "title": "Artist",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_10525": {
                  "entryPoint": null,
                  "id": 10525,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:264:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "143:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "153:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "165:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "176:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "161:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "161:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "153:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "195:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "206:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "188:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "188:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "188:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "233:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "244:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "229:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "229:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "249:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "222:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "222:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "222:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "115:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "123:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "134:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14:248:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604080517fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e34656020820152469181019190915260600160408051601f1981840301815291905280516020909101206080526080516143e3610083600039600081816104a80152612d8001526143e36000f3fe6080604052600436106102725760003560e01c8063602787ed1161014f578063a22cb465116100c1578063e1a3d5731161007a578063e1a3d573146107e9578063e8a3d48514610816578063e985e9c51461082b578063f2fde38b14610874578063f71e54fb14610894578063fbab9e04146108a757600080fd5b8063a22cb4651461071c578063b88d4fde1461073c578063bb314ca11461075c578063c87b56dd1461077c578063d3bb05281461079c578063d547741f146107c957600080fd5b8063796726921161011357806379672692146106725780638da5cb5b146106925780638e116aea146106b057806391d14854146106d057806395d89b41146106f05780639725d92e1461070557600080fd5b8063602787ed146105d05780636352211e146105f057806370a082311461061057806375a8f08f1461063057806375b238fc1461065057600080fd5b80632a55205a116101e85780634bf44026116101ac5780634bf44026146105015780635076a64d1461051657806352e25bf21461054357806352f5c2e41461056357806356dee996146105905780635f1e6f6d146105b057600080fd5b80632a55205a146104375780632f2ff15d146104765780633644e515146104965780633ef2dbc2146104ca57806342842e0e146104e157600080fd5b80630bcca8311161023a5780630bcca83114610355578063155dd5ee1461036a57806318160ddd1461038a57806323b872dd146103ad57806327399d36146103cd578063279c806e1461040157600080fd5b806301ffc9a714610277578063065d5b85146102ac57806306fdde03146102d9578063081812fc146102fb578063095ea7b314610333575b600080fd5b34801561028357600080fd5b5061029761029236600461371f565b6108c7565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004613780565b6108f2565b6040516102a391906137cb565b3480156102e557600080fd5b506102ee6109de565b6040516102a39190613869565b34801561030757600080fd5b5061031b61031636600461387c565b610a70565b6040516001600160a01b0390911681526020016102a3565b34801561033f57600080fd5b5061035361034e3660046138aa565b610a97565b005b34801561036157600080fd5b5061031b610bb1565b34801561037657600080fd5b5061035361038536600461387c565b610c31565b34801561039657600080fd5b5061039f610c91565b6040519081526020016102a3565b3480156103b957600080fd5b506103536103c83660046138d6565b610cdd565b3480156103d957600080fd5b5061039f7fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e881565b34801561040d57600080fd5b5061042161041c36600461387c565b610d0e565b6040516102a39a99989796959493929190613917565b34801561044357600080fd5b50610457610452366004613992565b610e0e565b604080516001600160a01b0390931683526020830191909152016102a3565b34801561048257600080fd5b506103536104913660046139b4565b610fb0565b3480156104a257600080fd5b5061039f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d657600080fd5b5060ca5461039f9081565b3480156104ed57600080fd5b506103536104fc3660046138d6565b611060565b34801561050d57600080fd5b5061039f61107b565b34801561052257600080fd5b5061039f61053136600461387c565b60cd6020526000908152604090205481565b34801561054f57600080fd5b5061035361055e3660046139fd565b611097565b34801561056f57600080fd5b5061058361057e366004613a29565b6111cf565b6040516102a39190613a6a565b34801561059c57600080fd5b506103536105ab3660046139b4565b611287565b3480156105bc57600080fd5b506103536105cb366004613b56565b6113a5565b3480156105dc57600080fd5b5061039f6105eb36600461387c565b6114f8565b3480156105fc57600080fd5b5061031b61060b36600461387c565b61151a565b34801561061c57600080fd5b5061039f61062b366004613bf0565b61157a565b34801561063c57600080fd5b5061035361064b366004613bf0565b611600565b34801561065c57600080fd5b5061039f60008051602061438e83398151915281565b34801561067e57600080fd5b5061035361068d366004613c4e565b611659565b34801561069e57600080fd5b506097546001600160a01b031661031b565b3480156106bc57600080fd5b506103536106cb366004613c8c565b6117a4565b3480156106dc57600080fd5b506102976106eb3660046139b4565b611c06565b3480156106fc57600080fd5b506102ee611c31565b34801561071157600080fd5b5060cb5461039f9081565b34801561072857600080fd5b50610353610737366004613d56565b611c40565b34801561074857600080fd5b50610353610757366004613d89565b611c4b565b34801561076857600080fd5b506103536107773660046139fd565b611c83565b34801561078857600080fd5b506102ee61079736600461387c565b611d4b565b3480156107a857600080fd5b5061039f6107b736600461387c565b60cf6020526000908152604090205481565b3480156107d557600080fd5b506103536107e43660046139b4565b611ed5565b3480156107f557600080fd5b5061039f61080436600461387c565b60ce6020526000908152604090205481565b34801561082257600080fd5b506102ee611f66565b34801561083757600080fd5b50610297610846366004613dfc565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561088057600080fd5b5061035361088f366004613bf0565b611f94565b6103536108a2366004613e2a565b612023565b3480156108b357600080fd5b506103536108c23660046139fd565b6123f6565b600063152a902d60e11b6001600160e01b0319831614806108ec57506108ec826124bd565b92915050565b60606000826001600160401b0381111561090e5761090e613aab565b604051908082528060200260200182016040528015610937578160200160208202803683370190505b50905060005b838110156109d55760006109978787878581811061095d5761095d613e7c565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106109b2576109b2613e7c565b9115156020928302919091019091015250806109cd81613ea8565b91505061093d565b50949350505050565b6060606580546109ed90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1990613ec1565b8015610a665780601f10610a3b57610100808354040283529160200191610a66565b820191906000526020600020905b815481529060010190602001808311610a4957829003601f168201915b5050505050905090565b6000610a7b8261250d565b506000908152606960205260409020546001600160a01b031690565b6000610aa28261151a565b9050806001600160a01b0316836001600160a01b031603610b145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b305750610b308133610846565b610ba25760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610b0b565b610bac838361256c565b505050565b600046600103610bd4575073858a92511485715cfb754f397a7894b7724c7abd90565b46600403610bf5575073ee35e946dd73ef78d352454c3f915e2ca0a09d8790565b60405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b21031b430b4b760791b6044820152606401610b0b565b600081815260cf602090815260408083205460ce909252822054610c559190613ef5565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610c8d906001600160a01b0316826125da565b5050565b60008060015b60cb54811015610cd757600081815260cc6020526040902060020154610cc39063ffffffff1683613f0c565b915080610ccf81613ea8565b915050610c97565b50919050565b610ce733826126e7565b610d035760405162461bcd60e51b8152600401610b0b90613f24565b610bac838383612766565b60cc60205260009081526040902080546001820154600283015460038401546004850180546001600160a01b0395861696949563ffffffff808616966401000000008704821696600160401b8104831696600160601b8204841696600160801b8304851696600160a01b90930490941694169290610d8b90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db790613ec1565b8015610e045780601f10610dd957610100808354040283529160200191610e04565b820191906000526020600020905b815481529060010190602001808311610de757829003601f168201915b505050505090508a565b6000806000610e1c856114f8565b600081815260cc6020908152604080832081516101408101835281546001600160a01b039081168252600183015494820194909452600282015463ffffffff80821694830194909452640100000000810484166060830152600160401b810484166080830152600160601b8104841660a0830152600160801b8104841660c0830152600160a01b900490921660e0830152600381015490921661010082015260048201805494955092939092610120840191610ed790613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613ec1565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050509190925250508151919250506001600160a01b0316610f7a5751925060009150610fa99050565b6080810151815163ffffffff90911690612710610f978389613f72565b610fa19190613fa7565b945094505050505b9250929050565b6097546001600160a01b03163314610fda5760405162461bcd60e51b8152600401610b0b90613fbb565b610fe48282611c06565b610c8d5760008281526098602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561101c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610bac83838360405180602001604052806000815250611c4b565b6000600161108860cb5490565b6110929190613ef5565b905090565b60008051602061438e8339815191526110b86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806110dc57506110dc8133611c06565b6110f85760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc60205260409020600301546001600160a01b031661115f5760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610b0b565b600083815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8716908102919091179091558251868152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a1505050565b60606000826001600160401b038111156111eb576111eb613aab565b604051908082528060200260200182016040528015611214578160200160208202803683370190505b50905060005b8381101561127f5761124385858381811061123757611237613e7c565b9050602002013561151a565b82828151811061125557611255613e7c565b6001600160a01b03909216602092830291909101909101528061127781613ea8565b91505061121a565b509392505050565b60008051602061438e8339815191526112a86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806112cc57506112cc8133611c06565b6112e85760405162461bcd60e51b8152600401610b0b90613ff0565b6001600160a01b03821661133e5760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b600083815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03861690811790915591518581527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a2505050565b600054610100900460ff16158080156113c55750600054600160ff909116105b806113df5750303b1580156113df575060005460ff166001145b6114425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b0b565b6000805460ff191660011790558015611465576000805461ff0019166101001790555b61146f8484612902565b611477612933565b61148085611f94565b4660011461149d57815161149b9060c9906020850190613600565b505b6114ab60cb80546001019055565b80156114f1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000608082901c8082036108ec575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806108ec5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b60006001600160a01b0382166115e45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b0b565b506001600160a01b031660009081526068602052604090205490565b611608610bb1565b6001600160a01b0316336001600160a01b0316148061163157506097546001600160a01b031633145b61164d5760405162461bcd60e51b8152600401610b0b90613ff0565b6116568161296c565b50565b60008051602061438e83398151915261167a6097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061169e575061169e8133611c06565b6116ba5760405162461bcd60e51b8152600401610b0b90613ff0565b600084815260cc6020526040902060020154640100000000900463ffffffff161515806117045750600084815260cc6020526040902060020154600160a01b900463ffffffff1615155b6117465760405162461bcd60e51b81526020600482015260136024820152722737b732bc34b9ba32b73a1032b234ba34b7b760691b6044820152606401610b0b565b600084815260cc60205260409020611762906004018484613680565b507f1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd41258984848460405161179693929190614016565b60405180910390a150505050565b60008051602061438e8339815191526117c56097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806117e957506117e98133611c06565b6118055760405162461bcd60e51b8152600401610b0b90613ff0565b60008963ffffffff161161184f5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610b0b565b6001600160a01b038b166118a55760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610b0b565b8663ffffffff168663ffffffff16116119115760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610b0b565b60cb5483146119555760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c819591a5d1a5bdb88125160821b6044820152606401610b0b565b63ffffffff8516156119b7576001600160a01b0384166119b75760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b6040518061014001604052808c6001600160a01b031681526020018b8152602001600063ffffffff1681526020018a63ffffffff1681526020018963ffffffff1681526020018863ffffffff1681526020018763ffffffff1681526020018663ffffffff168152602001856001600160a01b031681526020018381525060cc6000611a4160cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355858501516001840155928501516002830180546060880151608089015160a08a015160c08b015160e08c015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b939091169290920291909117905561010085015160038301805490941691161790915561012083015180519192611b6b92600485019290910190613600565b505060cb54604080516001600160a01b038f81168252602082018f905263ffffffff8e8116838501528d811660608401528c811660808401528b811660a08401528a1660c0830152881660e082015290519192507fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f391908190036101000190a2611bf960cb80546001019055565b5050505050505050505050565b60009182526098602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060606680546109ed90613ec1565b610c8d3383836129be565b611c5533836126e7565b611c715760405162461bcd60e51b8152600401610b0b90613f24565b611c7d84848484612a8c565b50505050565b60008051602061438e833981519152611ca46097546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611cc85750611cc88133611c06565b611ce45760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff86169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90611398906001908790614062565b6000818152606760205260409020546060906001600160a01b0316611dca5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b0b565b6000611dd5836114f8565b600081815260cc6020526040812060040180549293509091611df690613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2290613ec1565b8015611e6f5780601f10611e4457610100808354040283529160200191611e6f565b820191906000526020600020905b815481529060010190602001808311611e5257829003601f168201915b50505050509050600381511115611eb35780611e8a85612abf565b604051602001611e9b9291906140aa565b60405160208183030381529060405292505050919050565b611ebb612bbf565b611ec485612abf565b604051602001611e9b9291906140f2565b6097546001600160a01b03163314611eff5760405162461bcd60e51b8152600401610b0b90613fbb565b611f098282611c06565b15610c8d5760008281526098602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060611f70612bbf565b604051602001611f809190614121565b604051602081830303815290604052905090565b6097546001600160a01b03163314611fbe5760405162461bcd60e51b8152600401610b0b90613fbb565b6001600160a01b03811661164d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0b565b600084815260cc60205260408120600180820154600290920154919263ffffffff6401000000008404811693169161205c90839061414f565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166120dc5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610b0b565b8634101561213e5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610b0b565b428263ffffffff16116121875760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610b0b565b428363ffffffff161115612289578063ffffffff168563ffffffff16106122165760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610b0b565b60008b815260cc60205260409020600301546001600160a01b031661223d8b8b8e8c612c16565b6001600160a01b0316146122845760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610b0b565b6122ee565b8563ffffffff168563ffffffff16106122ee5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610b0b565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b1761232d6097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b039182169116036123775760008c815260ce60205260408120805434929061236c908490613f0c565b909155506123999050565b60008c815260cc6020526040902054612399906001600160a01b0316346125da565b6123a33382612e16565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b60008051602061438e8339815191526124176097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061243b575061243b8133611c06565b6124575760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff871690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c9161139891908790614062565b60006001600160e01b031982166380ac58cd60e01b14806124ee57506001600160e01b03198216635b5e139f60e01b145b806108ec57506301ffc9a760e01b6001600160e01b03198316146108ec565b6000818152606760205260409020546001600160a01b03166116565760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125a18261151a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b8047101561262a5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610b0b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612677576040519150601f19603f3d011682016040523d82523d6000602084013e61267c565b606091505b5050905080610bac5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610b0b565b6000806126f38361151a565b9050806001600160a01b0316846001600160a01b0316148061273a57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061275e5750836001600160a01b031661275384610a70565b6001600160a01b0316145b949350505050565b826001600160a01b03166127798261151a565b6001600160a01b0316146127dd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b0b565b6001600160a01b03821661283f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0b565b61284a60008261256c565b6001600160a01b0383166000908152606860205260408120805460019290612873908490613ef5565b90915550506001600160a01b03821660009081526068602052604081208054600192906128a1908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff166129295760405162461bcd60e51b8152600401610b0b9061416e565b610c8d8282612f58565b600054610100900460ff1661295a5760405162461bcd60e51b8152600401610b0b9061416e565b612962612fa6565b61296a612fcd565b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603612a1f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b0b565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a97848484612766565b612aa384848484612ffd565b611c7d5760405162461bcd60e51b8152600401610b0b906141b9565b606081600003612ae65750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612b105780612afa81613ea8565b9150612b099050600a83613fa7565b9150612aea565b6000816001600160401b03811115612b2a57612b2a613aab565b6040519080825280601f01601f191660200182016040528015612b54576020820181803683370190505b5090505b841561275e57612b69600183613ef5565b9150612b76600a8661420b565b612b81906030613f0c565b60f81b818381518110612b9657612b96613e7c565b60200101906001600160f81b031916908160001a905350612bb8600a86613fa7565b9450612b58565b60606000612bce3060146130fb565b905046600103612bfe5780604051602001612be9919061421f565b60405160208183030381529060405291505090565b60c981604051602001612be992919061426f565b5090565b60006401000000008210612c6c5760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d6178000000000000006044820152606401610b0b565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c600116928315612cf95760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b6064820152608401610b0b565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e283015261010282015261012201604051602081830303815290604052805190602001209050612e088a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859392505061329d9050565b9a9950505050505050505050565b6001600160a01b038216612e6c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b0b565b6000818152606760205260409020546001600160a01b031615612ed15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b0b565b6001600160a01b0382166000908152606860205260408120805460019290612efa908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16612f7f5760405162461bcd60e51b8152600401610b0b9061416e565b8151612f92906065906020850190613600565b508051610bac906066906020840190613600565b600054610100900460ff1661296a5760405162461bcd60e51b8152600401610b0b9061416e565b600054610100900460ff16612ff45760405162461bcd60e51b8152600401610b0b9061416e565b61296a3361296c565b60006001600160a01b0384163b156130f357604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061304190339089908890889060040161431c565b6020604051808303816000875af192505050801561307c575060408051601f3d908101601f1916820190925261307991810190614359565b60015b6130d9573d8080156130aa576040519150601f19603f3d011682016040523d82523d6000602084013e6130af565b606091505b5080516000036130d15760405162461bcd60e51b8152600401610b0b906141b9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061275e565b50600161275e565b6060600061310a836002613f72565b613115906002613f0c565b6001600160401b0381111561312c5761312c613aab565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b509050600360fc1b8160008151811061317157613171613e7c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131a0576131a0613e7c565b60200101906001600160f81b031916908160001a90535060006131c4846002613f72565b6131cf906001613f0c565b90505b6001811115613247576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061320357613203613e7c565b1a60f81b82828151811061321957613219613e7c565b60200101906001600160f81b031916908160001a90535060049490941c9361324081614376565b90506131d2565b5083156132965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b0b565b9392505050565b60008060006132ac85856132b9565b9150915061127f81613324565b60008082516041036132ef5760208301516040840151606085015160001a6132e3878285856134da565b94509450505050610fa9565b8251604003613318576020830151604084015161330d8683836135c7565b935093505050610fa9565b50600090506002610fa9565b60008160048111156133385761333861404c565b036133405750565b60018160048111156133545761335461404c565b036133a15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b0b565b60028160048111156133b5576133b561404c565b036134025760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b0b565b60038160048111156134165761341661404c565b0361346e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b0b565b60048160048111156134825761348261404c565b036116565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b0b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561351157506000905060036135be565b8460ff16601b1415801561352957508460ff16601c14155b1561353a57506000905060046135be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561358e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166135b7576000600192509250506135be565b9150600090505b94509492505050565b6000806001600160ff1b038316816135e460ff86901c601b613f0c565b90506135f2878288856134da565b935093505050935093915050565b82805461360c90613ec1565b90600052602060002090601f01602090048101928261362e5760008555613674565b82601f1061364757805160ff1916838001178555613674565b82800160010185558215613674579182015b82811115613674578251825591602001919060010190613659565b50612c129291506136f4565b82805461368c90613ec1565b90600052602060002090601f0160209004810192826136ae5760008555613674565b82601f106136c75782800160ff19823516178555613674565b82800160010185558215613674579182015b828111156136745782358255916020019190600101906136d9565b5b80821115612c1257600081556001016136f5565b6001600160e01b03198116811461165657600080fd5b60006020828403121561373157600080fd5b813561329681613709565b60008083601f84011261374e57600080fd5b5081356001600160401b0381111561376557600080fd5b6020830191508360208260051b8501011115610fa957600080fd5b60008060006040848603121561379557600080fd5b8335925060208401356001600160401b038111156137b257600080fd5b6137be8682870161373c565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783511515835292840192918401916001016137e7565b50909695505050505050565b60005b8381101561382c578181015183820152602001613814565b83811115611c7d5750506000910152565b60008151808452613855816020860160208601613811565b601f01601f19169290920160200192915050565b602081526000613296602083018461383d565b60006020828403121561388e57600080fd5b5035919050565b6001600160a01b038116811461165657600080fd5b600080604083850312156138bd57600080fd5b82356138c881613895565b946020939093013593505050565b6000806000606084860312156138eb57600080fd5b83356138f681613895565b9250602084013561390681613895565b929592945050506040919091013590565b6001600160a01b038b81168252602082018b905263ffffffff8a811660408401528981166060840152888116608084015287811660a084015286811660c0840152851660e0830152831661010082015261014061012082018190526000906139818382018561383d565b9d9c50505050505050505050505050565b600080604083850312156139a557600080fd5b50508035926020909101359150565b600080604083850312156139c757600080fd5b8235915060208301356139d981613895565b809150509250929050565b803563ffffffff811681146139f857600080fd5b919050565b60008060408385031215613a1057600080fd5b82359150613a20602084016139e4565b90509250929050565b60008060208385031215613a3c57600080fd5b82356001600160401b03811115613a5257600080fd5b613a5e8582860161373c565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783516001600160a01b031683529284019291840191600101613a86565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115613adb57613adb613aab565b604051601f8501601f19908116603f01168101908282118183101715613b0357613b03613aab565b81604052809350858152868686011115613b1c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613b4757600080fd5b61329683833560208501613ac1565b60008060008060808587031215613b6c57600080fd5b8435613b7781613895565b935060208501356001600160401b0380821115613b9357600080fd5b613b9f88838901613b36565b94506040870135915080821115613bb557600080fd5b613bc188838901613b36565b93506060870135915080821115613bd757600080fd5b50613be487828801613b36565b91505092959194509250565b600060208284031215613c0257600080fd5b813561329681613895565b60008083601f840112613c1f57600080fd5b5081356001600160401b03811115613c3657600080fd5b602083019150836020828501011115610fa957600080fd5b600080600060408486031215613c6357600080fd5b8335925060208401356001600160401b03811115613c8057600080fd5b6137be86828701613c0d565b6000806000806000806000806000806101408b8d031215613cac57600080fd5b8a35613cb781613895565b995060208b01359850613ccc60408c016139e4565b9750613cda60608c016139e4565b9650613ce860808c016139e4565b9550613cf660a08c016139e4565b9450613d0460c08c016139e4565b935060e08b0135613d1481613895565b92506101008b013591506101208b01356001600160401b03811115613d3857600080fd5b613d448d828e01613b36565b9150509295989b9194979a5092959850565b60008060408385031215613d6957600080fd5b8235613d7481613895565b9150602083013580151581146139d957600080fd5b60008060008060808587031215613d9f57600080fd5b8435613daa81613895565b93506020850135613dba81613895565b92506040850135915060608501356001600160401b03811115613ddc57600080fd5b8501601f81018713613ded57600080fd5b613be487823560208401613ac1565b60008060408385031215613e0f57600080fd5b8235613e1a81613895565b915060208301356139d981613895565b60008060008060608587031215613e4057600080fd5b8435935060208501356001600160401b03811115613e5d57600080fd5b613e6987828801613c0d565b9598909750949560400135949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613eba57613eba613e92565b5060010190565b600181811c90821680613ed557607f821691505b602082108103610cd757634e487b7160e01b600052602260045260246000fd5b600082821015613f0757613f07613e92565b500390565b60008219821115613f1f57613f1f613e92565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615613f8c57613f8c613e92565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613fb657613fb6613f91565b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061408457634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600081516140a0818560208601613811565b9290920192915050565b600083516140bc818460208801613811565b8351908301906140d0818360208801613811565b6d17b6b2ba30b230ba30973539b7b760911b9101908152600e01949350505050565b60008351614104818460208801613811565b835190830190614118818360208801613811565b01949350505050565b60008251614133818460208701613811565b691cdd1bdc99599c9bdb9d60b21b920191825250600a01919050565b600063ffffffff80831681851680830382111561411857614118613e92565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261421a5761421a613f91565b500690565b7f68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f000081526000825161425781601e850160208701613811565b602f60f81b601e939091019283015250601f01919050565b600080845481600182811c91508083168061428b57607f831692505b602080841082036142aa57634e487b7160e01b86526022600452602486fd5b8180156142be57600181146142cf576142fc565b60ff198616895284890196506142fc565b60008b81526020902060005b868110156142f45781548b8201529085019083016142db565b505084890196505b505050614309848861408e565b602f60f81b815201979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061434f9083018461383d565b9695505050505050565b60006020828403121561436b57600080fd5b815161329681613709565b60008161438557614385613e92565b50600019019056fedf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42a2646970667358221220acd39579e26673a413bc1c849a245ca8f029d742d73ab5317d8a0e04090fb47364736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 PUSH1 0x20 DUP3 ADD MSTORE CHAINID SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x43E3 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4A8 ADD MSTORE PUSH2 0x2D80 ADD MSTORE PUSH2 0x43E3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x272 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x602787ED GT PUSH2 0x14F JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x7E9 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x874 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x894 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x77C JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x79C JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79672692 GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x79672692 EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x8E116AEA EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0x9725D92E EQ PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x602787ED EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x75A8F08F EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4BF44026 GT PUSH2 0x1AC JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x5076A64D EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0x5F1E6F6D EQ PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x3EF2DBC2 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCCA831 GT PUSH2 0x23A JUMPI DUP1 PUSH4 0xBCCA831 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x27399D36 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x333 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x371F JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CC PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x37CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3869 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x34E CALLDATASIZE PUSH1 0x4 PUSH2 0x38AA JUMP JUMPDEST PUSH2 0xA97 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0xBB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x421 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457 PUSH2 0x452 CALLDATASIZE PUSH1 0x4 PUSH2 0x3992 JUMP JUMPDEST PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0x1060 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x107B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x522 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x531 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1097 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x583 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A29 JUMP JUMPDEST PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3A6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5AB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3B56 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x5EB CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x14F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x60B CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x151A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x157A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x1659 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3C8C JUMP JUMPDEST PUSH2 0x17A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1C31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCB SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x737 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D56 JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x757 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D89 JUMP JUMPDEST PUSH2 0x1C4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x797 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x1D4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x7B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x7E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1ED5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x804 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1F66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x846 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x88F CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1F94 JUMP JUMPDEST PUSH2 0x353 PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E2A JUMP JUMPDEST PUSH2 0x2023 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x23F6 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x8EC JUMPI POP PUSH2 0x8EC DUP3 PUSH2 0x24BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x90E JUMPI PUSH2 0x90E PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x937 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 PUSH2 0x997 DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x95D JUMPI PUSH2 0x95D PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9B2 JUMPI PUSH2 0x9B2 PUSH2 0x3E7C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0x9CD DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x93D JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA19 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA66 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA3B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA66 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA49 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7B DUP3 PUSH2 0x250D JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA2 DUP3 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0xB30 JUMPI POP PUSH2 0xB30 DUP2 CALLER PUSH2 0x846 JUMP JUMPDEST PUSH2 0xBA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 PUSH2 0x256C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH1 0x1 SUB PUSH2 0xBD4 JUMPI POP PUSH20 0x858A92511485715CFB754F397A7894B7724C7ABD SWAP1 JUMP JUMPDEST CHAINID PUSH1 0x4 SUB PUSH2 0xBF5 JUMPI POP PUSH20 0xEE35E946DD73EF78D352454C3F915E2CA0A09D87 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x3AB739BAB83837B93A32B21031B430B4B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xC8D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x25DA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCC3 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x3F0C JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xCCF DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC97 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCE7 CALLER DUP3 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0xD03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH2 0x2766 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP7 SWAP5 SWAP6 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH5 0x100000000 DUP8 DIV DUP3 AND SWAP7 PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND SWAP7 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP5 AND SWAP7 PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP6 AND SWAP7 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV SWAP1 SWAP5 AND SWAP5 AND SWAP3 SWAP1 PUSH2 0xD8B SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xDB7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE04 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDD9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE04 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDE7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE1C DUP6 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH5 0x100000000 DUP2 DIV DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP5 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP3 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD DUP1 SLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP1 SWAP3 PUSH2 0x120 DUP5 ADD SWAP2 PUSH2 0xED7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF03 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF50 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF25 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF50 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF33 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 SWAP1 SWAP3 MSTORE POP POP DUP2 MLOAD SWAP2 SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7A JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xFA9 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xF97 DUP4 DUP10 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0xFA1 SWAP2 SWAP1 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0xFE4 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x101C CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1C4B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1088 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1092 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x10B8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x10DC JUMPI POP PUSH2 0x10DC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x11EB JUMPI PUSH2 0x11EB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1214 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x127F JUMPI PUSH2 0x1243 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x151A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1255 JUMPI PUSH2 0x1255 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x1277 DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x121A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x12A8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x12CC JUMPI POP PUSH2 0x12CC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x12E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x133E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP6 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x13C5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x13DF JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13DF JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1442 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1465 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x146F DUP5 DUP5 PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x1477 PUSH2 0x2933 JUMP JUMPDEST PUSH2 0x1480 DUP6 PUSH2 0x1F94 JUMP JUMPDEST CHAINID PUSH1 0x1 EQ PUSH2 0x149D JUMPI DUP2 MLOAD PUSH2 0x149B SWAP1 PUSH1 0xC9 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP JUMPDEST PUSH2 0x14AB PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14F1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x8EC JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x8EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1608 PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1631 JUMPI POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x1656 DUP2 PUSH2 0x296C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x167A PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x169E JUMPI POP PUSH2 0x169E DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x16BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x1704 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x1746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x2737B732BC34B9BA32B73A1032B234BA34B7B7 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1762 SWAP1 PUSH1 0x4 ADD DUP5 DUP5 PUSH2 0x3680 JUMP JUMPDEST POP PUSH32 0x1A7FCE8987747A468A9FD9D320891F1519376DAB1BAEB8E72E8D4447FD412589 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1796 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x17C5 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x17E9 JUMPI POP PUSH2 0x17E9 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1805 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH4 0xFFFFFFFF AND GT PUSH2 0x184F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH2 0x18A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 PUSH4 0xFFFFFFFF AND DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1911 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0xCB SLOAD DUP4 EQ PUSH2 0x1955 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x15DC9BDB99C819591A5D1A5BDB881251 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND ISZERO PUSH2 0x19B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x1A41 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0xC0 DUP12 ADD MLOAD PUSH1 0xE0 DUP13 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP1 MLOAD SWAP2 SWAP3 PUSH2 0x1B6B SWAP3 PUSH1 0x4 DUP6 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP POP PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP15 DUP2 AND DUP4 DUP6 ADD MSTORE DUP14 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP13 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP12 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP11 AND PUSH1 0xC0 DUP4 ADD MSTORE DUP9 AND PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 LOG2 PUSH2 0x1BF9 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST PUSH2 0xC8D CALLER DUP4 DUP4 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1C55 CALLER DUP4 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0x1C71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0x1C7D DUP5 DUP5 DUP5 DUP5 PUSH2 0x2A8C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1CA4 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1CC8 JUMPI POP PUSH2 0x1CC8 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1CE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x1398 SWAP1 PUSH1 0x1 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD5 DUP4 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x1DF6 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E22 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1E6F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E44 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1E6F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E52 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x3 DUP2 MLOAD GT ISZERO PUSH2 0x1EB3 JUMPI DUP1 PUSH2 0x1E8A DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EBB PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x1EC4 DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40F2 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1EFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0x1F09 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F70 PUSH2 0x2BBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1F80 SWAP2 SWAP1 PUSH2 0x4121 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1FBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x205C SWAP1 DUP4 SWAP1 PUSH2 0x414F JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x20DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x213E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x2187 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2289 JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x2216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x223D DUP12 DUP12 DUP15 DUP13 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x22EE JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x22EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x232D PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x2377 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x236C SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2399 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2399 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x25DA JUMP JUMPDEST PUSH2 0x23A3 CALLER DUP3 PUSH2 0x2E16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2417 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x243B JUMPI POP PUSH2 0x243B DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x2457 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x1398 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x24EE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x8EC JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x25A1 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2677 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x267C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x26F3 DUP4 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x273A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x275E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2753 DUP5 PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2779 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x283F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x284A PUSH1 0x0 DUP3 PUSH2 0x256C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2873 SWAP1 DUP5 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28A1 SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2929 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0xC8D DUP3 DUP3 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x295A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x2962 PUSH2 0x2FA6 JUMP JUMPDEST PUSH2 0x296A PUSH2 0x2FCD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2A97 DUP5 DUP5 DUP5 PUSH2 0x2766 JUMP JUMPDEST PUSH2 0x2AA3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2FFD JUMP JUMPDEST PUSH2 0x1C7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2AE6 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B10 JUMPI DUP1 PUSH2 0x2AFA DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B09 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x3FA7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B2A JUMPI PUSH2 0x2B2A PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2B54 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x275E JUMPI PUSH2 0x2B69 PUSH1 0x1 DUP4 PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B76 PUSH1 0xA DUP7 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x2B81 SWAP1 PUSH1 0x30 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B96 JUMPI PUSH2 0x2B96 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2BB8 PUSH1 0xA DUP7 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP PUSH2 0x2B58 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2BCE ADDRESS PUSH1 0x14 PUSH2 0x30FB JUMP JUMPDEST SWAP1 POP CHAINID PUSH1 0x1 SUB PUSH2 0x2BFE JUMPI DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP2 SWAP1 PUSH2 0x421F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0xC9 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP3 SWAP2 SWAP1 PUSH2 0x426F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x2CF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x2E08 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x329D SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2ED1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2EFA SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2F7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2F92 SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xBAC SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x296A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x296A CALLER PUSH2 0x296C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x30F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x3041 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x431C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x307C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3079 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4359 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x30D9 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x30AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x30D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x275E JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x275E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x310A DUP4 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x3115 SWAP1 PUSH1 0x2 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x312C JUMPI PUSH2 0x312C PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3156 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3171 JUMPI PUSH2 0x3171 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x31A0 JUMPI PUSH2 0x31A0 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x31C4 DUP5 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x31CF SWAP1 PUSH1 0x1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3247 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x3203 JUMPI PUSH2 0x3203 PUSH2 0x3E7C JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3219 JUMPI PUSH2 0x3219 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x3240 DUP2 PUSH2 0x4376 JUMP JUMPDEST SWAP1 POP PUSH2 0x31D2 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x3296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32AC DUP6 DUP6 PUSH2 0x32B9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x127F DUP2 PUSH2 0x3324 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x32EF JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x32E3 DUP8 DUP3 DUP6 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xFA9 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x3318 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x330D DUP7 DUP4 DUP4 PUSH2 0x35C7 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xFA9 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3338 JUMPI PUSH2 0x3338 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3340 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3354 JUMPI PUSH2 0x3354 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x33A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x33B5 JUMPI PUSH2 0x33B5 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3402 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3416 JUMPI PUSH2 0x3416 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x346E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3482 JUMPI PUSH2 0x3482 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x3511 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x35BE JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3529 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x353A JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x35BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x358E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35B7 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x35BE JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x35E4 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP PUSH2 0x35F2 DUP8 DUP3 DUP9 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x360C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x362E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3647 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3659 JUMP JUMPDEST POP PUSH2 0x2C12 SWAP3 SWAP2 POP PUSH2 0x36F4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x368C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36AE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x36C7 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36D9 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2C12 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x373C JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x37E7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x382C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3814 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1C7D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3855 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3296 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x388E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x38C8 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38F6 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3906 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP11 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE DUP10 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP9 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP8 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0xC0 DUP5 ADD MSTORE DUP6 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP4 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3981 DUP4 DUP3 ADD DUP6 PUSH2 0x383D JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3A20 PUSH1 0x20 DUP5 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3A52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A5E DUP6 DUP3 DUP7 ADD PUSH2 0x373C JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A86 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x3ADB JUMPI PUSH2 0x3ADB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3B03 JUMPI PUSH2 0x3B03 PUSH2 0x3AAB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x3B1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3296 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3B77 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B9F DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BC1 DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE4 DUP8 DUP3 DUP9 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x3C0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x3CAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x3CB7 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x3CCC PUSH1 0x40 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP8 POP PUSH2 0x3CDA PUSH1 0x60 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP7 POP PUSH2 0x3CE8 PUSH1 0x80 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP6 POP PUSH2 0x3CF6 PUSH1 0xA0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP5 POP PUSH2 0x3D04 PUSH1 0xC0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP4 POP PUSH1 0xE0 DUP12 ADD CALLDATALOAD PUSH2 0x3D14 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3D38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D44 DUP14 DUP3 DUP15 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D74 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x39D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3DAA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3DBA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x3DED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BE4 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E1A DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E69 DUP8 DUP3 DUP9 ADD PUSH2 0x3C0D JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3EBA JUMPI PUSH2 0x3EBA PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3ED5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCD7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3F07 JUMPI PUSH2 0x3F07 PUSH2 0x3E92 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F1F JUMPI PUSH2 0x3F1F PUSH2 0x3E92 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3F8C JUMPI PUSH2 0x3F8C PUSH2 0x3E92 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3FB6 JUMPI PUSH2 0x3FB6 PUSH2 0x3F91 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x4084 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH2 0x40A0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x40BC DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x40D0 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH14 0x17B6B2BA30B230BA30973539B7B7 PUSH1 0x91 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0xE ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4104 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4118 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4133 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0xA ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4118 JUMPI PUSH2 0x4118 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x421A JUMPI PUSH2 0x421A PUSH2 0x3F91 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x68747470733A2F2F6D657461646174612E736F756E642E78797A2F76312F0000 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4257 DUP2 PUSH1 0x1E DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL PUSH1 0x1E SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x1F ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x428B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x42AA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP7 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP7 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x42BE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x42CF JUMPI PUSH2 0x42FC JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x42FC JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x42F4 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x42DB JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP PUSH2 0x4309 DUP5 DUP9 PUSH2 0x408E JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL DUP2 MSTORE ADD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x434F SWAP1 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x436B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x4385 JUMPI PUSH2 0x4385 PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP INVALID 0xDF DUP12 0x4C MSTORE 0xF INVALID NOT PUSH29 0x5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42A264697066 PUSH20 0x58221220ACD39579E26673A413BC1C849A245CA8 CREATE 0x29 0xD7 TIMESTAMP 0xD7 GASPRICE 0xB5 BALANCE PUSH30 0x8A0E04090FB47364736F6C634300080E0033000000000000000000000000 ",
              "sourceMap": "2223:22332:41:-:0;;;5882:130;;;;;;;;;-1:-1:-1;5935:69:41;;;5946:42;5935:69;;;188:25:46;5990:13:41;229:18:46;;;222:34;;;;161:18;;5935:69:41;;;-1:-1:-1;;5935:69:41;;;;;;;;;5925:80;;5935:69;5925:80;;;;5906:99;;2223:22332;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ADMIN_ROLE_11699": {
                  "entryPoint": null,
                  "id": 11699,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@DOMAIN_SEPARATOR_10417": {
                  "entryPoint": null,
                  "id": 10417,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@PERMISSIONED_SALE_TYPEHASH_10415": {
                  "entryPoint": null,
                  "id": 10415,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__AccessManager_init_11742": {
                  "entryPoint": 10547,
                  "id": 11742,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__AccessManager_init_unchained_11753": {
                  "entryPoint": 12237,
                  "id": 11753,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Context_init_unchained_2140": {
                  "entryPoint": 12198,
                  "id": 2140,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__ERC721_init_891": {
                  "entryPoint": 10498,
                  "id": 891,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__ERC721_init_unchained_909": {
                  "entryPoint": 12120,
                  "id": 909,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 9580,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 12285,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_contractBaseURI_11684": {
                  "entryPoint": 11199,
                  "id": 11684,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getBitForTicketNumber_11638": {
                  "entryPoint": null,
                  "id": 11638,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 9959,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_1423": {
                  "entryPoint": 11798,
                  "id": 1423,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 9485,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 10892,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_sendFunds_11483": {
                  "entryPoint": 9690,
                  "id": 11483,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 10686,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_throwError_4335": {
                  "entryPoint": 13092,
                  "id": 4335,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_tokenToEdition_10434": {
                  "entryPoint": null,
                  "id": 10434,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_transferOwnership_11819": {
                  "entryPoint": 10604,
                  "id": 11819,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 10086,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 2711,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@atEditionId_10425": {
                  "entryPoint": null,
                  "id": 10425,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@atTokenId_10422": {
                  "entryPoint": null,
                  "id": 10422,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 5498,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@buyEdition_10859": {
                  "entryPoint": 8227,
                  "id": 10859,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@checkTicketNumbers_11421": {
                  "entryPoint": 2290,
                  "id": 11421,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@contractURI_11160": {
                  "entryPoint": 8038,
                  "id": 11160,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@createEdition_10681": {
                  "entryPoint": 6052,
                  "id": 10681,
                  "parameterSlots": 10,
                  "returnSlots": 0
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@depositedForEdition_10438": {
                  "entryPoint": null,
                  "id": 10438,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@editionCount_11290": {
                  "entryPoint": 4219,
                  "id": 11290,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@editions_10430": {
                  "entryPoint": 3342,
                  "id": 10430,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1121": {
                  "entryPoint": 2672,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_11570": {
                  "entryPoint": 11286,
                  "id": 11570,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@grantRole_11852": {
                  "entryPoint": 4016,
                  "id": 11852,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@hasRole_11901": {
                  "entryPoint": 7174,
                  "id": 11901,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_10567": {
                  "entryPoint": 5029,
                  "id": 10567,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 2526,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 5402,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_11762": {
                  "entryPoint": null,
                  "id": 11762,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownersOfTokenIds_11364": {
                  "entryPoint": 4559,
                  "id": 11364,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@recover_4427": {
                  "entryPoint": 12957,
                  "id": 4427,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@revokeRole_11884": {
                  "entryPoint": 7893,
                  "id": 11884,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@royaltyInfo_11219": {
                  "entryPoint": 3598,
                  "id": 11219,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 4192,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 7243,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 7232,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setEditionBaseURI_11084": {
                  "entryPoint": 5721,
                  "id": 11084,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setEndTime_10944": {
                  "entryPoint": 7299,
                  "id": 10944,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setOwnerOverride_11043": {
                  "entryPoint": 5632,
                  "id": 11043,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setPermissionedQuantity_11015": {
                  "entryPoint": 4247,
                  "id": 11015,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSignerAddress_10978": {
                  "entryPoint": 4743,
                  "id": 10978,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setStartTime_10918": {
                  "entryPoint": 9206,
                  "id": 10918,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@soundRecoveryAddress_11449": {
                  "entryPoint": 2993,
                  "id": 11449,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@supportsInterface_11277": {
                  "entryPoint": 2247,
                  "id": 11277,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 9405,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 7217,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toHexString_4250": {
                  "entryPoint": 12539,
                  "id": 4250,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@toString_4133": {
                  "entryPoint": 10943,
                  "id": 4133,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenToEdition_11316": {
                  "entryPoint": 5368,
                  "id": 11316,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_11145": {
                  "entryPoint": 7499,
                  "id": 11145,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalSupply_11253": {
                  "entryPoint": 3217,
                  "id": 11253,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 3293,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_11799": {
                  "entryPoint": 8084,
                  "id": 11799,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_4400": {
                  "entryPoint": 12985,
                  "id": 4400,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_4474": {
                  "entryPoint": 13767,
                  "id": 4474,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_4585": {
                  "entryPoint": 13530,
                  "id": 4585,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@withdrawFunds_10892": {
                  "entryPoint": 3121,
                  "id": 10892,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawnForEdition_10442": {
                  "entryPoint": null,
                  "id": 10442,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 14140,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 15041,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_string": {
                  "entryPoint": 15158,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_string_calldata": {
                  "entryPoint": 15373,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 15344,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr": {
                  "entryPoint": 15500,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 10
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 15868,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 14550,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 15753,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 15702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 15190,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 14506,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 14889,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 14772,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 14111,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 17241,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 14460,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 14208,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256": {
                  "entryPoint": 15914,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_string_calldata_ptr": {
                  "entryPoint": 15438,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 14738,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint32": {
                  "entryPoint": 14845,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint32": {
                  "entryPoint": 14820,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 16526,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_memory_ptr": {
                  "entryPoint": 14397,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_fba9": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16626,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16554,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16673,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 17007,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16927,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14615,
                  "id": null,
                  "parameterSlots": 11,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 17180,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14954,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14283,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_enum$_TimeType_$10410_t_uint256__to_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": 16482,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14441,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16825,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16368,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16315,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16750,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16164,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16406,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 16140,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint32": {
                  "entryPoint": 16719,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 16295,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 16242,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 16117,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 14353,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "decrement_t_uint256": {
                  "entryPoint": 17270,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 16065,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 16040,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 16907,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 16018,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 16273,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 16460,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 15996,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 15019,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 14485,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 14089,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:40504:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "676:283:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "725:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "734:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "737:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "727:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "727:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "727:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "704:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "712:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "700:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "700:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "696:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "696:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "689:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "686:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "750:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "773:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "760:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "760:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "823:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "832:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "835:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "825:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "825:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "825:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "795:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "803:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "789:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "864:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "872:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "860:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "946:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "949:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "900:6:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "912:1:46",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "915:6:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "908:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "908:14:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "896:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "896:27:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "925:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "892:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "892:38:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "932:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "889:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "889:47:46"
                              },
                              "nodeType": "YulIf",
                              "src": "886:67:46"
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "639:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "647:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "655:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "665:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:367:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1086:383:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1132:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1141:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1144:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1134:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1134:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1134:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1103:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1103:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1128:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1099:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1099:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1096:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1157:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1180:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1167:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1167:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1157:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1199:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1230:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1241:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1226:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1226:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1213:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1213:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1203:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1288:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1297:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1300:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1290:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1290:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1290:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1260:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1268:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1257:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1254:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1313:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1392:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1377:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1377:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1401:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1339:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1339:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1317:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1327:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1418:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1428:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1418:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1445:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1455:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1036:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1047:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1059:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1067:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1075:6:46",
                            "type": ""
                          }
                        ],
                        "src": "964:505:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1619:497:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1629:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1639:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1633:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1668:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1679:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1664:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1664:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1709:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1691:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1691:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1691:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1721:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "1732:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "1725:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1747:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1767:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1761:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1761:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1751:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1790:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1798:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1783:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1783:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1783:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1814:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1825:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1836:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1821:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1821:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1814:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1866:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1874:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1862:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1862:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1852:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1886:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1895:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1890:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:136:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "1975:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "srcPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2000:6:46"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1994:5:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1994:13:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "1987:6:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1987:21:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "1980:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1980:29:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1968:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1968:42:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1968:42:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2023:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2034:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2030:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2030:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2023:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2055:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2069:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2077:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2065:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2065:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2055:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1916:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1919:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1913:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1913:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1927:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1929:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1938:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1941:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1934:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1934:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1909:3:46",
                                "statements": []
                              },
                              "src": "1905:185:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2099:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "2107:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2099:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1588:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1599:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1610:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1474:642:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2174:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2184:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2193:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2188:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2253:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2278:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2283:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2274:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2274:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2297:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2302:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2293:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2293:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2287:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2287:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2267:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2267:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2214:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2217:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2211:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2211:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2225:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2227:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2236:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2239:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2232:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2232:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2227:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2207:3:46",
                                "statements": []
                              },
                              "src": "2203:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2342:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2355:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "2360:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2351:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2351:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2369:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2344:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2344:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2331:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2334:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2328:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2328:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2325:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2152:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "2157:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2162:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2121:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2445:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2455:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2475:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2469:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2469:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2459:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2497:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2502:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2490:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2490:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2544:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2551:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2540:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2540:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2562:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2567:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2558:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2558:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2574:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2518:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2518:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2518:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2590:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2605:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2618:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2626:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2614:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2614:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2635:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2631:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2631:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2610:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2610:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2601:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2601:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2642:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2597:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2597:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2590:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2422:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2429:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2437:3:46",
                            "type": ""
                          }
                        ],
                        "src": "2384:269:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2779:110:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2796:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2807:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2789:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2789:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2789:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2819:64:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2856:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2868:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2879:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2864:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2864:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2827:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2827:56:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2819:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2748:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2759:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2770:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2658:231:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2964:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3010:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3019:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3022:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3012:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3012:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3012:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2985:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2994:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2981:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2981:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3006:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2977:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2977:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2974:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3035:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3058:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3045:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3045:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3035:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2930:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2941:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2953:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2894:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3180:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3190:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3202:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3213:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3198:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3198:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3190:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3232:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3247:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3263:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3268:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3259:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3259:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3272:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3255:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3255:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3243:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3243:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3225:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3225:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3225:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3149:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3160:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3171:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3079:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3332:86:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3396:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3405:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3408:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3398:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3398:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3398:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3355:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3366:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3381:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3386:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3377:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3377:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3390:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "3373:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3373:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3362:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3362:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3352:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3352:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3345:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3345:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3342:70:46"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3321:5:46",
                            "type": ""
                          }
                        ],
                        "src": "3287:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3510:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3556:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3565:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3568:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3558:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3558:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3558:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3531:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3540:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3527:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3527:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3552:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3523:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3523:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3520:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3581:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3607:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3594:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3594:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3585:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3651:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3626:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3626:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3626:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3666:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3676:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3690:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3717:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3728:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3713:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3713:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3700:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3700:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3690:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3468:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3479:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3491:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3499:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3423:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3844:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3854:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3866:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3877:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3862:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3862:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3854:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3896:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3907:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3889:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3889:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3889:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3813:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3824:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3835:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3743:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4029:352:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4075:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4084:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4087:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4077:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4077:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4077:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4050:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4059:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4046:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4046:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4071:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4042:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4042:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4039:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4100:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4126:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4113:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4113:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4104:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4170:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4145:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4145:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4185:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4195:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4185:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4209:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4241:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4252:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4237:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4237:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4224:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4224:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4213:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4290:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4265:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4265:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4265:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4307:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4317:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4307:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4333:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4360:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4371:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4356:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4356:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4343:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4343:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4333:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3979:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3990:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4002:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4010:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4018:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3925:456:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4487:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4497:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4509:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4520:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4505:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4505:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4497:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4539:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4550:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4532:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4532:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4532:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4456:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4467:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4478:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4386:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4945:664:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4955:13:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4965:3:46",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4959:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4977:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4995:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5000:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4991:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4991:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5004:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4987:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4987:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4981:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5022:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5037:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5045:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5033:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5033:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5015:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5015:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5069:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5080:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5065:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5065:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5085:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5058:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5058:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5058:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5101:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5111:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5105:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5141:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5152:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5137:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5137:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5161:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5169:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5157:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5157:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5130:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5130:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5130:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5193:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5204:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5189:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5189:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5213:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5221:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5209:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5209:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5182:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5182:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5182:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5245:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5256:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5241:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5241:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "5266:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5274:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5262:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5262:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5234:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5234:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5234:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5298:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5309:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5294:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "5319:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5327:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5315:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5315:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5287:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5287:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5287:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5351:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5362:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5372:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5380:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5368:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5368:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5340:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5404:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5415:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5400:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5400:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5425:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5433:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5421:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5421:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5393:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5393:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5457:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5468:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5453:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5453:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "5478:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5486:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5474:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5474:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5446:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5446:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5446:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5521:3:46",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5506:19:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5527:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5499:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5499:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5539:64:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value9",
                                    "nodeType": "YulIdentifier",
                                    "src": "5576:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5588:9:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5599:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5584:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5584:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5547:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5547:56:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5539:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4842:9:46",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "4853:6:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "4861:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "4869:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4877:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4885:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4893:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4901:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4909:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4917:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4925:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4936:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4568:1041:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5701:161:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5747:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5756:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5759:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5749:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5749:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5749:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5722:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5731:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5718:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5718:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5743:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5714:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5714:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5711:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5772:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5795:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5782:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5782:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5772:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5814:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5841:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5852:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5837:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5837:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5824:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5824:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5814:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5659:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5670:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5682:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5690:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5614:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5996:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6006:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6018:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6029:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6014:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6014:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6006:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6048:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6063:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6079:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6084:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6075:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6075:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6088:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6071:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6071:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6059:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6059:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6041:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6041:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6041:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6112:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6123:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6108:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6128:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6101:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6101:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6101:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5957:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5968:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5976:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5987:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5867:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6233:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6279:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6288:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6291:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6281:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6281:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6281:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6254:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6250:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6250:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6275:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6246:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6246:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6243:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6304:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6327:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6314:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6304:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6346:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6376:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6387:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6372:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6372:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6359:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6359:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6350:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6425:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6400:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6400:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6400:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6440:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6450:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6440:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6191:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6202:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6214:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6222:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6146:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6514:115:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6524:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6546:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6533:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6533:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "6524:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6607:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6616:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6619:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6609:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6609:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6609:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6575:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6586:5:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6593:10:46",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6582:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6582:22:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6572:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6572:33:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6565:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6565:41:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6562:61:46"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "6493:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6504:5:46",
                            "type": ""
                          }
                        ],
                        "src": "6466:163:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6720:166:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6766:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6775:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6778:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6768:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6768:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6768:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6741:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6750:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6737:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6762:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6733:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6733:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6730:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6791:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6814:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6801:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6801:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6791:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6833:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6865:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6876:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6861:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6861:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "6843:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6843:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6833:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6678:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6689:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6701:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6709:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6634:252:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6996:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7042:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7051:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7054:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7044:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7044:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7044:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7017:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7026:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7013:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7013:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7038:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7009:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7009:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7006:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7067:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7094:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7081:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7081:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7071:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7147:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7156:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7159:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7149:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7149:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7149:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7119:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7127:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7116:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7116:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7113:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7172:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7240:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7251:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7236:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7260:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7198:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7198:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7176:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7186:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7277:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "7287:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7277:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7304:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "7314:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7304:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6954:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6965:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6977:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6985:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6891:437:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7484:507:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7494:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7504:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7498:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7515:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7533:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7544:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7529:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7529:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7519:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7563:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7574:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7556:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7556:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7556:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7586:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "7597:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "7590:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7612:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7632:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7626:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7626:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7616:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7655:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7663:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7648:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7648:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7648:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7679:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7690:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7701:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7686:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7686:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "7679:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7713:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7731:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7739:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7727:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7727:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7717:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7751:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7760:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7755:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7819:146:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7840:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7855:6:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "7849:5:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7849:13:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7872:3:46",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7877:1:46",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7868:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7868:11:46"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "7881:1:46",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "7864:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7864:19:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "7845:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7845:39:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7833:52:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7833:52:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7898:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7909:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7914:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7905:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7905:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7898:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7930:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "7944:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7952:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7940:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7940:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7930:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7781:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7784:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7778:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7778:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7792:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7794:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7803:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7806:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7799:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7799:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7794:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7774:3:46",
                                "statements": []
                              },
                              "src": "7770:195:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7974:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "7982:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7974:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7453:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7464:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7475:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7333:658:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8083:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8129:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8138:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8141:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8131:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8131:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8131:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8104:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8113:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8100:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8100:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8125:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8096:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8096:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8093:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8154:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8177:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8164:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8164:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8154:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8196:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8226:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8222:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8209:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8209:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8200:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8275:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8250:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8250:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8250:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8290:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8300:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8290:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8041:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8052:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8064:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8072:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7996:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8348:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8365:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8372:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8377:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8368:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8368:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8358:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8358:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8358:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8405:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8408:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8398:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8398:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8429:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8432:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8422:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8422:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8422:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8316:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8523:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8533:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8543:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8537:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8588:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8590:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8590:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8590:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8576:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8584:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8573:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8573:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8570:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8619:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8633:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "8629:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8629:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8623:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8645:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8665:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8659:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8659:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8649:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8677:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8699:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8723:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8731:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8719:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8719:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "8736:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "8715:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8715:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8741:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8711:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8711:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8746:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8707:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8707:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8695:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8695:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8681:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8809:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8811:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8811:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8811:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8768:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8780:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8765:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8765:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8788:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8800:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8785:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8785:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "8762:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8762:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8759:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8847:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8851:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8840:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8840:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8840:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8871:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "8880:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8871:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8902:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8910:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8895:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8895:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8895:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8955:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8964:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8967:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8957:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8957:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8957:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "8936:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "8941:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8932:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8932:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8950:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8929:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8929:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8926:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8997:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9005:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8993:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8993:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9012:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9017:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8980:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8980:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8980:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "9048:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "9056:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9044:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9044:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9065:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9040:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9040:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9072:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9033:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9033:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9033:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "8492:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8497:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8505:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8513:5:46",
                            "type": ""
                          }
                        ],
                        "src": "8448:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9138:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9187:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9196:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9199:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9189:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9189:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9189:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "9166:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9174:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9162:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9162:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9181:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9158:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9158:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9151:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9151:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9148:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9212:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9260:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9268:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9256:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9256:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9288:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "9275:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9275:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9297:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9221:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9221:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "9212:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "9112:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9120:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9128:5:46",
                            "type": ""
                          }
                        ],
                        "src": "9085:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9463:728:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9510:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9519:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9522:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9512:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9512:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9512:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9484:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9493:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9480:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9480:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9505:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9476:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9476:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9473:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9535:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9561:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9548:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9548:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9539:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9605:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9580:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9580:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9580:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9620:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9630:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9620:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9644:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9675:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9686:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9671:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9671:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9658:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9658:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9648:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9699:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9709:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9703:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9754:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9763:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9766:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9756:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9756:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9756:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9742:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9750:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9739:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9739:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9736:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9779:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9811:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9822:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9807:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9807:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9831:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9789:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9789:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9779:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9848:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9881:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9892:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9877:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9877:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9864:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9864:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9852:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9925:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9934:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9937:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9927:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9927:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9927:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9911:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9921:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9908:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9908:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9905:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9950:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9982:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9993:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9978:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9978:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10004:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9960:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9960:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9950:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10021:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10054:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10065:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10050:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10050:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10037:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10037:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10025:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10098:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10107:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10110:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10100:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10100:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10100:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10084:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10094:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10081:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10081:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10078:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10123:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10155:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10166:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10151:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10151:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10177:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10133:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10133:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10123:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9405:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9416:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9428:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9436:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9444:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9452:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9312:879:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10266:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10312:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10321:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10324:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10314:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10314:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10314:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10287:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10296:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10283:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10283:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10308:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10279:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10279:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10276:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10337:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10363:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10350:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10350:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10341:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10407:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10382:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10382:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10382:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10422:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10432:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10422:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10232:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10243:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10255:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10196:247:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10521:275:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10570:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10579:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10582:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10572:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10572:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10572:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10549:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10557:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10545:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10545:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "10564:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10541:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10541:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10534:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10531:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10595:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10618:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10605:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10605:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10595:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10668:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10677:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10680:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10670:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10670:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10670:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10640:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10648:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10637:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10637:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10634:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10693:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10709:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10717:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10705:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10705:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10693:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10774:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10783:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10786:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10776:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10776:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10776:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10745:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "10753:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10741:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10741:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10762:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10737:30:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "10769:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10734:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10734:39:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10731:59:46"
                            }
                          ]
                        },
                        "name": "abi_decode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "10484:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10492:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "10500:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10510:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10448:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10908:372:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10929:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10938:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10925:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10925:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10950:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10921:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10921:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10918:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10979:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11002:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10989:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10989:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11021:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11052:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11063:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11048:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11048:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11035:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11035:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11025:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11110:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11119:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11122:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11112:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11112:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11112:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11082:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11090:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11079:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11079:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11076:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11135:85:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11192:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11203:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11188:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11161:26:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11161:59:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11139:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11149:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11229:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "11239:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11256:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "11266:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11256:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10858:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10869:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10881:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10889:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10897:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10801:479:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11521:873:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11568:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11577:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11580:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11570:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11570:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11570:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11542:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11551:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11538:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11538:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11563:3:46",
                                    "type": "",
                                    "value": "320"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11534:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11534:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11531:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11593:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11619:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11606:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11606:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11597:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11663:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11638:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11638:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11638:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11678:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11688:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11678:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11702:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11729:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11740:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11725:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11725:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11712:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11712:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11702:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11753:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11785:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11796:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11781:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11781:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11763:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11763:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11753:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11809:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11841:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11852:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11837:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11837:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11819:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11819:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11809:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11865:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11897:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11908:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11893:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11893:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11875:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11875:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11865:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11922:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11954:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11965:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11950:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11950:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11932:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11932:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "11922:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11979:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12011:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12022:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12007:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11989:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11989:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "11979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12036:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12068:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12079:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12064:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12064:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12051:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12051:33:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12040:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12118:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12093:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12093:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12093:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12135:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12145:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "12135:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12161:43:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12188:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12199:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12184:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12184:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12171:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12171:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "12161:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12213:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12244:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12255:3:46",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12240:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12240:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12227:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12227:33:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12217:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12303:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12312:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12315:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12305:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12305:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12305:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12275:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12283:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12272:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12272:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12269:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12328:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12360:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12371:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12356:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12356:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12380:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "12338:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12338:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value9",
                                  "nodeType": "YulIdentifier",
                                  "src": "12328:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11415:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11426:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11438:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11446:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11454:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11462:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11470:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11478:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "11486:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "11494:6:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "11502:6:46",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "11510:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11285:1109:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12483:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12529:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12538:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12541:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12531:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12531:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12531:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12504:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12513:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12500:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12500:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12525:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12496:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12496:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12493:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12554:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12580:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12567:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12567:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12558:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12624:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12599:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12599:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12599:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12639:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12649:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12639:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12663:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12695:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12706:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12691:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12678:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12678:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12667:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12767:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12776:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12779:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12769:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12769:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12769:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12732:7:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "12755:7:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "12748:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12748:15:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "12741:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12741:23:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "12729:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12729:36:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12722:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12722:44:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12719:64:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12792:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12802:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12792:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12441:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12452:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12464:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12472:6:46",
                            "type": ""
                          }
                        ],
                        "src": "12399:416:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12950:665:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12997:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13006:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13009:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12999:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12999:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12999:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12971:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12980:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12967:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12967:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12992:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12963:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12963:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12960:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13022:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13048:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13035:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13035:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13026:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13092:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13067:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13067:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13067:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13107:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13117:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13107:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13131:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13163:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13174:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13159:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13159:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13146:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13146:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13135:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13187:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13187:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13187:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13229:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13239:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13255:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13282:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13293:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13278:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13278:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13265:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13265:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "13255:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13306:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13337:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13348:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13333:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13333:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13320:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13320:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13310:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13395:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13404:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13407:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13397:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13397:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13397:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13367:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13375:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13364:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13364:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13361:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13420:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13434:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13445:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13430:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13430:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13424:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13500:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13509:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13512:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13502:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13502:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13502:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "13479:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13483:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13475:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13475:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13490:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13471:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13464:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13461:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13525:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13574:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13578:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13570:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13570:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13596:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13583:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13583:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13601:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "13535:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13535:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "13525:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12892:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12903:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12915:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12923:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12931:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12939:6:46",
                            "type": ""
                          }
                        ],
                        "src": "12820:795:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13707:301:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13753:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13762:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13765:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13755:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13755:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13755:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13728:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13737:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13724:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13724:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13749:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13720:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13720:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13717:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13778:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13804:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13791:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13791:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13782:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13848:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13823:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13823:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13823:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13863:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13873:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13863:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13887:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13919:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13930:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13915:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13915:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13902:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13902:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13891:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13968:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13943:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13943:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13943:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13985:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13995:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13985:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13665:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13676:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13688:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13696:6:46",
                            "type": ""
                          }
                        ],
                        "src": "13620:388:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14136:423:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14182:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14191:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14194:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14184:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14184:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14184:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14157:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14166:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14153:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14153:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14178:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14149:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14149:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14146:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14207:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14230:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14217:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14217:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14207:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14249:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14280:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14291:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14276:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14276:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14263:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14263:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "14253:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14338:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14347:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14350:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14340:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14340:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "14310:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14318:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14307:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14307:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14304:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14363:85:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14420:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "14431:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14416:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14416:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14440:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "14389:26:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14389:59:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14367:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14377:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14457:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "14467:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14457:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14484:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "14494:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "14484:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14511:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14538:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14549:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14534:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14534:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14521:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14521:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "14511:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14078:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14089:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14101:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14109:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14117:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14125:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14013:546:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14596:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14613:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14620:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14625:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14616:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14616:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14606:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14606:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14606:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14653:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14656:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14646:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14646:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14646:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14677:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14680:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14670:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14670:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14670:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14564:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14728:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14745:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14752:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14757:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14748:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14748:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14738:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14738:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14738:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14785:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14788:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14778:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14778:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14778:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14809:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14812:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14802:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14802:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14802:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14696:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14875:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14906:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14908:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14908:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14908:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14891:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14902:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "14898:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14898:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "14888:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14888:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14885:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14937:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14948:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14955:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14944:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14944:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "14937:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "14857:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "14867:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14828:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15023:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15033:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15047:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15050:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "15043:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15043:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "15033:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15064:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15094:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15100:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "15090:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15090:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "15068:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15141:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15143:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "15157:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15165:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "15153:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15153:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "15143:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "15121:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15114:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15114:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15111:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15231:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15252:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15259:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15264:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "15255:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15255:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15245:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15245:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15245:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15296:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15299:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15289:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15289:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15289:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15324:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15327:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15317:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15317:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15317:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "15187:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "15210:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15218:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15207:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15207:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "15184:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15184:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15181:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "15003:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "15012:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14968:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15527:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15544:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15555:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15537:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15537:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15537:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15578:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15589:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15574:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15574:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15594:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15567:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15567:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15567:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15617:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15628:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15613:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15613:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15633:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15606:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15606:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15606:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15688:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15699:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15684:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15684:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15704:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15677:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15677:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15677:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15717:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15740:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15725:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15717:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15504:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15518:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15353:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15929:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15946:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15957:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15939:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15939:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15939:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15980:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15991:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15976:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15976:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15996:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15969:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15969:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15969:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16019:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16030:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16015:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16015:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16035:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16008:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16008:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16008:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16090:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16101:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16086:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16086:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16106:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16079:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16079:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16079:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16148:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16160:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16171:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16156:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16156:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16148:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15906:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15920:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15755:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16360:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16377:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16388:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16370:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16370:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16370:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16411:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16422:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16407:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16407:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16427:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16400:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16400:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16400:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16450:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16461:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16446:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16446:18:46"
                                  },
                                  {
                                    "hexValue": "756e737570706f7274656420636861696e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16466:19:46",
                                    "type": "",
                                    "value": "unsupported chain"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16439:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16439:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16439:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16495:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16507:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16518:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16503:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16503:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16495:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16337:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16351:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16186:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16581:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16603:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16605:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16605:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16605:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16597:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16600:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16594:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16594:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "16591:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16634:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16646:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16649:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "16642:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16642:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "16634:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16563:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16566:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "16572:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16532:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16710:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16737:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16739:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16739:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16739:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16726:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "16733:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "16729:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16729:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16723:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16723:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "16720:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16768:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16779:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16782:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16775:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16775:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "16768:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16693:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16696:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "16702:3:46",
                            "type": ""
                          }
                        ],
                        "src": "16662:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16969:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16986:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16997:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16979:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16979:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16979:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17020:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17031:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17016:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17016:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17036:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17009:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17009:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17009:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17059:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17070:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17055:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17055:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17075:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17048:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17048:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17048:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17130:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17141:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17126:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17126:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17146:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17119:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17119:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17119:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17172:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17184:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17195:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17180:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17180:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17172:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16946:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16960:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16795:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17262:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17321:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17323:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17323:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17323:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17293:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "17286:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17286:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "17279:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17279:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17301:1:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "17312:1:46",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "17308:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "17308:6:46"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17316:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "17304:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17304:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17298:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17298:21:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17275:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17275:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17272:71:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17352:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17367:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17370:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "17363:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17363:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "17352:7:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17241:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17244:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "17250:7:46",
                            "type": ""
                          }
                        ],
                        "src": "17210:168:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17415:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17432:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17439:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17444:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "17435:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17435:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17425:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17425:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17472:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17475:4:46",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17465:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17465:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17465:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17496:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17499:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "17489:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17489:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17489:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "17383:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17561:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17584:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "17586:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17586:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17586:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17581:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17574:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17571:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17615:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17624:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17627:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "17620:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17620:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "17615:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17546:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17549:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "17555:1:46",
                            "type": ""
                          }
                        ],
                        "src": "17515:120:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17814:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17831:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17842:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17824:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17824:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17824:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17865:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17876:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17861:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17861:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17881:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17854:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17854:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17854:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17904:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17915:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17900:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17900:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17920:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17893:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17893:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17893:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17964:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17976:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17987:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17972:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17972:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17964:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17791:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17805:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17640:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18175:162:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18192:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18203:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18185:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18185:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18185:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18226:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18222:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18242:2:46",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18215:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18215:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18215:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18265:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18276:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18261:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18261:18:46"
                                  },
                                  {
                                    "hexValue": "756e617574686f72697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18281:14:46",
                                    "type": "",
                                    "value": "unauthorized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18254:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18254:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18254:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18305:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18317:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18328:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18313:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18313:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18305:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18152:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18166:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18001:336:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18516:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18533:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18544:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18526:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18526:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18526:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18567:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18578:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18563:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18563:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18583:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18556:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18556:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18556:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18606:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18617:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18602:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18602:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18622:28:46",
                                    "type": "",
                                    "value": "Edition must have a signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18595:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18595:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18595:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18660:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18672:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18683:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18668:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18668:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18660:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18493:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18507:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18342:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18824:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18834:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18846:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18857:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18842:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18842:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18834:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18876:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18887:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18869:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18869:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18869:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18914:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18925:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18910:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18910:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18934:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18942:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18930:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18930:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18903:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18903:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18903:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18785:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18796:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18804:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18815:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18697:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19139:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19156:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19167:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19149:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19149:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19149:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19190:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19201:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19186:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19186:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19206:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19179:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19179:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19179:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19229:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19240:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19225:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19225:18:46"
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19245:28:46",
                                    "type": "",
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19218:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19218:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19218:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19283:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19295:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19306:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19291:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19291:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19283:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19116:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19130:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18965:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19494:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19511:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19522:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19504:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19504:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19504:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19545:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19556:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19541:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19541:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19561:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19534:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19534:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19584:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19595:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19580:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19580:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19600:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19573:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19573:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19573:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19655:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19666:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19651:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19651:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19671:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19644:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19644:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19644:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19697:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19709:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19720:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19705:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19705:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19697:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19471:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19485:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19320:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19842:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19852:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19864:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19875:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19860:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19852:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19894:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19909:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19917:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19905:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19905:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19887:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19887:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19887:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19811:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19822:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19833:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19735:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20108:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20125:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20136:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20118:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20118:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20118:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20159:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20170:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20155:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20155:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20175:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20148:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20148:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20148:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20198:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20209:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20194:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20194:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20214:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20187:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20187:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20187:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20250:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20262:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20273:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20258:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20258:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20250:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20085:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20099:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19934:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20461:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20478:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20489:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20471:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20471:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20471:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20512:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20523:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20508:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20508:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20528:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20501:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20501:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20501:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20551:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20562:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20547:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20547:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20567:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20540:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20540:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20622:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20633:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20618:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20618:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20638:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20611:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20611:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20611:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20659:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20671:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20682:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20667:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20667:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20659:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20438:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20452:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20287:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20871:169:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20888:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20899:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20881:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20881:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20881:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20922:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20933:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20918:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20918:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20938:2:46",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20911:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20911:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20911:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20961:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20972:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20957:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20957:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f6e6578697374656e742065646974696f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20977:21:46",
                                    "type": "",
                                    "value": "Nonexistent edition"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20950:49:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20950:49:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21008:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21020:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21031:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21016:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21016:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21008:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20848:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20862:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20697:343:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21204:302:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21221:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21232:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21214:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21214:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21214:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21259:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21270:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21255:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21255:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21275:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21248:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21248:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21248:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21298:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21309:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21294:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21314:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21287:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21287:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21287:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21347:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21358:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21343:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21343:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21363:6:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21371:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "21330:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21330:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21330:48:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "21402:9:46"
                                          },
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "21413:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "21398:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21398:22:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21422:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21394:31:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21427:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21387:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21387:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21438:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21454:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "21473:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21481:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "21469:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "21469:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21490:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "21486:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "21486:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "21465:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21465:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21450:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21450:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21497:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21446:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21446:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21438:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21157:9:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21168:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21176:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21184:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21195:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21045:461:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21685:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21702:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21713:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21695:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21695:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21695:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21736:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21747:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21732:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21732:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21752:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21725:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21725:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21725:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21775:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21786:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21771:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21771:18:46"
                                  },
                                  {
                                    "hexValue": "4d75737420736574207175616e74697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21791:19:46",
                                    "type": "",
                                    "value": "Must set quantity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21764:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21764:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21764:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21820:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21832:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21843:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21828:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21828:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21820:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21662:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21676:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21511:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22031:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22048:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22059:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22041:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22041:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22041:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22082:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22093:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22078:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22078:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22098:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22071:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22071:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22071:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22121:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22132:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22117:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22117:18:46"
                                  },
                                  {
                                    "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22137:27:46",
                                    "type": "",
                                    "value": "Must set fundingRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22110:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22110:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22110:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22174:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22186:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22197:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22182:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22182:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22174:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22008:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22022:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21857:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22385:230:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22402:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22413:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22395:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22395:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22395:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22436:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22447:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22432:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22432:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22452:2:46",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22425:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22425:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22475:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22486:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22471:18:46"
                                  },
                                  {
                                    "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e207374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22491:34:46",
                                    "type": "",
                                    "value": "End time must be greater than st"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22464:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22464:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22546:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22557:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22542:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22542:18:46"
                                  },
                                  {
                                    "hexValue": "6172742074696d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22562:10:46",
                                    "type": "",
                                    "value": "art time"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22535:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22535:38:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22535:38:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22582:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22594:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22605:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22590:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22590:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22582:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22362:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22376:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22211:404:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22794:166:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22811:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22822:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22804:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22804:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22804:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22845:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22856:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22841:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22841:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22861:2:46",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22834:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22834:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22834:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22884:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22895:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22880:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22880:18:46"
                                  },
                                  {
                                    "hexValue": "57726f6e672065646974696f6e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22900:18:46",
                                    "type": "",
                                    "value": "Wrong edition ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22873:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22873:46:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22873:46:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22928:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22940:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22951:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22936:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22936:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22928:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22771:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22785:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22620:340:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23260:512:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23270:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23282:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23293:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23278:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23278:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23270:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23306:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23324:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23329:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "23320:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23320:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23333:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "23316:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23316:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23310:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23351:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23366:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23374:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23362:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23362:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23344:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23344:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23344:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23398:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23409:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23394:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23414:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23387:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23387:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23430:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23440:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "23434:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23470:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23481:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23466:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23466:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23490:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23498:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23486:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23486:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23459:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23459:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23459:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23522:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23533:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23518:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23518:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "23542:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23550:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23538:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23538:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23511:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23511:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23511:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23574:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23585:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23570:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23570:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "23595:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23603:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23591:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23591:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23563:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23563:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23563:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23627:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23638:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23623:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23623:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "23648:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23656:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23644:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23644:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23616:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23616:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23616:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23680:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23691:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23676:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23676:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "23701:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23709:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23697:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23697:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23669:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23669:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23669:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23733:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23744:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23729:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23729:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "23754:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23762:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23750:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23750:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23722:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23722:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23722:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23173:9:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "23184:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "23192:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "23200:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "23208:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "23216:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23224:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23232:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23240:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23251:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22965:807:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23809:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23826:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23833:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23838:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "23829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23829:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23819:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23819:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23819:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23866:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23869:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23859:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23859:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23859:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23890:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23893:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "23883:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23883:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23883:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "23777:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24050:272:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "24060:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24072:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24083:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24068:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24068:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24060:4:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24128:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24149:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24156:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24161:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "24152:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24152:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24142:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24142:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24142:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24193:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24196:4:46",
                                          "type": "",
                                          "value": "0x21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24186:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24186:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24186:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24221:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24224:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24214:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24214:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24214:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "24108:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24116:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "24105:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24105:13:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "24098:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24098:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "24095:144:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24255:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24266:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24248:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24248:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24248:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24293:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24304:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24289:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24289:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24309:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24282:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24282:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24282:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_TimeType_$10410_t_uint256__to_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24011:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "24022:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24030:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24041:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23909:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24501:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24518:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24529:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24511:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24511:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24511:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24552:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24563:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24548:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24548:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24568:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24541:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24541:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24541:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24591:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24602:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24587:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24587:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24607:34:46",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24580:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24580:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24580:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24662:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24673:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24658:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24658:18:46"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24678:17:46",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24651:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24651:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24651:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24705:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24717:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24728:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24713:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24713:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24705:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24478:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24492:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24327:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24793:135:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24803:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "24823:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24817:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24817:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "24807:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "24864:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24871:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24860:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24860:16:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24878:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24883:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24838:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24838:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24838:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24899:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24910:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24915:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24906:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24906:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "24899:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "24770:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "24777:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "24785:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24743:185:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25211:359:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25221:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25241:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25235:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25235:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25225:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25283:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25291:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25279:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25279:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25298:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25303:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25257:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25257:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25257:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25319:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25336:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25341:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25332:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25332:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25323:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25357:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25379:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25373:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25373:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25361:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25421:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25429:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25417:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25417:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25436:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25443:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25395:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25395:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25395:57:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25461:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25478:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25485:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25474:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25474:20:46"
                              },
                              "variables": [
                                {
                                  "name": "end_2",
                                  "nodeType": "YulTypedName",
                                  "src": "25465:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25510:5:46"
                                  },
                                  {
                                    "hexValue": "2f6d657461646174612e6a736f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25517:16:46",
                                    "type": "",
                                    "value": "/metadata.json"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25503:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25503:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25503:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25543:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25554:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25561:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25550:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25550:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25543:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25179:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25184:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25192:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25203:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24933:637:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25762:283:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25772:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25792:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25786:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25786:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25776:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25834:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25842:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25830:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25830:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25849:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25854:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25808:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25808:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25808:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25870:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25887:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25892:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25883:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25883:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25874:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25908:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25930:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25924:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25924:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25912:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25972:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25980:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25968:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25968:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25987:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25994:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25946:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25946:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25946:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26012:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26023:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26030:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26019:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26019:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "26012:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25730:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25735:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25743:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25754:3:46",
                            "type": ""
                          }
                        ],
                        "src": "25575:470:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26280:209:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26290:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26310:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "26304:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26304:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "26294:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "26352:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26360:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26348:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26348:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "26367:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26372:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "26326:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26326:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26326:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26388:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "26405:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26410:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26401:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26401:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26392:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26433:5:46"
                                  },
                                  {
                                    "hexValue": "73746f726566726f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26440:12:46",
                                    "type": "",
                                    "value": "storefront"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26426:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26426:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26426:27:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26462:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26473:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26480:2:46",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26469:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26469:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "26462:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "26256:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26261:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "26272:3:46",
                            "type": ""
                          }
                        ],
                        "src": "26050:439:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26668:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26685:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26696:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26678:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26678:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26678:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26719:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26730:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26715:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26715:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26735:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26708:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26708:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26708:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26758:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26769:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26754:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26754:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26774:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26747:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26747:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26829:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26840:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26825:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26825:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26845:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26818:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26818:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26818:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26863:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26875:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26886:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26871:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26871:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26863:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26645:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26659:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26494:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26948:181:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26958:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "26968:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26962:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26987:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "27002:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27005:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "26998:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26998:10:46"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26991:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27017:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "27032:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27035:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "27028:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27028:10:46"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "27021:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27072:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "27074:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27074:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27074:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27053:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27062:2:46"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27066:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "27058:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27058:12:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27050:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27050:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "27047:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27103:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27114:3:46"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27119:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27110:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27110:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "27103:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "26931:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "26934:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "26940:3:46",
                            "type": ""
                          }
                        ],
                        "src": "26901:228:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27308:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27325:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27336:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27318:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27318:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27318:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27359:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27370:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27355:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27355:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27375:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27348:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27348:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27348:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27398:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27409:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27394:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27414:24:46",
                                    "type": "",
                                    "value": "Edition does not exist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27387:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27387:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27448:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27460:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27471:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27456:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27456:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27448:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27285:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27299:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27134:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27659:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27676:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27687:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27669:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27669:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27669:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27710:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27721:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27706:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27706:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27726:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27699:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27699:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27699:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27749:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27760:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27745:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27745:18:46"
                                  },
                                  {
                                    "hexValue": "4d7573742073656e6420656e6f75676820746f20707572636861736520746865",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27765:34:46",
                                    "type": "",
                                    "value": "Must send enough to purchase the"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27738:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27738:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27738:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27820:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27831:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27816:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27816:18:46"
                                  },
                                  {
                                    "hexValue": "2065646974696f6e2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27836:11:46",
                                    "type": "",
                                    "value": " edition."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27809:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27809:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27809:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27857:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27869:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27880:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27865:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27865:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27857:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27636:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27650:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27485:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28069:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28086:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28097:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28079:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28079:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28079:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28120:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28131:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28116:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28116:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28136:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28109:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28109:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28109:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28159:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28170:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28155:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28155:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e2068617320656e646564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28175:19:46",
                                    "type": "",
                                    "value": "Auction has ended"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28148:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28148:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28148:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28204:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28216:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28227:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28212:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28212:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28204:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28046:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28060:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27895:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28415:249:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28432:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28443:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28425:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28425:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28466:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28477:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28462:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28462:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28482:2:46",
                                    "type": "",
                                    "value": "59"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28455:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28455:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28455:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28505:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28516:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28501:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28501:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28521:34:46",
                                    "type": "",
                                    "value": "No permissioned tokens available"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28494:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28494:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28494:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28576:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28587:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28572:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28572:18:46"
                                  },
                                  {
                                    "hexValue": "2026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28592:29:46",
                                    "type": "",
                                    "value": " & open auction not started"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28565:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28565:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28565:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28631:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28643:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28654:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28639:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28639:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28631:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28392:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28406:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28241:423:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28843:164:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28860:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28871:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28853:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28853:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28853:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28894:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28905:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28890:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28890:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28910:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28883:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28883:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28883:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28933:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28944:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28929:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28929:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28949:16:46",
                                    "type": "",
                                    "value": "Invalid signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28922:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28922:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28922:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28975:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28987:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28998:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28983:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28983:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28975:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28820:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28834:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28669:338:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29186:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29203:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29214:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29196:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29196:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29196:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29237:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29248:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29233:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29233:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29253:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29226:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29226:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29226:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29276:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29287:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29272:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29272:18:46"
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f7574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29292:34:46",
                                    "type": "",
                                    "value": "This edition is already sold out"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29265:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29265:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29265:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29347:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29358:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29343:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29343:18:46"
                                  },
                                  {
                                    "hexValue": "2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29363:3:46",
                                    "type": "",
                                    "value": "."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29336:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29336:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29336:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29376:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29388:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29399:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29384:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29384:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29376:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29163:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29177:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29012:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29541:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "29551:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29563:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29574:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29559:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29559:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29551:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29593:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "29608:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29616:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29604:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29604:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29586:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29586:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29586:42:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29648:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29659:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29644:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29644:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29664:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29637:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29637:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29637:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29502:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "29513:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29521:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29532:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29414:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29856:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29873:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29884:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29866:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29866:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29866:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29907:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29918:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29903:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29903:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29923:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29896:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29896:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29896:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29946:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29957:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29942:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29942:18:46"
                                  },
                                  {
                                    "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29962:31:46",
                                    "type": "",
                                    "value": "Insufficient balance for send"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29935:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29935:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29935:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30003:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30015:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30026:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30011:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30011:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30003:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29833:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29847:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29682:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30231:14:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30233:10:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "30240:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "30233:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "30215:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "30223:3:46",
                            "type": ""
                          }
                        ],
                        "src": "30040:205:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30424:239:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30441:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30452:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30434:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30434:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30434:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30475:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30486:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30471:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30491:2:46",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30464:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30464:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30514:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30525:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30510:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30510:18:46"
                                  },
                                  {
                                    "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30530:34:46",
                                    "type": "",
                                    "value": "Unable to send value: recipient "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30503:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30503:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30503:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30585:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30596:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30581:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30581:18:46"
                                  },
                                  {
                                    "hexValue": "6d61792068617665207265766572746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30601:19:46",
                                    "type": "",
                                    "value": "may have reverted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30574:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30574:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30630:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30642:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30653:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30638:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30638:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30630:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30401:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30415:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30250:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30842:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30859:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30870:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30852:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30852:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30852:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30893:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30904:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30889:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30909:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30882:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30882:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30882:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30932:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30943:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30928:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30928:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30948:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30921:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30921:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30921:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31003:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31014:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30999:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30999:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31019:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30992:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30992:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30992:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31036:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31048:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31059:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31044:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31044:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31036:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30819:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30833:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30668:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31248:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31265:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31276:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31258:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31258:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31258:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31299:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31310:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31295:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31295:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31315:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31288:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31288:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31288:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31338:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31349:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31334:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31334:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31354:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31327:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31327:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31327:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31409:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31420:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31405:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31405:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31425:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31398:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31398:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31441:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31453:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31464:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31449:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31449:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31441:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31225:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31239:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31074:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31653:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31670:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31681:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31663:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31663:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31663:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31704:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31715:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31700:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31700:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31720:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31693:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31693:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31693:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31743:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31754:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31739:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31739:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31759:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31732:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31732:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31732:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31814:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31825:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31810:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31810:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31830:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31803:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31803:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31803:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31853:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31865:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31876:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31861:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31861:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31853:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31630:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31644:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31479:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32065:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32082:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32093:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32075:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32075:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32075:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32116:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32127:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32112:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32112:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32132:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32105:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32105:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32105:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32155:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32166:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32151:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32151:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32171:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32144:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32144:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32144:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32208:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32220:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32231:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32216:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32216:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32208:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32042:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32056:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31891:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32419:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32436:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32447:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32429:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32429:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32429:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32470:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32481:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32466:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32466:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32486:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32459:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32459:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32459:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32509:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32520:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32505:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32505:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32525:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32498:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32498:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32498:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32580:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32591:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32576:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32576:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32596:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32569:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32569:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32569:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32626:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32638:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32649:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32634:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32634:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32626:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32396:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32410:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32245:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32702:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32725:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "32727:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32727:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32727:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "32722:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32715:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32715:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "32712:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32756:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "32765:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "32768:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "32761:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32761:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "32756:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "32687:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "32690:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "32696:1:46",
                            "type": ""
                          }
                        ],
                        "src": "32664:112:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32829:20:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "32838:3:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32843:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32831:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32831:16:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32831:16:46"
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_fba9",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "32820:3:46",
                            "type": ""
                          }
                        ],
                        "src": "32781:68:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33174:263:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33191:3:46"
                                  },
                                  {
                                    "hexValue": "68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33196:32:46",
                                    "type": "",
                                    "value": "https://metadata.sound.xyz/v1/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33184:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33184:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33184:45:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33238:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33258:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33252:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33252:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33242:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "33300:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33308:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33296:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33296:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "33319:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33324:2:46",
                                        "type": "",
                                        "value": "30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33315:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33315:12:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33329:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "33274:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33274:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33274:62:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33345:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33359:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33364:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33355:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33355:16:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33349:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33391:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33395:2:46",
                                        "type": "",
                                        "value": "30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33387:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33387:11:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33400:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33380:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33380:24:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33380:24:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33413:18:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33424:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33428:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33420:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33420:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "33413:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33150:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33155:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33166:3:46",
                            "type": ""
                          }
                        ],
                        "src": "32854:583:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33498:65:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33515:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33518:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33508:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33508:14:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33508:14:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33531:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33549:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33552:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "33539:9:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33539:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "33531:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "33481:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "33489:4:46",
                            "type": ""
                          }
                        ],
                        "src": "33442:121:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33842:1071:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33852:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33863:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulTypedName",
                                  "src": "33856:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33873:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33896:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33890:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33890:13:46"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "33877:9:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33912:17:46",
                              "value": {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "33926:3:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33916:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33938:11:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33948:1:46",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33942:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33958:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33972:2:46"
                                  },
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "33976:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33968:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33968:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "33958:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33995:44:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "34025:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34036:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "34021:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34021:18:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "33999:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34078:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34080:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "34094:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34102:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "34090:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34090:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "34080:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "34058:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "34051:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34051:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "34048:61:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34118:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34128:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "34122:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34189:115:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "34210:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "34219:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "34224:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "34215:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34215:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34203:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34203:33:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34203:33:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34256:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34259:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34249:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34249:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34249:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "34284:3:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34289:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "34277:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34277:17:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34277:17:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "34145:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "34168:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "34176:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "34165:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34165:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "34142:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34142:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "34139:165:46"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "34354:97:46",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34375:3:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34384:9:46"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "34399:3:46",
                                                      "type": "",
                                                      "value": "255"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34395:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "34395:8:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "34380:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "34380:24:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "34368:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34368:37:46"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "34368:37:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "34418:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34429:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34434:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34425:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34425:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "34418:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "34347:104:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34352:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "34467:313:46",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "34481:52:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "value0",
                                              "nodeType": "YulIdentifier",
                                              "src": "34526:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "34496:29:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34496:37:46"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "34485:7:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "34546:10:46",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34555:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "34550:1:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "34623:111:46",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34652:3:46"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34657:1:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "34648:3:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "34648:11:46"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34667:7:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "34661:5:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "34661:14:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34641:6:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34641:35:46"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "34641:35:46"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "34693:27:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34708:7:46"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34717:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34704:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34704:16:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34693:7:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "34580:1:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34583:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "34577:2:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34577:13:46"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "34591:19:46",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "34593:15:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34602:1:46"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34605:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34598:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34598:10:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34593:1:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "34573:3:46",
                                          "statements": []
                                        },
                                        "src": "34569:165:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "34747:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34758:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34763:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34754:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34754:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "34747:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "34460:320:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34465:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "outOfPlaceEncoding",
                                "nodeType": "YulIdentifier",
                                "src": "34320:18:46"
                              },
                              "nodeType": "YulSwitch",
                              "src": "34313:467:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34789:43:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34820:6:46"
                                  },
                                  {
                                    "name": "ret",
                                    "nodeType": "YulIdentifier",
                                    "src": "34828:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "34802:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34802:30:46"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34793:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34871:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_fba9",
                                  "nodeType": "YulIdentifier",
                                  "src": "34841:29:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34841:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34841:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34886:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34897:5:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34904:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34893:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34893:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "34886:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33810:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "33815:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33823:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33834:3:46",
                            "type": ""
                          }
                        ],
                        "src": "33568:1345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35092:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35109:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35120:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35102:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35102:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35102:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35143:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35154:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35139:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35139:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35159:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35132:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35132:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35132:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35182:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35193:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35178:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35178:18:46"
                                  },
                                  {
                                    "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35198:27:46",
                                    "type": "",
                                    "value": "Ticket number exceeds max"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35171:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35171:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35171:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35235:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35247:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35258:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35243:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35243:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35235:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35069:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35083:4:46",
                            "type": ""
                          }
                        ],
                        "src": "34918:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35446:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35463:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35474:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35456:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35456:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35456:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35497:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35508:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35493:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35493:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35513:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35486:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35486:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35486:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35536:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35547:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35532:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35532:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35552:34:46",
                                    "type": "",
                                    "value": "Invalid ticket number or NFT alr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35525:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35525:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35525:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35607:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35618:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35603:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35603:18:46"
                                  },
                                  {
                                    "hexValue": "6561647920636c61696d6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35623:14:46",
                                    "type": "",
                                    "value": "eady claimed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35596:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35596:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35596:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35647:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35659:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35670:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35655:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35655:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35647:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35423:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35437:4:46",
                            "type": ""
                          }
                        ],
                        "src": "35272:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35898:306:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35908:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35920:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35931:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35916:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35916:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35908:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35951:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "35962:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35944:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35944:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35944:25:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35978:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35996:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36001:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "35992:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35992:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36005:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "35988:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35988:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "35982:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36027:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36038:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36023:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36023:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36047:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36055:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36043:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36043:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36016:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36016:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36016:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36079:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36090:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36075:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36075:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "36099:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36107:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36095:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36095:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36068:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36068:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36068:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36131:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36142:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36127:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36127:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "36147:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36120:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36120:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36120:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36174:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36185:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36170:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36170:19:46"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "36191:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36163:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36163:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36163:35:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35835:9:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "35846:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "35854:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35862:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35870:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35878:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35889:4:46",
                            "type": ""
                          }
                        ],
                        "src": "35685:519:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36457:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "36474:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36483:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36488:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "36479:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36479:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36467:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36467:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36467:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "36514:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36519:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36510:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36510:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36523:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36503:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36503:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36503:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "36550:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36555:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36546:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36546:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36560:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36539:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36539:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36539:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36576:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "36587:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36592:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36583:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36583:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "36576:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "36425:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36430:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36438:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "36449:3:46",
                            "type": ""
                          }
                        ],
                        "src": "36209:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36780:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36797:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36808:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36790:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36790:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36790:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36831:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36842:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36827:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36827:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36847:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36820:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36820:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36820:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36870:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36881:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36866:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36866:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36886:34:46",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36859:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36859:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36859:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36930:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36942:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36953:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36938:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36938:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36930:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36757:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36771:4:46",
                            "type": ""
                          }
                        ],
                        "src": "36606:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37141:178:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37158:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37169:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37151:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37151:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37151:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37192:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37203:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37188:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37208:2:46",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37181:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37181:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37181:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37231:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37242:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37227:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37227:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "37247:30:46",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37220:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37220:58:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37220:58:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37287:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37299:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37310:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37295:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37295:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37287:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37118:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37132:4:46",
                            "type": ""
                          }
                        ],
                        "src": "36967:352:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37527:297:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37537:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37555:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37560:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "37551:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37551:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37564:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "37547:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37547:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37541:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37582:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "37597:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37605:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37593:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37593:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37575:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37575:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37575:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37629:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37640:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37625:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37625:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37649:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37657:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37645:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37645:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37618:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37618:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37618:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37681:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37692:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37677:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37677:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "37697:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37670:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37670:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37670:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37724:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37735:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37720:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37720:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37740:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37713:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37713:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37713:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37753:65:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "37790:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37802:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37813:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37798:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37798:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "37761:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37761:57:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37753:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37472:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "37483:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "37491:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "37499:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37507:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37518:4:46",
                            "type": ""
                          }
                        ],
                        "src": "37324:500:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37909:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37955:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37964:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37967:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "37957:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37957:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37957:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "37930:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37939:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "37926:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37926:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37951:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "37922:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37922:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "37919:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37980:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37999:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37993:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37993:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "37984:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38042:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "38018:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38018:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38018:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38057:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "38067:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "38057:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37875:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "37886:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37898:6:46",
                            "type": ""
                          }
                        ],
                        "src": "37829:249:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38130:89:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38157:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "38159:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38159:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38159:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38150:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "38143:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38143:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "38140:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38188:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38199:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38210:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "38206:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38206:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38195:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38195:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "38188:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "38112:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "38122:3:46",
                            "type": ""
                          }
                        ],
                        "src": "38083:136:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38398:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38415:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38426:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38408:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38408:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38408:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38449:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38460:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38445:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38445:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38465:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38438:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38438:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38438:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38488:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38499:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38484:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38484:18:46"
                                  },
                                  {
                                    "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38504:34:46",
                                    "type": "",
                                    "value": "Strings: hex length insufficient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38477:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38477:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38477:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38548:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38560:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38571:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38556:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38556:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "38548:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "38375:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "38389:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38224:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38759:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38776:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38787:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38769:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38769:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38769:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38810:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38821:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38806:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38806:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38826:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38799:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38799:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38799:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38849:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38860:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38845:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38845:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38865:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38838:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38838:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38838:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38901:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38913:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38924:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38909:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38909:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "38901:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "38736:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "38750:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38585:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39112:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39129:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39140:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39122:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39122:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39122:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39163:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39174:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39159:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39159:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39179:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39152:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39152:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39152:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39202:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39213:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39198:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39198:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39218:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39191:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39191:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39191:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39261:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39273:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39284:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39269:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39269:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39261:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39089:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39103:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38938:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39472:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39489:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39500:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39482:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39482:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39482:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39523:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39534:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39519:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39519:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39539:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39512:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39512:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39512:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39562:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39573:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39558:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39558:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39578:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39551:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39551:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39551:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39633:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39644:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39629:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39629:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39649:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39622:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39622:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39622:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39663:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39675:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39686:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39671:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39671:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39663:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39449:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39463:4:46",
                            "type": ""
                          }
                        ],
                        "src": "39298:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39875:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39892:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39903:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39885:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39885:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39885:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39926:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39937:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39922:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39922:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39942:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39915:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39915:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39915:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39965:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39976:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39961:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39961:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39981:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39954:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39954:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39954:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40036:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40047:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40032:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40032:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "40052:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40025:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40025:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40025:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40066:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40078:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40089:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40074:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40074:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40066:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39852:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39866:4:46",
                            "type": ""
                          }
                        ],
                        "src": "39701:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40285:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "40295:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40307:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40318:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40303:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40303:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40295:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40338:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "40349:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40331:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40331:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40331:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40376:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40387:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40372:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40372:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "40396:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40404:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "40392:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40392:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40365:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40365:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40365:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40430:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40441:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40426:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40426:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "40446:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40419:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40419:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40484:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40469:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "40489:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40462:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40462:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40462:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "40230:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "40241:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "40249:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "40257:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "40265:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "40276:4:46",
                            "type": ""
                          }
                        ],
                        "src": "40104:398:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string_memory_ptr(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_memory_ptr(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 320\n        let _2 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _2))\n        mstore(add(headStart, 32), value1)\n        let _3 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _3))\n        mstore(add(headStart, 96), and(value3, _3))\n        mstore(add(headStart, 128), and(value4, _3))\n        mstore(add(headStart, 160), and(value5, _3))\n        mstore(add(headStart, 192), and(value6, _3))\n        mstore(add(headStart, 224), and(value7, _3))\n        mstore(add(headStart, 256), and(value8, _2))\n        mstore(add(headStart, 288), _1)\n        tail := abi_encode_string_memory_ptr(value9, add(headStart, _1))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value1 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9\n    {\n        if slt(sub(dataEnd, headStart), 320) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        value4 := abi_decode_uint32(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint32(add(headStart, 192))\n        let value_1 := calldataload(add(headStart, 224))\n        validator_revert_address(value_1)\n        value7 := value_1\n        value8 := calldataload(add(headStart, 256))\n        let offset := calldataload(add(headStart, 288))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value9 := abi_decode_string(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        value3 := calldataload(add(headStart, 64))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"unsupported chain\")\n        tail := add(headStart, 96)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"unauthorized\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Edition must have a signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Signer address cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Nonexistent edition\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), value2)\n        calldatacopy(add(headStart, 96), value1, value2)\n        mstore(add(add(headStart, value2), 96), 0)\n        tail := add(add(headStart, and(add(value2, 31), not(31))), 96)\n    }\n    function abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Must set quantity\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Must set fundingRecipient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"End time must be greater than st\")\n        mstore(add(headStart, 96), \"art time\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Wrong edition ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _1))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_enum$_TimeType_$10410_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        if iszero(lt(value0, 2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        mstore(end_2, \"/metadata.json\")\n        end := add(end_2, 14)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, \"storefront\")\n        end := add(end_1, 10)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Edition does not exist\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"Must send enough to purchase the\")\n        mstore(add(headStart, 96), \" edition.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Auction has ended\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 59)\n        mstore(add(headStart, 64), \"No permissioned tokens available\")\n        mstore(add(headStart, 96), \" & open auction not started\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"This edition is already sold out\")\n        mstore(add(headStart, 96), \".\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Insufficient balance for send\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Unable to send value: recipient \")\n        mstore(add(headStart, 96), \"may have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function abi_encode_stringliteral_fba9(pos)\n    { mstore(pos, \"/\") }\n    function abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, \"https://metadata.sound.xyz/v1/\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 30), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 30), \"/\")\n        end := add(_1, 31)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let ret := 0\n        let slotValue := sload(value0)\n        let length := ret\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        let _2 := 32\n        if eq(outOfPlaceEncoding, lt(length, _2))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(ret, 0x24)\n        }\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, length)\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value0)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n        let pos_1 := abi_encode_string(value1, ret)\n        abi_encode_stringliteral_fba9(pos_1)\n        end := add(pos_1, _1)\n    }\n    function abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Ticket number exceeds max\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Invalid ticket number or NFT alr\")\n        mstore(add(headStart, 96), \"eady claimed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string_memory_ptr(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\n    }\n    function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Strings: hex length insufficient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "10417": [
                  {
                    "length": 32,
                    "start": 1192
                  },
                  {
                    "length": 32,
                    "start": 11648
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106102725760003560e01c8063602787ed1161014f578063a22cb465116100c1578063e1a3d5731161007a578063e1a3d573146107e9578063e8a3d48514610816578063e985e9c51461082b578063f2fde38b14610874578063f71e54fb14610894578063fbab9e04146108a757600080fd5b8063a22cb4651461071c578063b88d4fde1461073c578063bb314ca11461075c578063c87b56dd1461077c578063d3bb05281461079c578063d547741f146107c957600080fd5b8063796726921161011357806379672692146106725780638da5cb5b146106925780638e116aea146106b057806391d14854146106d057806395d89b41146106f05780639725d92e1461070557600080fd5b8063602787ed146105d05780636352211e146105f057806370a082311461061057806375a8f08f1461063057806375b238fc1461065057600080fd5b80632a55205a116101e85780634bf44026116101ac5780634bf44026146105015780635076a64d1461051657806352e25bf21461054357806352f5c2e41461056357806356dee996146105905780635f1e6f6d146105b057600080fd5b80632a55205a146104375780632f2ff15d146104765780633644e515146104965780633ef2dbc2146104ca57806342842e0e146104e157600080fd5b80630bcca8311161023a5780630bcca83114610355578063155dd5ee1461036a57806318160ddd1461038a57806323b872dd146103ad57806327399d36146103cd578063279c806e1461040157600080fd5b806301ffc9a714610277578063065d5b85146102ac57806306fdde03146102d9578063081812fc146102fb578063095ea7b314610333575b600080fd5b34801561028357600080fd5b5061029761029236600461371f565b6108c7565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004613780565b6108f2565b6040516102a391906137cb565b3480156102e557600080fd5b506102ee6109de565b6040516102a39190613869565b34801561030757600080fd5b5061031b61031636600461387c565b610a70565b6040516001600160a01b0390911681526020016102a3565b34801561033f57600080fd5b5061035361034e3660046138aa565b610a97565b005b34801561036157600080fd5b5061031b610bb1565b34801561037657600080fd5b5061035361038536600461387c565b610c31565b34801561039657600080fd5b5061039f610c91565b6040519081526020016102a3565b3480156103b957600080fd5b506103536103c83660046138d6565b610cdd565b3480156103d957600080fd5b5061039f7fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e881565b34801561040d57600080fd5b5061042161041c36600461387c565b610d0e565b6040516102a39a99989796959493929190613917565b34801561044357600080fd5b50610457610452366004613992565b610e0e565b604080516001600160a01b0390931683526020830191909152016102a3565b34801561048257600080fd5b506103536104913660046139b4565b610fb0565b3480156104a257600080fd5b5061039f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d657600080fd5b5060ca5461039f9081565b3480156104ed57600080fd5b506103536104fc3660046138d6565b611060565b34801561050d57600080fd5b5061039f61107b565b34801561052257600080fd5b5061039f61053136600461387c565b60cd6020526000908152604090205481565b34801561054f57600080fd5b5061035361055e3660046139fd565b611097565b34801561056f57600080fd5b5061058361057e366004613a29565b6111cf565b6040516102a39190613a6a565b34801561059c57600080fd5b506103536105ab3660046139b4565b611287565b3480156105bc57600080fd5b506103536105cb366004613b56565b6113a5565b3480156105dc57600080fd5b5061039f6105eb36600461387c565b6114f8565b3480156105fc57600080fd5b5061031b61060b36600461387c565b61151a565b34801561061c57600080fd5b5061039f61062b366004613bf0565b61157a565b34801561063c57600080fd5b5061035361064b366004613bf0565b611600565b34801561065c57600080fd5b5061039f60008051602061438e83398151915281565b34801561067e57600080fd5b5061035361068d366004613c4e565b611659565b34801561069e57600080fd5b506097546001600160a01b031661031b565b3480156106bc57600080fd5b506103536106cb366004613c8c565b6117a4565b3480156106dc57600080fd5b506102976106eb3660046139b4565b611c06565b3480156106fc57600080fd5b506102ee611c31565b34801561071157600080fd5b5060cb5461039f9081565b34801561072857600080fd5b50610353610737366004613d56565b611c40565b34801561074857600080fd5b50610353610757366004613d89565b611c4b565b34801561076857600080fd5b506103536107773660046139fd565b611c83565b34801561078857600080fd5b506102ee61079736600461387c565b611d4b565b3480156107a857600080fd5b5061039f6107b736600461387c565b60cf6020526000908152604090205481565b3480156107d557600080fd5b506103536107e43660046139b4565b611ed5565b3480156107f557600080fd5b5061039f61080436600461387c565b60ce6020526000908152604090205481565b34801561082257600080fd5b506102ee611f66565b34801561083757600080fd5b50610297610846366004613dfc565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561088057600080fd5b5061035361088f366004613bf0565b611f94565b6103536108a2366004613e2a565b612023565b3480156108b357600080fd5b506103536108c23660046139fd565b6123f6565b600063152a902d60e11b6001600160e01b0319831614806108ec57506108ec826124bd565b92915050565b60606000826001600160401b0381111561090e5761090e613aab565b604051908082528060200260200182016040528015610937578160200160208202803683370190505b50905060005b838110156109d55760006109978787878581811061095d5761095d613e7c565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106109b2576109b2613e7c565b9115156020928302919091019091015250806109cd81613ea8565b91505061093d565b50949350505050565b6060606580546109ed90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1990613ec1565b8015610a665780601f10610a3b57610100808354040283529160200191610a66565b820191906000526020600020905b815481529060010190602001808311610a4957829003601f168201915b5050505050905090565b6000610a7b8261250d565b506000908152606960205260409020546001600160a01b031690565b6000610aa28261151a565b9050806001600160a01b0316836001600160a01b031603610b145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b305750610b308133610846565b610ba25760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610b0b565b610bac838361256c565b505050565b600046600103610bd4575073858a92511485715cfb754f397a7894b7724c7abd90565b46600403610bf5575073ee35e946dd73ef78d352454c3f915e2ca0a09d8790565b60405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b21031b430b4b760791b6044820152606401610b0b565b600081815260cf602090815260408083205460ce909252822054610c559190613ef5565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610c8d906001600160a01b0316826125da565b5050565b60008060015b60cb54811015610cd757600081815260cc6020526040902060020154610cc39063ffffffff1683613f0c565b915080610ccf81613ea8565b915050610c97565b50919050565b610ce733826126e7565b610d035760405162461bcd60e51b8152600401610b0b90613f24565b610bac838383612766565b60cc60205260009081526040902080546001820154600283015460038401546004850180546001600160a01b0395861696949563ffffffff808616966401000000008704821696600160401b8104831696600160601b8204841696600160801b8304851696600160a01b90930490941694169290610d8b90613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db790613ec1565b8015610e045780601f10610dd957610100808354040283529160200191610e04565b820191906000526020600020905b815481529060010190602001808311610de757829003601f168201915b505050505090508a565b6000806000610e1c856114f8565b600081815260cc6020908152604080832081516101408101835281546001600160a01b039081168252600183015494820194909452600282015463ffffffff80821694830194909452640100000000810484166060830152600160401b810484166080830152600160601b8104841660a0830152600160801b8104841660c0830152600160a01b900490921660e0830152600381015490921661010082015260048201805494955092939092610120840191610ed790613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613ec1565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050509190925250508151919250506001600160a01b0316610f7a5751925060009150610fa99050565b6080810151815163ffffffff90911690612710610f978389613f72565b610fa19190613fa7565b945094505050505b9250929050565b6097546001600160a01b03163314610fda5760405162461bcd60e51b8152600401610b0b90613fbb565b610fe48282611c06565b610c8d5760008281526098602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561101c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610bac83838360405180602001604052806000815250611c4b565b6000600161108860cb5490565b6110929190613ef5565b905090565b60008051602061438e8339815191526110b86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806110dc57506110dc8133611c06565b6110f85760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc60205260409020600301546001600160a01b031661115f5760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610b0b565b600083815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8716908102919091179091558251868152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a1505050565b60606000826001600160401b038111156111eb576111eb613aab565b604051908082528060200260200182016040528015611214578160200160208202803683370190505b50905060005b8381101561127f5761124385858381811061123757611237613e7c565b9050602002013561151a565b82828151811061125557611255613e7c565b6001600160a01b03909216602092830291909101909101528061127781613ea8565b91505061121a565b509392505050565b60008051602061438e8339815191526112a86097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806112cc57506112cc8133611c06565b6112e85760405162461bcd60e51b8152600401610b0b90613ff0565b6001600160a01b03821661133e5760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b600083815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03861690811790915591518581527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a2505050565b600054610100900460ff16158080156113c55750600054600160ff909116105b806113df5750303b1580156113df575060005460ff166001145b6114425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b0b565b6000805460ff191660011790558015611465576000805461ff0019166101001790555b61146f8484612902565b611477612933565b61148085611f94565b4660011461149d57815161149b9060c9906020850190613600565b505b6114ab60cb80546001019055565b80156114f1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000608082901c8082036108ec575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806108ec5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b60006001600160a01b0382166115e45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b0b565b506001600160a01b031660009081526068602052604090205490565b611608610bb1565b6001600160a01b0316336001600160a01b0316148061163157506097546001600160a01b031633145b61164d5760405162461bcd60e51b8152600401610b0b90613ff0565b6116568161296c565b50565b60008051602061438e83398151915261167a6097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061169e575061169e8133611c06565b6116ba5760405162461bcd60e51b8152600401610b0b90613ff0565b600084815260cc6020526040902060020154640100000000900463ffffffff161515806117045750600084815260cc6020526040902060020154600160a01b900463ffffffff1615155b6117465760405162461bcd60e51b81526020600482015260136024820152722737b732bc34b9ba32b73a1032b234ba34b7b760691b6044820152606401610b0b565b600084815260cc60205260409020611762906004018484613680565b507f1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd41258984848460405161179693929190614016565b60405180910390a150505050565b60008051602061438e8339815191526117c56097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806117e957506117e98133611c06565b6118055760405162461bcd60e51b8152600401610b0b90613ff0565b60008963ffffffff161161184f5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610b0b565b6001600160a01b038b166118a55760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610b0b565b8663ffffffff168663ffffffff16116119115760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610b0b565b60cb5483146119555760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c819591a5d1a5bdb88125160821b6044820152606401610b0b565b63ffffffff8516156119b7576001600160a01b0384166119b75760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b0b565b6040518061014001604052808c6001600160a01b031681526020018b8152602001600063ffffffff1681526020018a63ffffffff1681526020018963ffffffff1681526020018863ffffffff1681526020018763ffffffff1681526020018663ffffffff168152602001856001600160a01b031681526020018381525060cc6000611a4160cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355858501516001840155928501516002830180546060880151608089015160a08a015160c08b015160e08c015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b939091169290920291909117905561010085015160038301805490941691161790915561012083015180519192611b6b92600485019290910190613600565b505060cb54604080516001600160a01b038f81168252602082018f905263ffffffff8e8116838501528d811660608401528c811660808401528b811660a08401528a1660c0830152881660e082015290519192507fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f391908190036101000190a2611bf960cb80546001019055565b5050505050505050505050565b60009182526098602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060606680546109ed90613ec1565b610c8d3383836129be565b611c5533836126e7565b611c715760405162461bcd60e51b8152600401610b0b90613f24565b611c7d84848484612a8c565b50505050565b60008051602061438e833981519152611ca46097546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611cc85750611cc88133611c06565b611ce45760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff86169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c90611398906001908790614062565b6000818152606760205260409020546060906001600160a01b0316611dca5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b0b565b6000611dd5836114f8565b600081815260cc6020526040812060040180549293509091611df690613ec1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2290613ec1565b8015611e6f5780601f10611e4457610100808354040283529160200191611e6f565b820191906000526020600020905b815481529060010190602001808311611e5257829003601f168201915b50505050509050600381511115611eb35780611e8a85612abf565b604051602001611e9b9291906140aa565b60405160208183030381529060405292505050919050565b611ebb612bbf565b611ec485612abf565b604051602001611e9b9291906140f2565b6097546001600160a01b03163314611eff5760405162461bcd60e51b8152600401610b0b90613fbb565b611f098282611c06565b15610c8d5760008281526098602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060611f70612bbf565b604051602001611f809190614121565b604051602081830303815290604052905090565b6097546001600160a01b03163314611fbe5760405162461bcd60e51b8152600401610b0b90613fbb565b6001600160a01b03811661164d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0b565b600084815260cc60205260408120600180820154600290920154919263ffffffff6401000000008404811693169161205c90839061414f565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166120dc5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610b0b565b8634101561213e5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610b0b565b428263ffffffff16116121875760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610b0b565b428363ffffffff161115612289578063ffffffff168563ffffffff16106122165760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610b0b565b60008b815260cc60205260409020600301546001600160a01b031661223d8b8b8e8c612c16565b6001600160a01b0316146122845760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610b0b565b6122ee565b8563ffffffff168563ffffffff16106122ee5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610b0b565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b1761232d6097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b039182169116036123775760008c815260ce60205260408120805434929061236c908490613f0c565b909155506123999050565b60008c815260cc6020526040902054612399906001600160a01b0316346125da565b6123a33382612e16565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b60008051602061438e8339815191526124176097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061243b575061243b8133611c06565b6124575760405162461bcd60e51b8152600401610b0b90613ff0565b600083815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff871690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c9161139891908790614062565b60006001600160e01b031982166380ac58cd60e01b14806124ee57506001600160e01b03198216635b5e139f60e01b145b806108ec57506301ffc9a760e01b6001600160e01b03198316146108ec565b6000818152606760205260409020546001600160a01b03166116565760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b0b565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125a18261151a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b8047101561262a5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610b0b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612677576040519150601f19603f3d011682016040523d82523d6000602084013e61267c565b606091505b5050905080610bac5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610b0b565b6000806126f38361151a565b9050806001600160a01b0316846001600160a01b0316148061273a57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061275e5750836001600160a01b031661275384610a70565b6001600160a01b0316145b949350505050565b826001600160a01b03166127798261151a565b6001600160a01b0316146127dd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b0b565b6001600160a01b03821661283f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0b565b61284a60008261256c565b6001600160a01b0383166000908152606860205260408120805460019290612873908490613ef5565b90915550506001600160a01b03821660009081526068602052604081208054600192906128a1908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff166129295760405162461bcd60e51b8152600401610b0b9061416e565b610c8d8282612f58565b600054610100900460ff1661295a5760405162461bcd60e51b8152600401610b0b9061416e565b612962612fa6565b61296a612fcd565b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603612a1f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b0b565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a97848484612766565b612aa384848484612ffd565b611c7d5760405162461bcd60e51b8152600401610b0b906141b9565b606081600003612ae65750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612b105780612afa81613ea8565b9150612b099050600a83613fa7565b9150612aea565b6000816001600160401b03811115612b2a57612b2a613aab565b6040519080825280601f01601f191660200182016040528015612b54576020820181803683370190505b5090505b841561275e57612b69600183613ef5565b9150612b76600a8661420b565b612b81906030613f0c565b60f81b818381518110612b9657612b96613e7c565b60200101906001600160f81b031916908160001a905350612bb8600a86613fa7565b9450612b58565b60606000612bce3060146130fb565b905046600103612bfe5780604051602001612be9919061421f565b60405160208183030381529060405291505090565b60c981604051602001612be992919061426f565b5090565b60006401000000008210612c6c5760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d6178000000000000006044820152606401610b0b565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c600116928315612cf95760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b6064820152608401610b0b565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e283015261010282015261012201604051602081830303815290604052805190602001209050612e088a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859392505061329d9050565b9a9950505050505050505050565b6001600160a01b038216612e6c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b0b565b6000818152606760205260409020546001600160a01b031615612ed15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b0b565b6001600160a01b0382166000908152606860205260408120805460019290612efa908490613f0c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16612f7f5760405162461bcd60e51b8152600401610b0b9061416e565b8151612f92906065906020850190613600565b508051610bac906066906020840190613600565b600054610100900460ff1661296a5760405162461bcd60e51b8152600401610b0b9061416e565b600054610100900460ff16612ff45760405162461bcd60e51b8152600401610b0b9061416e565b61296a3361296c565b60006001600160a01b0384163b156130f357604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061304190339089908890889060040161431c565b6020604051808303816000875af192505050801561307c575060408051601f3d908101601f1916820190925261307991810190614359565b60015b6130d9573d8080156130aa576040519150601f19603f3d011682016040523d82523d6000602084013e6130af565b606091505b5080516000036130d15760405162461bcd60e51b8152600401610b0b906141b9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061275e565b50600161275e565b6060600061310a836002613f72565b613115906002613f0c565b6001600160401b0381111561312c5761312c613aab565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b509050600360fc1b8160008151811061317157613171613e7c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131a0576131a0613e7c565b60200101906001600160f81b031916908160001a90535060006131c4846002613f72565b6131cf906001613f0c565b90505b6001811115613247576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061320357613203613e7c565b1a60f81b82828151811061321957613219613e7c565b60200101906001600160f81b031916908160001a90535060049490941c9361324081614376565b90506131d2565b5083156132965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b0b565b9392505050565b60008060006132ac85856132b9565b9150915061127f81613324565b60008082516041036132ef5760208301516040840151606085015160001a6132e3878285856134da565b94509450505050610fa9565b8251604003613318576020830151604084015161330d8683836135c7565b935093505050610fa9565b50600090506002610fa9565b60008160048111156133385761333861404c565b036133405750565b60018160048111156133545761335461404c565b036133a15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b0b565b60028160048111156133b5576133b561404c565b036134025760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b0b565b60038160048111156134165761341661404c565b0361346e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b0b565b60048160048111156134825761348261404c565b036116565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b0b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561351157506000905060036135be565b8460ff16601b1415801561352957508460ff16601c14155b1561353a57506000905060046135be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561358e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166135b7576000600192509250506135be565b9150600090505b94509492505050565b6000806001600160ff1b038316816135e460ff86901c601b613f0c565b90506135f2878288856134da565b935093505050935093915050565b82805461360c90613ec1565b90600052602060002090601f01602090048101928261362e5760008555613674565b82601f1061364757805160ff1916838001178555613674565b82800160010185558215613674579182015b82811115613674578251825591602001919060010190613659565b50612c129291506136f4565b82805461368c90613ec1565b90600052602060002090601f0160209004810192826136ae5760008555613674565b82601f106136c75782800160ff19823516178555613674565b82800160010185558215613674579182015b828111156136745782358255916020019190600101906136d9565b5b80821115612c1257600081556001016136f5565b6001600160e01b03198116811461165657600080fd5b60006020828403121561373157600080fd5b813561329681613709565b60008083601f84011261374e57600080fd5b5081356001600160401b0381111561376557600080fd5b6020830191508360208260051b8501011115610fa957600080fd5b60008060006040848603121561379557600080fd5b8335925060208401356001600160401b038111156137b257600080fd5b6137be8682870161373c565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783511515835292840192918401916001016137e7565b50909695505050505050565b60005b8381101561382c578181015183820152602001613814565b83811115611c7d5750506000910152565b60008151808452613855816020860160208601613811565b601f01601f19169290920160200192915050565b602081526000613296602083018461383d565b60006020828403121561388e57600080fd5b5035919050565b6001600160a01b038116811461165657600080fd5b600080604083850312156138bd57600080fd5b82356138c881613895565b946020939093013593505050565b6000806000606084860312156138eb57600080fd5b83356138f681613895565b9250602084013561390681613895565b929592945050506040919091013590565b6001600160a01b038b81168252602082018b905263ffffffff8a811660408401528981166060840152888116608084015287811660a084015286811660c0840152851660e0830152831661010082015261014061012082018190526000906139818382018561383d565b9d9c50505050505050505050505050565b600080604083850312156139a557600080fd5b50508035926020909101359150565b600080604083850312156139c757600080fd5b8235915060208301356139d981613895565b809150509250929050565b803563ffffffff811681146139f857600080fd5b919050565b60008060408385031215613a1057600080fd5b82359150613a20602084016139e4565b90509250929050565b60008060208385031215613a3c57600080fd5b82356001600160401b03811115613a5257600080fd5b613a5e8582860161373c565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156138055783516001600160a01b031683529284019291840191600101613a86565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115613adb57613adb613aab565b604051601f8501601f19908116603f01168101908282118183101715613b0357613b03613aab565b81604052809350858152868686011115613b1c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613b4757600080fd5b61329683833560208501613ac1565b60008060008060808587031215613b6c57600080fd5b8435613b7781613895565b935060208501356001600160401b0380821115613b9357600080fd5b613b9f88838901613b36565b94506040870135915080821115613bb557600080fd5b613bc188838901613b36565b93506060870135915080821115613bd757600080fd5b50613be487828801613b36565b91505092959194509250565b600060208284031215613c0257600080fd5b813561329681613895565b60008083601f840112613c1f57600080fd5b5081356001600160401b03811115613c3657600080fd5b602083019150836020828501011115610fa957600080fd5b600080600060408486031215613c6357600080fd5b8335925060208401356001600160401b03811115613c8057600080fd5b6137be86828701613c0d565b6000806000806000806000806000806101408b8d031215613cac57600080fd5b8a35613cb781613895565b995060208b01359850613ccc60408c016139e4565b9750613cda60608c016139e4565b9650613ce860808c016139e4565b9550613cf660a08c016139e4565b9450613d0460c08c016139e4565b935060e08b0135613d1481613895565b92506101008b013591506101208b01356001600160401b03811115613d3857600080fd5b613d448d828e01613b36565b9150509295989b9194979a5092959850565b60008060408385031215613d6957600080fd5b8235613d7481613895565b9150602083013580151581146139d957600080fd5b60008060008060808587031215613d9f57600080fd5b8435613daa81613895565b93506020850135613dba81613895565b92506040850135915060608501356001600160401b03811115613ddc57600080fd5b8501601f81018713613ded57600080fd5b613be487823560208401613ac1565b60008060408385031215613e0f57600080fd5b8235613e1a81613895565b915060208301356139d981613895565b60008060008060608587031215613e4057600080fd5b8435935060208501356001600160401b03811115613e5d57600080fd5b613e6987828801613c0d565b9598909750949560400135949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613eba57613eba613e92565b5060010190565b600181811c90821680613ed557607f821691505b602082108103610cd757634e487b7160e01b600052602260045260246000fd5b600082821015613f0757613f07613e92565b500390565b60008219821115613f1f57613f1f613e92565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615613f8c57613f8c613e92565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613fb657613fb6613f91565b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052602160045260246000fd5b604081016002841061408457634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600081516140a0818560208601613811565b9290920192915050565b600083516140bc818460208801613811565b8351908301906140d0818360208801613811565b6d17b6b2ba30b230ba30973539b7b760911b9101908152600e01949350505050565b60008351614104818460208801613811565b835190830190614118818360208801613811565b01949350505050565b60008251614133818460208701613811565b691cdd1bdc99599c9bdb9d60b21b920191825250600a01919050565b600063ffffffff80831681851680830382111561411857614118613e92565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261421a5761421a613f91565b500690565b7f68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f000081526000825161425781601e850160208701613811565b602f60f81b601e939091019283015250601f01919050565b600080845481600182811c91508083168061428b57607f831692505b602080841082036142aa57634e487b7160e01b86526022600452602486fd5b8180156142be57600181146142cf576142fc565b60ff198616895284890196506142fc565b60008b81526020902060005b868110156142f45781548b8201529085019083016142db565b505084890196505b505050614309848861408e565b602f60f81b815201979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061434f9083018461383d565b9695505050505050565b60006020828403121561436b57600080fd5b815161329681613709565b60008161438557614385613e92565b50600019019056fedf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42a2646970667358221220acd39579e26673a413bc1c849a245ca8f029d742d73ab5317d8a0e04090fb47364736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x272 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x602787ED GT PUSH2 0x14F JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x7E9 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x874 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x894 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x77C JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x79C JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79672692 GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x79672692 EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x8E116AEA EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0x9725D92E EQ PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x602787ED EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x75A8F08F EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4BF44026 GT PUSH2 0x1AC JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x5076A64D EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0x5F1E6F6D EQ PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x3EF2DBC2 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCCA831 GT PUSH2 0x23A JUMPI DUP1 PUSH4 0xBCCA831 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x27399D36 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x333 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x371F JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CC PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x37CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3869 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x34E CALLDATASIZE PUSH1 0x4 PUSH2 0x38AA JUMP JUMPDEST PUSH2 0xA97 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0xBB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x421 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457 PUSH2 0x452 CALLDATASIZE PUSH1 0x4 PUSH2 0x3992 JUMP JUMPDEST PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x38D6 JUMP JUMPDEST PUSH2 0x1060 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x107B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x522 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x531 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1097 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x583 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A29 JUMP JUMPDEST PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A3 SWAP2 SWAP1 PUSH2 0x3A6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5AB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x5CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3B56 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x5EB CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x14F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x60B CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x151A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x157A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4E JUMP JUMPDEST PUSH2 0x1659 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3C8C JUMP JUMPDEST PUSH2 0x17A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1C31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCB SLOAD PUSH2 0x39F SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x737 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D56 JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x757 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D89 JUMP JUMPDEST PUSH2 0x1C4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x797 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH2 0x1D4B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x7B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x7E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x1ED5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39F PUSH2 0x804 CALLDATASIZE PUSH1 0x4 PUSH2 0x387C JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x1F66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x297 PUSH2 0x846 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x88F CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF0 JUMP JUMPDEST PUSH2 0x1F94 JUMP JUMPDEST PUSH2 0x353 PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E2A JUMP JUMPDEST PUSH2 0x2023 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x353 PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39FD JUMP JUMPDEST PUSH2 0x23F6 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x8EC JUMPI POP PUSH2 0x8EC DUP3 PUSH2 0x24BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x90E JUMPI PUSH2 0x90E PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x937 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 PUSH2 0x997 DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x95D JUMPI PUSH2 0x95D PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9B2 JUMPI PUSH2 0x9B2 PUSH2 0x3E7C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0x9CD DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x93D JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA19 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA66 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA3B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA66 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA49 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7B DUP3 PUSH2 0x250D JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA2 DUP3 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0xB30 JUMPI POP PUSH2 0xB30 DUP2 CALLER PUSH2 0x846 JUMP JUMPDEST PUSH2 0xBA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 PUSH2 0x256C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH1 0x1 SUB PUSH2 0xBD4 JUMPI POP PUSH20 0x858A92511485715CFB754F397A7894B7724C7ABD SWAP1 JUMP JUMPDEST CHAINID PUSH1 0x4 SUB PUSH2 0xBF5 JUMPI POP PUSH20 0xEE35E946DD73EF78D352454C3F915E2CA0A09D87 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x3AB739BAB83837B93A32B21031B430B4B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xC8D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x25DA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCC3 SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x3F0C JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xCCF DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC97 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCE7 CALLER DUP3 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0xD03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH2 0x2766 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP7 SWAP5 SWAP6 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH5 0x100000000 DUP8 DIV DUP3 AND SWAP7 PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND SWAP7 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP5 AND SWAP7 PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP6 AND SWAP7 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV SWAP1 SWAP5 AND SWAP5 AND SWAP3 SWAP1 PUSH2 0xD8B SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xDB7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE04 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDD9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE04 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDE7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE1C DUP6 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH5 0x100000000 DUP2 DIV DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP5 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP3 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD DUP1 SLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP1 SWAP3 PUSH2 0x120 DUP5 ADD SWAP2 PUSH2 0xED7 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF03 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF50 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF25 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF50 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF33 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 SWAP1 SWAP3 MSTORE POP POP DUP2 MLOAD SWAP2 SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF7A JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xFA9 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xF97 DUP4 DUP10 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0xFA1 SWAP2 SWAP1 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0xFE4 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x101C CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1C4B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1088 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1092 SWAP2 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x10B8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x10DC JUMPI POP PUSH2 0x10DC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x11EB JUMPI PUSH2 0x11EB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1214 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x127F JUMPI PUSH2 0x1243 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0x3E7C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x151A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1255 JUMPI PUSH2 0x1255 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x1277 DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x121A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x12A8 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x12CC JUMPI POP PUSH2 0x12CC DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x12E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x133E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP6 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x13C5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x13DF JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13DF JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1442 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1465 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x146F DUP5 DUP5 PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x1477 PUSH2 0x2933 JUMP JUMPDEST PUSH2 0x1480 DUP6 PUSH2 0x1F94 JUMP JUMPDEST CHAINID PUSH1 0x1 EQ PUSH2 0x149D JUMPI DUP2 MLOAD PUSH2 0x149B SWAP1 PUSH1 0xC9 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP JUMPDEST PUSH2 0x14AB PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14F1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x8EC JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x8EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1608 PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1631 JUMPI POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH2 0x1656 DUP2 PUSH2 0x296C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x167A PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x169E JUMPI POP PUSH2 0x169E DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x16BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x1704 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x1746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x2737B732BC34B9BA32B73A1032B234BA34B7B7 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1762 SWAP1 PUSH1 0x4 ADD DUP5 DUP5 PUSH2 0x3680 JUMP JUMPDEST POP PUSH32 0x1A7FCE8987747A468A9FD9D320891F1519376DAB1BAEB8E72E8D4447FD412589 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1796 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x17C5 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x17E9 JUMPI POP PUSH2 0x17E9 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1805 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH4 0xFFFFFFFF AND GT PUSH2 0x184F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH2 0x18A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 PUSH4 0xFFFFFFFF AND DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1911 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0xCB SLOAD DUP4 EQ PUSH2 0x1955 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x15DC9BDB99C819591A5D1A5BDB881251 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND ISZERO PUSH2 0x19B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x1A41 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0xC0 DUP12 ADD MLOAD PUSH1 0xE0 DUP13 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP1 MLOAD SWAP2 SWAP3 PUSH2 0x1B6B SWAP3 PUSH1 0x4 DUP6 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP POP PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP15 DUP2 AND DUP4 DUP6 ADD MSTORE DUP14 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP13 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP12 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP11 AND PUSH1 0xC0 DUP4 ADD MSTORE DUP9 AND PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 LOG2 PUSH2 0x1BF9 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x9ED SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST PUSH2 0xC8D CALLER DUP4 DUP4 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1C55 CALLER DUP4 PUSH2 0x26E7 JUMP JUMPDEST PUSH2 0x1C71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3F24 JUMP JUMPDEST PUSH2 0x1C7D DUP5 DUP5 DUP5 DUP5 PUSH2 0x2A8C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1CA4 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1CC8 JUMPI POP PUSH2 0x1CC8 DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x1CE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x1398 SWAP1 PUSH1 0x1 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD5 DUP4 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x1DF6 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E22 SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1E6F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E44 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1E6F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E52 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x3 DUP2 MLOAD GT ISZERO PUSH2 0x1EB3 JUMPI DUP1 PUSH2 0x1E8A DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EBB PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x1EC4 DUP6 PUSH2 0x2ABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E9B SWAP3 SWAP2 SWAP1 PUSH2 0x40F2 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1EFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0x1F09 DUP3 DUP3 PUSH2 0x1C06 JUMP JUMPDEST ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F70 PUSH2 0x2BBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1F80 SWAP2 SWAP1 PUSH2 0x4121 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1FBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x164D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x205C SWAP1 DUP4 SWAP1 PUSH2 0x414F JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x20DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x213E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x2187 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2289 JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x2216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x223D DUP12 DUP12 DUP15 DUP13 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x22EE JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x22EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x232D PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x2377 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x236C SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2399 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2399 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x25DA JUMP JUMPDEST PUSH2 0x23A3 CALLER DUP3 PUSH2 0x2E16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x438E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2417 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x243B JUMPI POP PUSH2 0x243B DUP2 CALLER PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x2457 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x3FF0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x1398 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x24EE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x8EC JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x25A1 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2677 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x267C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x26F3 DUP4 PUSH2 0x151A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x273A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x275E JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2753 DUP5 PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2779 DUP3 PUSH2 0x151A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x27DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x283F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x284A PUSH1 0x0 DUP3 PUSH2 0x256C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2873 SWAP1 DUP5 SWAP1 PUSH2 0x3EF5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28A1 SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2929 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0xC8D DUP3 DUP3 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x295A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x2962 PUSH2 0x2FA6 JUMP JUMPDEST PUSH2 0x296A PUSH2 0x2FCD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2A97 DUP5 DUP5 DUP5 PUSH2 0x2766 JUMP JUMPDEST PUSH2 0x2AA3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2FFD JUMP JUMPDEST PUSH2 0x1C7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2AE6 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B10 JUMPI DUP1 PUSH2 0x2AFA DUP2 PUSH2 0x3EA8 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B09 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x3FA7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B2A JUMPI PUSH2 0x2B2A PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2B54 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x275E JUMPI PUSH2 0x2B69 PUSH1 0x1 DUP4 PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B76 PUSH1 0xA DUP7 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x2B81 SWAP1 PUSH1 0x30 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B96 JUMPI PUSH2 0x2B96 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2BB8 PUSH1 0xA DUP7 PUSH2 0x3FA7 JUMP JUMPDEST SWAP5 POP PUSH2 0x2B58 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2BCE ADDRESS PUSH1 0x14 PUSH2 0x30FB JUMP JUMPDEST SWAP1 POP CHAINID PUSH1 0x1 SUB PUSH2 0x2BFE JUMPI DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP2 SWAP1 PUSH2 0x421F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0xC9 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BE9 SWAP3 SWAP2 SWAP1 PUSH2 0x426F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x2CF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x2E08 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x329D SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E6C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2ED1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2EFA SWAP1 DUP5 SWAP1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2F7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2F92 SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xBAC SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x3600 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x296A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x416E JUMP JUMPDEST PUSH2 0x296A CALLER PUSH2 0x296C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x30F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x3041 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x431C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x307C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3079 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4359 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x30D9 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x30AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x30D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB0B SWAP1 PUSH2 0x41B9 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x275E JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x275E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x310A DUP4 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x3115 SWAP1 PUSH1 0x2 PUSH2 0x3F0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x312C JUMPI PUSH2 0x312C PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3156 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3171 JUMPI PUSH2 0x3171 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x31A0 JUMPI PUSH2 0x31A0 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x31C4 DUP5 PUSH1 0x2 PUSH2 0x3F72 JUMP JUMPDEST PUSH2 0x31CF SWAP1 PUSH1 0x1 PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3247 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x3203 JUMPI PUSH2 0x3203 PUSH2 0x3E7C JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3219 JUMPI PUSH2 0x3219 PUSH2 0x3E7C JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x3240 DUP2 PUSH2 0x4376 JUMP JUMPDEST SWAP1 POP PUSH2 0x31D2 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x3296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32AC DUP6 DUP6 PUSH2 0x32B9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x127F DUP2 PUSH2 0x3324 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x32EF JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x32E3 DUP8 DUP3 DUP6 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xFA9 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x3318 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x330D DUP7 DUP4 DUP4 PUSH2 0x35C7 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xFA9 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3338 JUMPI PUSH2 0x3338 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3340 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3354 JUMPI PUSH2 0x3354 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x33A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x33B5 JUMPI PUSH2 0x33B5 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x3402 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3416 JUMPI PUSH2 0x3416 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x346E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3482 JUMPI PUSH2 0x3482 PUSH2 0x404C JUMP JUMPDEST SUB PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x3511 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x35BE JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3529 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x353A JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x35BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x358E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35B7 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x35BE JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x35E4 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3F0C JUMP JUMPDEST SWAP1 POP PUSH2 0x35F2 DUP8 DUP3 DUP9 DUP6 PUSH2 0x34DA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x360C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x362E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3647 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3659 JUMP JUMPDEST POP PUSH2 0x2C12 SWAP3 SWAP2 POP PUSH2 0x36F4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x368C SWAP1 PUSH2 0x3EC1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36AE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x36C7 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x3674 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3674 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3674 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36D9 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2C12 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x373C JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x37E7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x382C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3814 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1C7D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3855 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3296 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x388E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x38C8 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38F6 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3906 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP11 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE DUP10 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP9 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP8 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0xC0 DUP5 ADD MSTORE DUP6 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP4 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3981 DUP4 DUP3 ADD DUP6 PUSH2 0x383D JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3A20 PUSH1 0x20 DUP5 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3A52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A5E DUP6 DUP3 DUP7 ADD PUSH2 0x373C JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3805 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A86 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x3ADB JUMPI PUSH2 0x3ADB PUSH2 0x3AAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3B03 JUMPI PUSH2 0x3B03 PUSH2 0x3AAB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x3B1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3296 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3B77 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B9F DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BC1 DUP9 DUP4 DUP10 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BE4 DUP8 DUP3 DUP9 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3296 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37BE DUP7 DUP3 DUP8 ADD PUSH2 0x3C0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x3CAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x3CB7 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x3CCC PUSH1 0x40 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP8 POP PUSH2 0x3CDA PUSH1 0x60 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP7 POP PUSH2 0x3CE8 PUSH1 0x80 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP6 POP PUSH2 0x3CF6 PUSH1 0xA0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP5 POP PUSH2 0x3D04 PUSH1 0xC0 DUP13 ADD PUSH2 0x39E4 JUMP JUMPDEST SWAP4 POP PUSH1 0xE0 DUP12 ADD CALLDATALOAD PUSH2 0x3D14 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3D38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D44 DUP14 DUP3 DUP15 ADD PUSH2 0x3B36 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D74 DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x39D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3DAA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3DBA DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x3DED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BE4 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x3AC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E1A DUP2 PUSH2 0x3895 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x39D9 DUP2 PUSH2 0x3895 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E69 DUP8 DUP3 DUP9 ADD PUSH2 0x3C0D JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3EBA JUMPI PUSH2 0x3EBA PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3ED5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCD7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3F07 JUMPI PUSH2 0x3F07 PUSH2 0x3E92 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F1F JUMPI PUSH2 0x3F1F PUSH2 0x3E92 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3F8C JUMPI PUSH2 0x3F8C PUSH2 0x3E92 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3FB6 JUMPI PUSH2 0x3FB6 PUSH2 0x3F91 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x4084 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH2 0x40A0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3811 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x40BC DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x40D0 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH14 0x17B6B2BA30B230BA30973539B7B7 PUSH1 0x91 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0xE ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4104 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4118 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3811 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4133 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0xA ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4118 JUMPI PUSH2 0x4118 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x421A JUMPI PUSH2 0x421A PUSH2 0x3F91 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x68747470733A2F2F6D657461646174612E736F756E642E78797A2F76312F0000 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4257 DUP2 PUSH1 0x1E DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3811 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL PUSH1 0x1E SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x1F ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x428B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x42AA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP7 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP7 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x42BE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x42CF JUMPI PUSH2 0x42FC JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x42FC JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x42F4 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x42DB JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP PUSH2 0x4309 DUP5 DUP9 PUSH2 0x408E JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL DUP2 MSTORE ADD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x434F SWAP1 DUP4 ADD DUP5 PUSH2 0x383D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x436B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3296 DUP2 PUSH2 0x3709 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x4385 JUMPI PUSH2 0x4385 PUSH2 0x3E92 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP INVALID 0xDF DUP12 0x4C MSTORE 0xF INVALID NOT PUSH29 0x5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42A264697066 PUSH20 0x58221220ACD39579E26673A413BC1C849A245CA8 CREATE 0x29 0xD7 TIMESTAMP 0xD7 GASPRICE 0xB5 BALANCE PUSH30 0x8A0E04090FB47364736F6C634300080E0033000000000000000000000000 ",
              "sourceMap": "2223:22332:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18324:301;;;;;;;;;;-1:-1:-1;18324:301:41;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;18324:301:41;;;;;;;;20045:457;;;;;;;;;;-1:-1:-1;20045:457:41;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2931:98:7:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;;;;;-1:-1:-1;4407:167:7;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3243:32:46;;;3225:51;;3213:2;3198:18;4407:167:7;3079:203:46;3928:418:7;;;;;;;;;;-1:-1:-1;3928:418:7;;;;;:::i;:::-;;:::i;:::-;;20609:346:41;;;;;;;;;;;;;:::i;12362:546::-;;;;;;;;;;-1:-1:-1;12362:546:41;;;;;:::i;:::-;;:::i;17903:229::-;;;;;;;;;;;;;:::i;:::-;;;3889:25:46;;;3877:2;3862:18;17903:229:41;3743:177:46;5084:327:7;;;;;;;;;;-1:-1:-1;5084:327:7;;;;;:::i;:::-;;:::i;3528:170:41:-;;;;;;;;;;;;3589:109;3528:170;;4096:43;;;;;;;;;;-1:-1:-1;4096:43:41;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;17282:547::-;;;;;;;;;;-1:-1:-1;17282:547:41;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;6059:32:46;;;6041:51;;6123:2;6108:18;;6101:34;;;;6014:18;17282:547:41;5867:274:46;2754:226:42;;;;;;;;;;-1:-1:-1;2754:226:42;;;;;:::i;:::-;;:::i;3802:41:41:-;;;;;;;;;;;;;;;3923:44;;;;;;;;;;-1:-1:-1;3923:44:41;;;;;;5477:179:7;;;;;;;;;;-1:-1:-1;5477:179:7;;;;;:::i;:::-;;:::i;18694:173:41:-;;;;;;;;;;;;;:::i;4206:50::-;;;;;;;;;;-1:-1:-1;4206:50:41;;;;;:::i;:::-;;;;;;;;;;;;;;14514:477;;;;;;;;;;-1:-1:-1;14514:477:41;;;;;:::i;:::-;;:::i;19523:308::-;;;;;;;;;;-1:-1:-1;19523:308:41;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13978:324::-;;;;;;;;;;-1:-1:-1;13978:324:41;;;;;:::i;:::-;;:::i;6237:539::-;;;;;;;;;;-1:-1:-1;6237:539:41;;;;;:::i;:::-;;:::i;18966:428::-;;;;;;;;;;-1:-1:-1;18966:428:41;;;;;:::i;:::-;;:::i;2651:218:7:-;;;;;;;;;;-1:-1:-1;2651:218:7;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;;;;;-1:-1:-1;2390:204:7;;;;;:::i;:::-;;:::i;15163:207:41:-;;;;;;;;;;-1:-1:-1;15163:207:41;;;;;:::i;:::-;;:::i;569:55:42:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;569:55:42;;15516:373:41;;;;;;;;;;-1:-1:-1;15516:373:41;;;;;:::i;:::-;;:::i;1559:77:42:-;;;;;;;;;;-1:-1:-1;1623:6:42;;-1:-1:-1;;;;;1623:6:42;1559:77;;7509:1547:41;;;;;;;;;;-1:-1:-1;7509:1547:41;;;;;:::i;:::-;;:::i;3492:120:42:-;;;;;;;;;;-1:-1:-1;3492:120:42;;;;;:::i;:::-;;:::i;3093:102:7:-;;;;;;;;;;;;;:::i;3993:46:41:-;;;;;;;;;;-1:-1:-1;3993:46:41;;;;;;4641:153:7;;;;;;;;;;-1:-1:-1;4641:153:7;;;;;:::i;:::-;;:::i;5722:315::-;;;;;;;;;;-1:-1:-1;5722:315:7;;;;;:::i;:::-;;:::i;13545:215:41:-;;;;;;;;;;-1:-1:-1;13545:215:41;;;;;:::i;:::-;;:::i;16191:696::-;;;;;;;;;;-1:-1:-1;16191:696:41;;;;;:::i;:::-;;:::i;4476:54::-;;;;;;;;;;-1:-1:-1;4476:54:41;;;;;:::i;:::-;;;;;;;;;;;;;;3130:227:42;;;;;;;;;;-1:-1:-1;3130:227:42;;;;;:::i;:::-;;:::i;4335:54:41:-;;;;;;;;;;-1:-1:-1;4335:54:41;;;;;:::i;:::-;;;;;;;;;;;;;;17012:130;;;;;;;;;;;;;:::i;4860:162:7:-;;;;;;;;;;-1:-1:-1;4860:162:7;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;1990:190:42;;;;;;;;;;-1:-1:-1;1990:190:42;;;;;:::i;:::-;;:::i;9392:2818:41:-;;;;;;:::i;:::-;;:::i;13117:227::-;;;;;;;;;;-1:-1:-1;13117:227:41;;;;;:::i;:::-;;:::i;18324:301::-;18473:4;-1:-1:-1;;;;;;;;;18512:53:41;;;;:106;;;18569:49;18605:12;18569:35;:49::i;:::-;18493:125;18324:301;-1:-1:-1;;18324:301:41:o;20045:457::-;20175:13;20204:21;20239:14;-1:-1:-1;;;;;20228:33:41;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20228:33:41;;20204:57;;20277:9;20272:199;20292:25;;;20272:199;;;20339:17;20366:53;20389:10;20401:14;;20416:1;20401:17;;;;;;;:::i;:::-;;;;;;;23313:7;23935:25;;;:13;:25;;;;;;;;23798:3;23782:19;;23935:43;;;;;;;;;24075:1;23834:19;;;;24033:30;;;24032:45;;;;;23935:43;;23782:19;23179:982;20366:53;20338:81;;;;;20446:9;20459:1;20446:14;20433:7;20441:1;20433:10;;;;;;;;:::i;:::-;:27;;;:10;;;;;;;;;;;:27;-1:-1:-1;20319:3:41;;;;:::i;:::-;;;;20272:199;;;-1:-1:-1;20488:7:41;20045:457;-1:-1:-1;;;;20045:457:41:o;2931:98:7:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;15555:2:46;4068:57:7;;;15537:21:46;15594:2;15574:18;;;15567:30;15633:34;15613:18;;;15606:62;-1:-1:-1;;;15684:18:46;;;15677:31;15725:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;15957:2:46;4136:171:7;;;15939:21:46;15996:2;15976:18;;;15969:30;16035:34;16015:18;;;16008:62;16106:32;16086:18;;;16079:60;16156:19;;4136:171:7;15755:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;20609:346:41:-;20670:7;20693:13;20710:1;20693:18;20689:260;;-1:-1:-1;20734:42:41;;20609:346::o;20689:260::-;20797:13;20814:1;20797:18;20793:156;;-1:-1:-1;20838:42:41;;20609:346::o;20793:156::-;20911:27;;-1:-1:-1;;;20911:27:41;;16388:2:46;20911:27:41;;;16370:21:46;16427:2;16407:18;;;16400:30;-1:-1:-1;;;16446:18:46;;;16439:47;16503:18;;20911:27:41;16186:341:46;12362:546:41;12499:27;12563:31;;;:19;:31;;;;;;;;;12529:19;:31;;;;;;:65;;12563:31;12529:65;:::i;:::-;12700:31;;;;:19;:31;;;;;;;;;12666:19;:31;;;;;:65;12842:8;:20;;;;;:37;12499:95;;-1:-1:-1;12831:70:41;;-1:-1:-1;;;;;12842:37:41;12499:95;12831:10;:70::i;:::-;12414:494;12362:546;:::o;17903:229::-;17949:7;;18013:1;17995:109;18021:11;929:14:13;18016:2:41;:26;17995:109;;;18073:12;;;;:8;:12;;;;;:20;;;18064:29;;18073:20;;18064:29;;:::i;:::-;;-1:-1:-1;18044:4:41;;;;:::i;:::-;;;;17995:109;;;-1:-1:-1;18120:5:41;17903:229;-1:-1:-1;17903:229:41:o;5084:327:7:-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;4096:43:41:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4096:43:41;;;;;;;;;;;;;;;;;-1:-1:-1;;;4096:43:41;;;;;-1:-1:-1;;;4096:43:41;;;;;-1:-1:-1;;;4096:43:41;;;;;-1:-1:-1;;;4096:43:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17282:547::-;17405:24;17431:21;17468:17;17488:24;17503:8;17488:14;:24::i;:::-;17522:22;17547:19;;;:8;:19;;;;;;;;17522:44;;;;;;;;;-1:-1:-1;;;;;17522:44:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17522:44:41;;;;;;;;-1:-1:-1;;;17522:44:41;;;;;;;;-1:-1:-1;;;17522:44:41;;;;;;;;-1:-1:-1;;;17522:44:41;;;;;;;;;;;;;;;;;;;;;;;;;17468;;-1:-1:-1;17522:22:41;;:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17522:44:41;;;;-1:-1:-1;;17581:24:41;;17522:44;;-1:-1:-1;;;;;;;17581:40:41;17577:107;;17645:24;;-1:-1:-1;17645:24:41;;-1:-1:-1;17637:36:41;;-1:-1:-1;17637:36:41;17577:107;17723:18;;;;17761:24;;17715:27;;;;;17815:6;17788:23;17715:27;17788:10;:23;:::i;:::-;17787:34;;;;:::i;:::-;17753:69;;;;;;;17282:547;;;;;;:::o;2754:226:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;2838:22:::1;2846:4;2852:7;2838;:22::i;:::-;2833:141;;2876:12;::::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;2876:21:42;::::1;::::0;;;;;;;:28;;-1:-1:-1;;2876:28:42::1;2900:4;2876:28;::::0;;2950:12:::1;929:10:12::0;;850:96;2950:12:42::1;-1:-1:-1::0;;;;;2923:40:42::1;2941:7;-1:-1:-1::0;;;;;2923:40:42::1;2935:4;2923:40;;;;;;;;;;2754:226:::0;;:::o;5477:179:7:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;18694:173:41:-;18741:7;18791:1;18767:21;:11;929:14:13;;838:112;18767:21:41;:25;;;;:::i;:::-;18760:32;;18694:173;:::o;14514:477::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;14802:1:41::1;14756:20:::0;;;:8:::1;:20;::::0;;;;:34:::1;;::::0;-1:-1:-1;;;;;14756:34:41::1;14748:87;;;::::0;-1:-1:-1;;;14748:87:41;;18544:2:46;14748:87:41::1;::::0;::::1;18526:21:46::0;18583:2;18563:18;;;18556:30;18622:28;18602:18;;;18595:56;18668:18;;14748:87:41::1;18342:350:46::0;14748:87:41::1;14846:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:41:::1;;:65:::0;;-1:-1:-1;;;;14846:65:41::1;-1:-1:-1::0;;;14846:65:41::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;14926:58;;18869:25:46;;;18910:18;;;18903:51;14926:58:41::1;::::0;18842:18:46;14926:58:41::1;;;;;;;14514:477:::0;;;:::o;19523:308::-;19602:16;19630:23;19670:9;-1:-1:-1;;;;;19656:31:41;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19656:31:41;;19630:57;;19702:9;19697:105;19717:20;;;19697:105;;;19770:21;19778:9;;19788:1;19778:12;;;;;;;:::i;:::-;;;;;;;19770:7;:21::i;:::-;19758:6;19765:1;19758:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19758:33:41;;;:9;;;;;;;;;;;:33;19739:3;;;;:::i;:::-;;;;19697:105;;;-1:-1:-1;19818:6:41;19523:308;-1:-1:-1;;;19523:308:41:o;13978:324::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;14106:31:41;::::1;14098:70;;;::::0;-1:-1:-1;;;14098:70:41;;19167:2:46;14098:70:41::1;::::0;::::1;19149:21:46::0;19206:2;19186:18;;;19179:30;19245:28;19225:18;;;19218:56;19291:18;;14098:70:41::1;18965:350:46::0;14098:70:41::1;14179:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:34:::1;;:54:::0;;-1:-1:-1;;;;;;14179:54:41::1;-1:-1:-1::0;;;;;14179:54:41;::::1;::::0;;::::1;::::0;;;14248:47;;3889:25:46;;;14248:47:41::1;::::0;3862:18:46;14248:47:41::1;;;;;;;;13978:324:::0;;;:::o;6237:539::-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;19522:2:46;3157:201:5;;;19504:21:46;19561:2;19541:18;;;19534:30;19600:34;19580:18;;;19573:62;-1:-1:-1;;;19651:18:46;;;19644:44;19705:19;;3157:201:5;19320:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;6408:29:41::1;6422:5;6429:7;6408:13;:29::i;:::-;6447:22;:20;:22::i;:::-;6541:25;6559:6;6541:17;:25::i;:::-;6627:13;6644:1;6627:18;6623:67;;6661:18:::0;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;6623:67;6746:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;6746:23:41::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;19887:36:46;;3553:14:5;;19875:2:46;19860:18;3553:14:5;;;;;;;3479:99;3101:483;6237:539:41;;;;:::o;18966:428::-;19029:7;19144:3;19132:15;;;19245:14;;;19241:120;;-1:-1:-1;;19325:25:41;;;;:15;:25;;;;;;;18966:428::o;2651:218:7:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;20136:2:46;2784:56:7;;;20118:21:46;20175:2;20155:18;;;20148:30;-1:-1:-1;;;20194:18:46;;;20187:54;20258:18;;2784:56:7;19934:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;20489:2:46;2481:73:7;;;20471:21:46;20528:2;20508:18;;;20501:30;20567:34;20547:18;;;20540:62;-1:-1:-1;;;20618:18:46;;;20611:39;20667:19;;2481:73:7;20287:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;15163:207:41:-;15251:22;:20;:22::i;:::-;-1:-1:-1;;;;;15235:38:41;929:10:12;-1:-1:-1;;;;;15235:38:41;;:65;;;-1:-1:-1;1623:6:42;;-1:-1:-1;;;;;1623:6:42;929:10:12;15277:23:41;15235:65;15227:90;;;;-1:-1:-1;;;15227:90:41;;;;;;;:::i;:::-;15328:35;15353:9;15328:24;:35::i;:::-;15163:207;:::o;15516:373::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;15689:1:41::1;15657:20:::0;;;:8:::1;:20;::::0;;;;:29:::1;;::::0;;;::::1;;;:33:::0;;;:82:::1;;-1:-1:-1::0;15738:1:41::1;15694:20:::0;;;:8:::1;:20;::::0;;;;:41:::1;;::::0;-1:-1:-1;;;15694:41:41;::::1;;;:45:::0;;15657:82:::1;15636:148;;;::::0;-1:-1:-1;;;15636:148:41;;20899:2:46;15636:148:41::1;::::0;::::1;20881:21:46::0;20938:2;20918:18;;;20911:30;-1:-1:-1;;;20957:18:46;;;20950:49;21016:18;;15636:148:41::1;20697:343:46::0;15636:148:41::1;15795:20;::::0;;;:8:::1;:20;::::0;;;;:39:::1;::::0;:28:::1;;15826:8:::0;;15795:39:::1;:::i;:::-;;15850:32;15861:10;15873:8;;15850:32;;;;;;;;:::i;:::-;;;;;;;;15516:373:::0;;;;:::o;7509:1547::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;7908:1:41::1;7896:9;:13;;;7888:43;;;::::0;-1:-1:-1;;;7888:43:41;;21713:2:46;7888:43:41::1;::::0;::::1;21695:21:46::0;21752:2;21732:18;;;21725:30;-1:-1:-1;;;21771:18:46;;;21764:47;21828:18;;7888:43:41::1;21511:341:46::0;7888:43:41::1;-1:-1:-1::0;;;;;7949:31:41;::::1;7941:69;;;::::0;-1:-1:-1;;;7941:69:41;;22059:2:46;7941:69:41::1;::::0;::::1;22041:21:46::0;22098:2;22078:18;;;22071:30;22137:27;22117:18;;;22110:55;22182:18;;7941:69:41::1;21857:349:46::0;7941:69:41::1;8039:10;8028:21;;:8;:21;;;8020:74;;;::::0;-1:-1:-1;;;8020:74:41;;22413:2:46;8020:74:41::1;::::0;::::1;22395:21:46::0;22452:2;22432:18;;;22425:30;22491:34;22471:18;;;22464:62;-1:-1:-1;;;22542:18:46;;;22535:38;22590:19;;8020:74:41::1;22211:404:46::0;8020:74:41::1;8126:11;929:14:13::0;8112:10:41::1;:35;8104:64;;;::::0;-1:-1:-1;;;8104:64:41;;22822:2:46;8104:64:41::1;::::0;::::1;22804:21:46::0;22861:2;22841:18;;;22834:30;-1:-1:-1;;;22880:18:46;;;22873:46;22936:18;;8104:64:41::1;22620:340:46::0;8104:64:41::1;8183:25;::::0;::::1;::::0;8179:123:::1;;-1:-1:-1::0;;;;;8232:28:41;::::1;8224:67;;;::::0;-1:-1:-1;;;8224:67:41;;19167:2:46;8224:67:41::1;::::0;::::1;19149:21:46::0;19206:2;19186:18;;;19179:30;19245:28;19225:18;;;19218:56;19291:18;;8224:67:41::1;18965:350:46::0;8224:67:41::1;8346:386;;;;;;;;8386:17;-1:-1:-1::0;;;;;8346:386:41::1;;;;;8424:6;8346:386;;;;8453:1;8346:386;;;;;;8478:9;8346:386;;;;;;8513:11;8346:386;;;;;;8549:10;8346:386;;;;;;8582:8;8346:386;;;;;;8626:21;8346:386;;;;;;8676:14;-1:-1:-1::0;;;;;8346:386:41::1;;;;;8713:8;8346:386;;::::0;8312:8:::1;:31;8321:21;:11;929:14:13::0;;838:112;8321:21:41::1;8312:31:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;8312:31:41;:420;;;;-1:-1:-1;;;;;;8312:420:41;;::::1;-1:-1:-1::0;;;;;8312:420:41;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;8312:420:41;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;8312:420:41;;;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;8312:420:41;-1:-1:-1;;;8312:420:41;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8312:420:41;;;;;-1:-1:-1;;;8312:420:41;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;8312:420:41;-1:-1:-1;;;8312:420:41;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8312:420:41;;-1:-1:-1;;;8312:420:41;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;:31;;:420:::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;8776:11:41::1;929:14:13::0;8748:267:41::1;::::0;;-1:-1:-1;;;;;23362:15:46;;;23344:34;;23409:2;23394:18;;23387:34;;;23440:10;23486:15;;;23466:18;;;23459:43;23538:15;;;23533:2;23518:18;;23511:43;23591:15;;;23585:3;23570:19;;23563:44;23644:15;;;23324:3;23623:19;;23616:44;23697:15;;23691:3;23676:19;;23669:44;23750:15;;23744:3;23729:19;;23722:44;8748:267:41;;929:14:13;;-1:-1:-1;8748:267:41::1;::::0;;;;;23293:3:46;8748:267:41;;::::1;9026:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;9026:23:41::1;7509:1547:::0;;;;;;;;;;;:::o;3492:120:42:-;3561:4;3584:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3584:21:42;;;;;;;;;;;;;;;3492:120::o;3093:102:7:-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;5722:315::-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;13545:215:41:-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;13649:20:41::1;::::0;;;:8:::1;:20;::::0;;;;;;:28:::1;;:39:::0;;-1:-1:-1;;;;13649:39:41::1;-1:-1:-1::0;;;13649:39:41::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13703:50;;::::1;::::0;::::1;::::0;-1:-1:-1;;13649:20:41;;13703:50:::1;:::i;16191:696::-:0;7571:4:7;7594:16;;;:7;:16;;;;;;16257:13:41;;-1:-1:-1;;;;;7594:16:7;16282:77:41;;;;-1:-1:-1;;;16282:77:41;;24529:2:46;16282:77:41;;;24511:21:46;24568:2;24548:18;;;24541:30;24607:34;24587:18;;;24580:62;-1:-1:-1;;;24658:18:46;;;24651:45;24713:19;;16282:77:41;24327:411:46;16282:77:41;16370:17;16390:24;16405:8;16390:14;:24::i;:::-;16425:28;16456:19;;;:8;:19;;;;;:27;;16425:58;;16370:44;;-1:-1:-1;16425:28:41;;:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16692:1;16667:14;16661:28;:32;16657:145;;;16730:14;16746:26;16763:8;16746:16;:26::i;:::-;16716:75;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16709:82;;;;16191:696;;;:::o;16657:145::-;16833:18;:16;:18::i;:::-;16853:26;16870:8;16853:16;:26::i;:::-;16819:61;;;;;;;;;:::i;3130:227:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;3214:22:::1;3222:4;3228:7;3214;:22::i;:::-;3210:141;;;3276:5;3252:12:::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;3252:21:42;::::1;::::0;;;;;;;;:29;;-1:-1:-1;;3252:29:42::1;::::0;;3300:40;929:10:12;;3252:12:42;;3300:40:::1;::::0;3276:5;3300:40:::1;3130:227:::0;;:::o;17012:130:41:-;17056:13;17102:18;:16;:18::i;:::-;17088:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;17081:54;;17012:130;:::o;1990:190:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;2070:22:42;::::1;2062:73;;;::::0;-1:-1:-1;;;2062:73:42;;26696:2:46;2062:73:42::1;::::0;::::1;26678:21:46::0;26735:2;26715:18;;;26708:30;26774:34;26754:18;;;26747:62;-1:-1:-1;;;26825:18:46;;;26818:36;26871:19;;2062:73:42::1;26494:402:46::0;9392:2818:41;9592:13;9608:20;;;:8;:20;;;;;:26;;;;;9662:29;;;;;9608:26;;9662:29;;;;;;;9718:28;;9776:11;;9718:28;;9776:11;:::i;:::-;9797:16;9816:20;;;:8;:20;;;;;:30;;;9756:31;;-1:-1:-1;9816:30:41;-1:-1:-1;;;9816:30:41;;;;;-1:-1:-1;;;9873:28:41;;;;;-1:-1:-1;;;9941:41:41;;;;;;10145:12;;10137:47;;;;-1:-1:-1;;;10137:47:41;;27336:2:46;10137:47:41;;;27318:21:46;27375:2;27355:18;;;27348:30;-1:-1:-1;;;27394:18:46;;;27387:52;27456:18;;10137:47:41;27134:346:46;10137:47:41;10278:5;10265:9;:18;;10257:72;;;;-1:-1:-1;;;10257:72:41;;27687:2:46;10257:72:41;;;27669:21:46;27726:2;27706:18;;;27699:30;27765:34;27745:18;;;27738:62;-1:-1:-1;;;27816:18:46;;;27809:39;27865:19;;10257:72:41;27485:405:46;10257:72:41;10409:15;10399:7;:25;;;10391:55;;;;-1:-1:-1;;;10391:55:41;;28097:2:46;10391:55:41;;;28079:21:46;28136:2;28116:18;;;28109:30;-1:-1:-1;;;28155:18:46;;;28148:47;28212:18;;10391:55:41;27895:341:46;10391:55:41;10524:15;10512:9;:27;;;10508:749;;;10639:20;10629:30;;:7;:30;;;10621:102;;;;-1:-1:-1;;;10621:102:41;;28443:2:46;10621:102:41;;;28425:21:46;28482:2;28462:18;;;28455:30;28521:34;28501:18;;;28494:62;28592:29;28572:18;;;28565:57;28639:19;;10621:102:41;28241:423:46;10621:102:41;10865:20;;;;:8;:20;;;;;:34;;;-1:-1:-1;;;;;10865:34:41;10813:48;10823:10;;10874;10847:13;10813:9;:48::i;:::-;-1:-1:-1;;;;;10813:86:41;;10788:159;;;;-1:-1:-1;;;10788:159:41;;28871:2:46;10788:159:41;;;28853:21:46;28910:2;28890:18;;;28883:30;-1:-1:-1;;;28929:18:46;;;28922:44;28983:18;;10788:159:41;28669:338:46;10788:159:41;10508:749;;;11200:8;11190:18;;:7;:18;;;11182:64;;;;-1:-1:-1;;;11182:64:41;;29214:2:46;11182:64:41;;;29196:21:46;29253:2;29233:18;;;29226:30;29292:34;29272:18;;;29265:62;-1:-1:-1;;;29343:18:46;;;29336:31;29384:19;;11182:64:41;29012:397:46;11182:64:41;11335:15;11509:20;;;:8;:20;;;;;:28;;:41;;-1:-1:-1;;11509:41:41;11394:32;;;11509:41;;;;;;11409:3;11395:17;;;11394:32;11731:7;1623:6:42;;-1:-1:-1;;;;;1623:6:42;;1559:77;11731:7:41;11690:20;;;;:8;:20;;;;;:37;-1:-1:-1;;;;;11690:48:41;;;:37;;:48;11686:324;;11812:31;;;;:19;:31;;;;;:44;;11847:9;;11812:31;:44;;11847:9;;11812:44;:::i;:::-;;;;-1:-1:-1;11686:324:41;;-1:-1:-1;11686:324:41;;11950:20;;;;:8;:20;;;;;:37;11939:60;;-1:-1:-1;;;;;11950:37:41;11989:9;11939:10;:60::i;:::-;12085:26;12091:10;12103:7;12085:5;:26::i;:::-;12127:76;;;29616:10:46;29604:23;;29586:42;;29659:2;29644:18;;29637:34;;;12177:10:41;;12156:7;;12144:10;;12127:76;;29559:18:46;12127:76:41;;;;;;;9529:2681;;;;;;;;9392:2818;;;;:::o;13117:227::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;13225:20:41::1;::::0;;;:8:::1;:20;::::0;;;;;:30:::1;;:43:::0;;-1:-1:-1;;;;13225:43:41::1;-1:-1:-1::0;;;13225:43:41::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13283:54;;13225:43;;13283:54:::1;::::0;::::1;::::0;13225:20;;;13283:54:::1;:::i;1987:344:7:-:0;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;1060:166:17;12173:133:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;20136:2:46;12246:53:7;;;20118:21:46;20175:2;20155:18;;;20148:30;-1:-1:-1;;;20194:18:46;;;20187:54;20258:18;;12246:53:7;19934:348:46;11464:182:7;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;21215:308:41:-;21331:7;21306:21;:32;;21298:74;;;;-1:-1:-1;;;21298:74:41;;29884:2:46;21298:74:41;;;29866:21:46;29923:2;29903:18;;;29896:30;29962:31;29942:18;;;29935:59;30011:18;;21298:74:41;29682:353:46;21298:74:41;21384:12;21402:10;-1:-1:-1;;;;;21402:15:41;21425:7;21402:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21383:54;;;21455:7;21447:69;;;;-1:-1:-1;;;21447:69:41;;30452:2:46;21447:69:41;;;30434:21:46;30491:2;30471:18;;;30464:30;30530:34;30510:18;;;30503:62;-1:-1:-1;;;30581:18:46;;;30574:47;30638:19;;21447:69:41;30250:413:46;7789:272:7;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;30870:2:46;10855:92:7;;;30852:21:46;30909:2;30889:18;;;30882:30;30948:34;30928:18;;;30921:62;-1:-1:-1;;;30999:18:46;;;30992:35;31044:19;;10855:92:7;30668:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;31276:2:46;10957:65:7;;;31258:21:46;31315:2;31295:18;;;31288:30;31354:34;31334:18;;;31327:62;-1:-1:-1;;;31405:18:46;;;31398:34;31449:19;;10957:65:7;31074:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1605:149::-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1708:39:7::1;1732:5;1739:7;1708:23;:39::i;1217:143:42:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1285:26:42::1;:24;:26::i;:::-;1321:32;:30;:32::i;:::-;1217:143::o:0;2334:179::-;2418:6;;;-1:-1:-1;;;;;2434:17:42;;;-1:-1:-1;;;;;;2434:17:42;;;;;;;2466:40;;2418:6;;;2434:17;2418:6;;2466:40;;2399:16;;2466:40;2389:124;2334:179;:::o;11782:307:7:-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;32093:2:46;11915:55:7;;;32075:21:46;32132:2;32112:18;;;32105:30;32171:27;32151:18;;;32144:55;32216:18;;11915:55:7;31891:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;392:703:30:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:30;;;;;;;;;;;;-1:-1:-1;;;691:10:30;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:30;;-1:-1:-1;837:2:30;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;-1:-1:-1;;;;;881:17:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:30;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:30;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:30;;;;;;;;-1:-1:-1;1036:11:30;1045:2;1036:11;;:::i;:::-;;;908:150;;24167:386:41;24217:13;24242:29;24274:56;24318:4;24327:2;24274:19;:56::i;:::-;24242:88;;24344:13;24361:1;24344:18;24340:207;;24433:15;24385:69;;;;;;;;:::i;:::-;;;;;;;;;;;;;24378:76;;;24167:386;:::o;24340:207::-;24506:7;24515:15;24492:44;;;;;;;;;:::i;24340:207::-;24232:321;24167:386;:::o;21815:1207::-;21951:7;22162:5;22146:13;:21;22138:59;;;;-1:-1:-1;;;22138:59:41;;35120:2:46;22138:59:41;;;35102:21:46;35159:2;35139:18;;;35132:30;35198:27;35178:18;;;35171:55;35243:18;;22138:59:41;34918:349:46;22138:59:41;22253:17;23935:25;;;:13;:25;;;;;;;;23798:3;23782:19;;23935:43;;;;;;;;;23834:19;;;24033:30;;;24075:1;24032:45;;22459:14;;22451:71;;;;-1:-1:-1;;;22451:71:41;;35474:2:46;22451:71:41;;;35456:21:46;35513:2;35493:18;;;35486:30;35552:34;35532:18;;;35525:62;-1:-1:-1;;;35603:18:46;;;35596:42;35655:19;;22451:71:41;35272:408:46;22451:71:41;22607:25;;;;:13;:25;;;;;;;;:43;;;;;;;;22675:1;22667:30;;22653:45;;22607:91;;22855:92;;3589:109;22855:92;;;35944:25:46;22902:4:41;36023:18:46;;;36016:43;22909:10:41;36075:18:46;;;36068:43;36127:18;;;36120:34;;;36170:19;;;;36163:35;;;22855:92:41;;;;;;;;;;35916:19:46;;;22855:92:41;;;22845:103;;;;;;;-1:-1:-1;;;22749:213:41;;;36467:27:46;22811:16:41;36510:11:46;;;36503:27;36546:12;;;36539:28;36583:12;;22749:213:41;;;;;;;;;;;;22726:246;;;;;;22709:263;;22989:26;23004:10;;22989:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22989:6:41;;:26;-1:-1:-1;;22989:14:41;:26;-1:-1:-1;22989:26:41:i;:::-;22982:33;21815:1207;-1:-1:-1;;;;;;;;;;21815:1207:41:o;9351:427:7:-;-1:-1:-1;;;;;9430:16:7;;9422:61;;;;-1:-1:-1;;;9422:61:7;;36808:2:46;9422:61:7;;;36790:21:46;;;36827:18;;;36820:30;36886:34;36866:18;;;36859:62;36938:18;;9422:61:7;36606:356:46;9422:61:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;:30;9493:58;;;;-1:-1:-1;;;9493:58:7;;37169:2:46;9493:58:7;;;37151:21:46;37208:2;37188:18;;;37181:30;37247;37227:18;;;37220:58;37295:18;;9493:58:7;36967:352:46;9493:58:7;-1:-1:-1;;;;;9618:13:7;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:7;-1:-1:-1;;;;;9646:21:7;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;12414:494:41;12362:546;:::o;1760:160:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1873:13:7;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1896:17:7;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;776:69:12:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;1366:117:42:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1444:32:42::1;929:10:12::0;1444:18:42::1;:32::i;12858:853:7:-:0;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;13683:11;;1652:441:30;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;-1:-1:-1;;;;;1774:25:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:30;;1752:47;;-1:-1:-1;;;1809:6:30;1816:1;1809:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1809:15:30;;;;;;;;;-1:-1:-1;;;1834:6:30;1841:1;1834:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1834:15:30;;;;;;;;-1:-1:-1;1864:9:30;1876:10;1880:6;1876:1;:10;:::i;:::-;:14;;1889:1;1876:14;:::i;:::-;1864:26;;1859:132;1896:1;1892;:5;1859:132;;;-1:-1:-1;;;1943:5:30;1951:3;1943:11;1930:25;;;;;;;:::i;:::-;;;;1918:6;1925:1;1918:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;1918:37:30;;;;;;;;-1:-1:-1;1979:1:30;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:30;;2000:55;;;;-1:-1:-1;;;2000:55:30;;38426:2:46;2000:55:30;;;38408:21:46;;;38445:18;;;38438:30;38504:34;38484:18;;;38477:62;38556:18;;2000:55:30;38224:356:46;2000:55:30;2079:6;1652:441;-1:-1:-1;;;1652:441:30:o;4402:227:31:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:31;;-1:-1:-1;3563:35:31;3543:56;;548:631;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;766:34;;-1:-1:-1;;;766:34:31;;38787:2:46;766:34:31;;;38769:21:46;38826:2;38806:18;;;38799:30;38865:26;38845:18;;;38838:54;38909:18;;766:34:31;38585:348:46;708:465:31;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;881:41;;-1:-1:-1;;;881:41:31;;39140:2:46;881:41:31;;;39122:21:46;39179:2;39159:18;;;39152:30;39218:33;39198:18;;;39191:61;39269:18;;881:41:31;38938:355:46;817:356:31;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;998:44;;-1:-1:-1;;;998:44:31;;39500:2:46;998:44:31;;;39482:21:46;39539:2;39519:18;;;39512:30;39578:34;39558:18;;;39551:62;-1:-1:-1;;;39629:18:46;;;39622:32;39671:19;;998:44:31;39298:398:46;939:234:31;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;1118:44;;-1:-1:-1;;;1118:44:31;;39903:2:46;1118:44:31;;;39885:21:46;39942:2;39922:18;;;39915:30;39981:34;39961:18;;;39954:62;-1:-1:-1;;;40032:18:46;;;40025:32;40074:19;;1118:44:31;39701:398:46;5810:1603:31;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:31;;-1:-1:-1;6962:30:31;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:31;;-1:-1:-1;7071:30:31;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;40331:25:46;;;40404:4;40392:17;;40372:18;;;40365:45;;;;40426:18;;;40419:34;;;40469:18;;;40462:34;;;7224:24:31;;40303:19:46;;7224:24:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:31;;-1:-1:-1;;7224:24:31;;;-1:-1:-1;;;;;;;7262:20:31;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:31;;-1:-1:-1;5810:1603:31;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:31;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:46;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:367::-;655:8;665:6;719:3;712:4;704:6;700:17;696:27;686:55;;737:1;734;727:12;686:55;-1:-1:-1;760:20:46;;-1:-1:-1;;;;;792:30:46;;789:50;;;835:1;832;825:12;789:50;872:4;864:6;860:17;848:29;;932:3;925:4;915:6;912:1;908:14;900:6;896:27;892:38;889:47;886:67;;;949:1;946;939:12;964:505;1059:6;1067;1075;1128:2;1116:9;1107:7;1103:23;1099:32;1096:52;;;1144:1;1141;1134:12;1096:52;1180:9;1167:23;1157:33;;1241:2;1230:9;1226:18;1213:32;-1:-1:-1;;;;;1260:6:46;1257:30;1254:50;;;1300:1;1297;1290:12;1254:50;1339:70;1401:7;1392:6;1381:9;1377:22;1339:70;:::i;:::-;964:505;;1428:8;;-1:-1:-1;1313:96:46;;-1:-1:-1;;;;964:505:46:o;1474:642::-;1639:2;1691:21;;;1761:13;;1664:18;;;1783:22;;;1610:4;;1639:2;1862:15;;;;1836:2;1821:18;;;1610:4;1905:185;1919:6;1916:1;1913:13;1905:185;;;1994:13;;1987:21;1980:29;1968:42;;2065:15;;;;2030:12;;;;1941:1;1934:9;1905:185;;;-1:-1:-1;2107:3:46;;1474:642;-1:-1:-1;;;;;;1474:642:46:o;2121:258::-;2193:1;2203:113;2217:6;2214:1;2211:13;2203:113;;;2293:11;;;2287:18;2274:11;;;2267:39;2239:2;2232:10;2203:113;;;2334:6;2331:1;2328:13;2325:48;;;-1:-1:-1;;2369:1:46;2351:16;;2344:27;2121:258::o;2384:269::-;2437:3;2475:5;2469:12;2502:6;2497:3;2490:19;2518:63;2574:6;2567:4;2562:3;2558:14;2551:4;2544:5;2540:16;2518:63;:::i;:::-;2635:2;2614:15;-1:-1:-1;;2610:29:46;2601:39;;;;2642:4;2597:50;;2384:269;-1:-1:-1;;2384:269:46:o;2658:231::-;2807:2;2796:9;2789:21;2770:4;2827:56;2879:2;2868:9;2864:18;2856:6;2827:56;:::i;2894:180::-;2953:6;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;-1:-1:-1;3045:23:46;;2894:180;-1:-1:-1;2894:180:46:o;3287:131::-;-1:-1:-1;;;;;3362:31:46;;3352:42;;3342:70;;3408:1;3405;3398:12;3423:315;3491:6;3499;3552:2;3540:9;3531:7;3527:23;3523:32;3520:52;;;3568:1;3565;3558:12;3520:52;3607:9;3594:23;3626:31;3651:5;3626:31;:::i;:::-;3676:5;3728:2;3713:18;;;;3700:32;;-1:-1:-1;;;3423:315:46:o;3925:456::-;4002:6;4010;4018;4071:2;4059:9;4050:7;4046:23;4042:32;4039:52;;;4087:1;4084;4077:12;4039:52;4126:9;4113:23;4145:31;4170:5;4145:31;:::i;:::-;4195:5;-1:-1:-1;4252:2:46;4237:18;;4224:32;4265:33;4224:32;4265:33;:::i;:::-;3925:456;;4317:7;;-1:-1:-1;;;4371:2:46;4356:18;;;;4343:32;;3925:456::o;4568:1041::-;-1:-1:-1;;;;;5033:15:46;;;5015:34;;5080:2;5065:18;;5058:34;;;5111:10;5157:15;;;5152:2;5137:18;;5130:43;5209:15;;;5204:2;5189:18;;5182:43;5262:15;;;5256:3;5241:19;;5234:44;5315:15;;;4995:3;5294:19;;5287:44;5368:15;;;5362:3;5347:19;;5340:44;5421:15;;5415:3;5400:19;;5393:44;5474:15;;5468:3;5453:19;;5446:44;4965:3;5521;5506:19;;5499:31;;;4936:4;;5547:56;5584:18;;;5576:6;5547:56;:::i;:::-;5539:64;4568:1041;-1:-1:-1;;;;;;;;;;;;;4568:1041:46:o;5614:248::-;5682:6;5690;5743:2;5731:9;5722:7;5718:23;5714:32;5711:52;;;5759:1;5756;5749:12;5711:52;-1:-1:-1;;5782:23:46;;;5852:2;5837:18;;;5824:32;;-1:-1:-1;5614:248:46:o;6146:315::-;6214:6;6222;6275:2;6263:9;6254:7;6250:23;6246:32;6243:52;;;6291:1;6288;6281:12;6243:52;6327:9;6314:23;6304:33;;6387:2;6376:9;6372:18;6359:32;6400:31;6425:5;6400:31;:::i;:::-;6450:5;6440:15;;;6146:315;;;;;:::o;6466:163::-;6533:20;;6593:10;6582:22;;6572:33;;6562:61;;6619:1;6616;6609:12;6562:61;6466:163;;;:::o;6634:252::-;6701:6;6709;6762:2;6750:9;6741:7;6737:23;6733:32;6730:52;;;6778:1;6775;6768:12;6730:52;6814:9;6801:23;6791:33;;6843:37;6876:2;6865:9;6861:18;6843:37;:::i;:::-;6833:47;;6634:252;;;;;:::o;6891:437::-;6977:6;6985;7038:2;7026:9;7017:7;7013:23;7009:32;7006:52;;;7054:1;7051;7044:12;7006:52;7094:9;7081:23;-1:-1:-1;;;;;7119:6:46;7116:30;7113:50;;;7159:1;7156;7149:12;7113:50;7198:70;7260:7;7251:6;7240:9;7236:22;7198:70;:::i;:::-;7287:8;;7172:96;;-1:-1:-1;6891:437:46;-1:-1:-1;;;;6891:437:46:o;7333:658::-;7504:2;7556:21;;;7626:13;;7529:18;;;7648:22;;;7475:4;;7504:2;7727:15;;;;7701:2;7686:18;;;7475:4;7770:195;7784:6;7781:1;7778:13;7770:195;;;7849:13;;-1:-1:-1;;;;;7845:39:46;7833:52;;7940:15;;;;7905:12;;;;7881:1;7799:9;7770:195;;8316:127;8377:10;8372:3;8368:20;8365:1;8358:31;8408:4;8405:1;8398:15;8432:4;8429:1;8422:15;8448:632;8513:5;-1:-1:-1;;;;;8584:2:46;8576:6;8573:14;8570:40;;;8590:18;;:::i;:::-;8665:2;8659:9;8633:2;8719:15;;-1:-1:-1;;8715:24:46;;;8741:2;8711:33;8707:42;8695:55;;;8765:18;;;8785:22;;;8762:46;8759:72;;;8811:18;;:::i;:::-;8851:10;8847:2;8840:22;8880:6;8871:15;;8910:6;8902;8895:22;8950:3;8941:6;8936:3;8932:16;8929:25;8926:45;;;8967:1;8964;8957:12;8926:45;9017:6;9012:3;9005:4;8997:6;8993:17;8980:44;9072:1;9065:4;9056:6;9048;9044:19;9040:30;9033:41;;;;8448:632;;;;;:::o;9085:222::-;9128:5;9181:3;9174:4;9166:6;9162:17;9158:27;9148:55;;9199:1;9196;9189:12;9148:55;9221:80;9297:3;9288:6;9275:20;9268:4;9260:6;9256:17;9221:80;:::i;9312:879::-;9428:6;9436;9444;9452;9505:3;9493:9;9484:7;9480:23;9476:33;9473:53;;;9522:1;9519;9512:12;9473:53;9561:9;9548:23;9580:31;9605:5;9580:31;:::i;:::-;9630:5;-1:-1:-1;9686:2:46;9671:18;;9658:32;-1:-1:-1;;;;;9739:14:46;;;9736:34;;;9766:1;9763;9756:12;9736:34;9789:50;9831:7;9822:6;9811:9;9807:22;9789:50;:::i;:::-;9779:60;;9892:2;9881:9;9877:18;9864:32;9848:48;;9921:2;9911:8;9908:16;9905:36;;;9937:1;9934;9927:12;9905:36;9960:52;10004:7;9993:8;9982:9;9978:24;9960:52;:::i;:::-;9950:62;;10065:2;10054:9;10050:18;10037:32;10021:48;;10094:2;10084:8;10081:16;10078:36;;;10110:1;10107;10100:12;10078:36;;10133:52;10177:7;10166:8;10155:9;10151:24;10133:52;:::i;:::-;10123:62;;;9312:879;;;;;;;:::o;10196:247::-;10255:6;10308:2;10296:9;10287:7;10283:23;10279:32;10276:52;;;10324:1;10321;10314:12;10276:52;10363:9;10350:23;10382:31;10407:5;10382:31;:::i;10448:348::-;10500:8;10510:6;10564:3;10557:4;10549:6;10545:17;10541:27;10531:55;;10582:1;10579;10572:12;10531:55;-1:-1:-1;10605:20:46;;-1:-1:-1;;;;;10637:30:46;;10634:50;;;10680:1;10677;10670:12;10634:50;10717:4;10709:6;10705:17;10693:29;;10769:3;10762:4;10753:6;10745;10741:19;10737:30;10734:39;10731:59;;;10786:1;10783;10776:12;10801:479;10881:6;10889;10897;10950:2;10938:9;10929:7;10925:23;10921:32;10918:52;;;10966:1;10963;10956:12;10918:52;11002:9;10989:23;10979:33;;11063:2;11052:9;11048:18;11035:32;-1:-1:-1;;;;;11082:6:46;11079:30;11076:50;;;11122:1;11119;11112:12;11076:50;11161:59;11212:7;11203:6;11192:9;11188:22;11161:59;:::i;11285:1109::-;11438:6;11446;11454;11462;11470;11478;11486;11494;11502;11510;11563:3;11551:9;11542:7;11538:23;11534:33;11531:53;;;11580:1;11577;11570:12;11531:53;11619:9;11606:23;11638:31;11663:5;11638:31;:::i;:::-;11688:5;-1:-1:-1;11740:2:46;11725:18;;11712:32;;-1:-1:-1;11763:37:46;11796:2;11781:18;;11763:37;:::i;:::-;11753:47;;11819:37;11852:2;11841:9;11837:18;11819:37;:::i;:::-;11809:47;;11875:38;11908:3;11897:9;11893:19;11875:38;:::i;:::-;11865:48;;11932:38;11965:3;11954:9;11950:19;11932:38;:::i;:::-;11922:48;;11989:38;12022:3;12011:9;12007:19;11989:38;:::i;:::-;11979:48;;12079:3;12068:9;12064:19;12051:33;12093;12118:7;12093:33;:::i;:::-;12145:7;-1:-1:-1;12199:3:46;12184:19;;12171:33;;-1:-1:-1;12255:3:46;12240:19;;12227:33;-1:-1:-1;;;;;12272:30:46;;12269:50;;;12315:1;12312;12305:12;12269:50;12338;12380:7;12371:6;12360:9;12356:22;12338:50;:::i;:::-;12328:60;;;11285:1109;;;;;;;;;;;;;:::o;12399:416::-;12464:6;12472;12525:2;12513:9;12504:7;12500:23;12496:32;12493:52;;;12541:1;12538;12531:12;12493:52;12580:9;12567:23;12599:31;12624:5;12599:31;:::i;:::-;12649:5;-1:-1:-1;12706:2:46;12691:18;;12678:32;12748:15;;12741:23;12729:36;;12719:64;;12779:1;12776;12769:12;12820:795;12915:6;12923;12931;12939;12992:3;12980:9;12971:7;12967:23;12963:33;12960:53;;;13009:1;13006;12999:12;12960:53;13048:9;13035:23;13067:31;13092:5;13067:31;:::i;:::-;13117:5;-1:-1:-1;13174:2:46;13159:18;;13146:32;13187:33;13146:32;13187:33;:::i;:::-;13239:7;-1:-1:-1;13293:2:46;13278:18;;13265:32;;-1:-1:-1;13348:2:46;13333:18;;13320:32;-1:-1:-1;;;;;13364:30:46;;13361:50;;;13407:1;13404;13397:12;13361:50;13430:22;;13483:4;13475:13;;13471:27;-1:-1:-1;13461:55:46;;13512:1;13509;13502:12;13461:55;13535:74;13601:7;13596:2;13583:16;13578:2;13574;13570:11;13535:74;:::i;13620:388::-;13688:6;13696;13749:2;13737:9;13728:7;13724:23;13720:32;13717:52;;;13765:1;13762;13755:12;13717:52;13804:9;13791:23;13823:31;13848:5;13823:31;:::i;:::-;13873:5;-1:-1:-1;13930:2:46;13915:18;;13902:32;13943:33;13902:32;13943:33;:::i;14013:546::-;14101:6;14109;14117;14125;14178:2;14166:9;14157:7;14153:23;14149:32;14146:52;;;14194:1;14191;14184:12;14146:52;14230:9;14217:23;14207:33;;14291:2;14280:9;14276:18;14263:32;-1:-1:-1;;;;;14310:6:46;14307:30;14304:50;;;14350:1;14347;14340:12;14304:50;14389:59;14440:7;14431:6;14420:9;14416:22;14389:59;:::i;:::-;14013:546;;14467:8;;-1:-1:-1;14363:85:46;;14549:2;14534:18;14521:32;;14013:546;-1:-1:-1;;;;14013:546:46:o;14564:127::-;14625:10;14620:3;14616:20;14613:1;14606:31;14656:4;14653:1;14646:15;14680:4;14677:1;14670:15;14696:127;14757:10;14752:3;14748:20;14745:1;14738:31;14788:4;14785:1;14778:15;14812:4;14809:1;14802:15;14828:135;14867:3;14888:17;;;14885:43;;14908:18;;:::i;:::-;-1:-1:-1;14955:1:46;14944:13;;14828:135::o;14968:380::-;15047:1;15043:12;;;;15090;;;15111:61;;15165:4;15157:6;15153:17;15143:27;;15111:61;15218:2;15210:6;15207:14;15187:18;15184:38;15181:161;;15264:10;15259:3;15255:20;15252:1;15245:31;15299:4;15296:1;15289:15;15327:4;15324:1;15317:15;16532:125;16572:4;16600:1;16597;16594:8;16591:34;;;16605:18;;:::i;:::-;-1:-1:-1;16642:9:46;;16532:125::o;16662:128::-;16702:3;16733:1;16729:6;16726:1;16723:13;16720:39;;;16739:18;;:::i;:::-;-1:-1:-1;16775:9:46;;16662:128::o;16795:410::-;16997:2;16979:21;;;17036:2;17016:18;;;17009:30;17075:34;17070:2;17055:18;;17048:62;-1:-1:-1;;;17141:2:46;17126:18;;17119:44;17195:3;17180:19;;16795:410::o;17210:168::-;17250:7;17316:1;17312;17308:6;17304:14;17301:1;17298:21;17293:1;17286:9;17279:17;17275:45;17272:71;;;17323:18;;:::i;:::-;-1:-1:-1;17363:9:46;;17210:168::o;17383:127::-;17444:10;17439:3;17435:20;17432:1;17425:31;17475:4;17472:1;17465:15;17499:4;17496:1;17489:15;17515:120;17555:1;17581;17571:35;;17586:18;;:::i;:::-;-1:-1:-1;17620:9:46;;17515:120::o;17640:356::-;17842:2;17824:21;;;17861:18;;;17854:30;17920:34;17915:2;17900:18;;17893:62;17987:2;17972:18;;17640:356::o;18001:336::-;18203:2;18185:21;;;18242:2;18222:18;;;18215:30;-1:-1:-1;;;18276:2:46;18261:18;;18254:42;18328:2;18313:18;;18001:336::o;21045:461::-;21232:6;21221:9;21214:25;21275:2;21270;21259:9;21255:18;21248:30;21314:6;21309:2;21298:9;21294:18;21287:34;21371:6;21363;21358:2;21347:9;21343:18;21330:48;21427:1;21398:22;;;21422:2;21394:31;;;21387:42;;;;21490:2;21469:15;;;-1:-1:-1;;21465:29:46;21450:45;21446:54;;21045:461;-1:-1:-1;;21045:461:46:o;23777:127::-;23838:10;23833:3;23829:20;23826:1;23819:31;23869:4;23866:1;23859:15;23893:4;23890:1;23883:15;23909:413;24083:2;24068:18;;24116:1;24105:13;;24095:144;;24161:10;24156:3;24152:20;24149:1;24142:31;24196:4;24193:1;24186:15;24224:4;24221:1;24214:15;24095:144;24248:25;;;24304:2;24289:18;24282:34;23909:413;:::o;24743:185::-;24785:3;24823:5;24817:12;24838:52;24883:6;24878:3;24871:4;24864:5;24860:16;24838:52;:::i;:::-;24906:16;;;;;24743:185;-1:-1:-1;;24743:185:46:o;24933:637::-;25203:3;25241:6;25235:13;25257:53;25303:6;25298:3;25291:4;25283:6;25279:17;25257:53;:::i;:::-;25373:13;;25332:16;;;;25395:57;25373:13;25332:16;25429:4;25417:17;;25395:57;:::i;:::-;-1:-1:-1;;;25474:20:46;;25503:31;;;25561:2;25550:14;;24933:637;-1:-1:-1;;;;24933:637:46:o;25575:470::-;25754:3;25792:6;25786:13;25808:53;25854:6;25849:3;25842:4;25834:6;25830:17;25808:53;:::i;:::-;25924:13;;25883:16;;;;25946:57;25924:13;25883:16;25980:4;25968:17;;25946:57;:::i;:::-;26019:20;;25575:470;-1:-1:-1;;;;25575:470:46:o;26050:439::-;26272:3;26310:6;26304:13;26326:53;26372:6;26367:3;26360:4;26352:6;26348:17;26326:53;:::i;:::-;-1:-1:-1;;;26401:16:46;;26426:27;;;-1:-1:-1;26480:2:46;26469:14;;26050:439;-1:-1:-1;26050:439:46:o;26901:228::-;26940:3;26968:10;27005:2;27002:1;26998:10;27035:2;27032:1;27028:10;27066:3;27062:2;27058:12;27053:3;27050:21;27047:47;;;27074:18;;:::i;31479:407::-;31681:2;31663:21;;;31720:2;31700:18;;;31693:30;31759:34;31754:2;31739:18;;31732:62;-1:-1:-1;;;31825:2:46;31810:18;;31803:41;31876:3;31861:19;;31479:407::o;32245:414::-;32447:2;32429:21;;;32486:2;32466:18;;;32459:30;32525:34;32520:2;32505:18;;32498:62;-1:-1:-1;;;32591:2:46;32576:18;;32569:48;32649:3;32634:19;;32245:414::o;32664:112::-;32696:1;32722;32712:35;;32727:18;;:::i;:::-;-1:-1:-1;32761:9:46;;32664:112::o;32854:583::-;33196:32;33191:3;33184:45;33166:3;33258:6;33252:13;33274:62;33329:6;33324:2;33319:3;33315:12;33308:4;33300:6;33296:17;33274:62;:::i;:::-;-1:-1:-1;;;33395:2:46;33355:16;;;;33387:11;;;33380:24;-1:-1:-1;33428:2:46;33420:11;;32854:583;-1:-1:-1;32854:583:46:o;33568:1345::-;33834:3;33863:1;33896:6;33890:13;33926:3;33948:1;33976:9;33972:2;33968:18;33958:28;;34036:2;34025:9;34021:18;34058;34048:61;;34102:4;34094:6;34090:17;34080:27;;34048:61;34128:2;34176;34168:6;34165:14;34145:18;34142:38;34139:165;;-1:-1:-1;;;34203:33:46;;34259:4;34256:1;34249:15;34289:4;34210:3;34277:17;34139:165;34320:18;34347:104;;;;34465:1;34460:320;;;;34313:467;;34347:104;-1:-1:-1;;34380:24:46;;34368:37;;34425:16;;;;-1:-1:-1;34347:104:46;;34460:320;33515:1;33508:14;;;33552:4;33539:18;;34555:1;34569:165;34583:6;34580:1;34577:13;34569:165;;;34661:14;;34648:11;;;34641:35;34704:16;;;;34598:10;;34569:165;;;34573:3;;34763:6;34758:3;34754:16;34747:23;;34313:467;;;;34802:30;34828:3;34820:6;34802:30;:::i;:::-;-1:-1:-1;;;32831:16:46;;34893:14;;;-1:-1:-1;;;;;;;33568:1345:46:o;37324:500::-;-1:-1:-1;;;;;37593:15:46;;;37575:34;;37645:15;;37640:2;37625:18;;37618:43;37692:2;37677:18;;37670:34;;;37740:3;37735:2;37720:18;;37713:31;;;37518:4;;37761:57;;37798:19;;37790:6;37761:57;:::i;:::-;37753:65;37324:500;-1:-1:-1;;;;;;37324:500:46:o;37829:249::-;37898:6;37951:2;37939:9;37930:7;37926:23;37922:32;37919:52;;;37967:1;37964;37957:12;37919:52;37999:9;37993:16;38018:30;38042:5;38018:30;:::i;38083:136::-;38122:3;38150:5;38140:39;;38159:18;;:::i;:::-;-1:-1:-1;;;38195:18:46;;38083:136::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3475800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ADMIN_ROLE()": "infinite",
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMISSIONED_SALE_TYPEHASH()": "329",
                "_tokenToEdition(uint256)": "2505",
                "approve(address,uint256)": "infinite",
                "atEditionId()": "2453",
                "atTokenId()": "2410",
                "balanceOf(address)": "2673",
                "buyEdition(uint256,bytes,uint256)": "infinite",
                "checkTicketNumbers(uint256,uint256[])": "infinite",
                "contractURI()": "infinite",
                "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": "infinite",
                "depositedForEdition(uint256)": "2482",
                "editionCount()": "2445",
                "editions(uint256)": "infinite",
                "getApproved(uint256)": "4837",
                "grantRole(bytes32,address)": "31197",
                "hasRole(bytes32,address)": "2764",
                "initialize(address,string,string,string)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "owner()": "2398",
                "ownerOf(uint256)": "2606",
                "ownersOfTokenIds(uint256[])": "infinite",
                "revokeRole(bytes32,address)": "31221",
                "royaltyInfo(uint256,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26722",
                "setEditionBaseURI(uint256,string)": "infinite",
                "setEndTime(uint256,uint32)": "infinite",
                "setOwnerOverride(address)": "infinite",
                "setPermissionedQuantity(uint256,uint32)": "infinite",
                "setSignerAddress(uint256,address)": "infinite",
                "setStartTime(uint256,uint32)": "infinite",
                "soundRecoveryAddress()": "351",
                "supportsInterface(bytes4)": "infinite",
                "symbol()": "infinite",
                "tokenToEdition(uint256)": "2537",
                "tokenURI(uint256)": "infinite",
                "totalSupply()": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite",
                "withdrawFunds(uint256)": "infinite",
                "withdrawnForEdition(uint256)": "2571"
              },
              "internal": {
                "_contractBaseURI()": "infinite",
                "_getBitForTicketNumber(uint256,uint256)": "infinite",
                "_sendFunds(address payable,uint256)": "infinite",
                "getSigner(bytes calldata,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "ADMIN_ROLE()": "75b238fc",
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMISSIONED_SALE_TYPEHASH()": "27399d36",
              "_tokenToEdition(uint256)": "5076a64d",
              "approve(address,uint256)": "095ea7b3",
              "atEditionId()": "9725d92e",
              "atTokenId()": "3ef2dbc2",
              "balanceOf(address)": "70a08231",
              "buyEdition(uint256,bytes,uint256)": "f71e54fb",
              "checkTicketNumbers(uint256,uint256[])": "065d5b85",
              "contractURI()": "e8a3d485",
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": "8e116aea",
              "depositedForEdition(uint256)": "e1a3d573",
              "editionCount()": "4bf44026",
              "editions(uint256)": "279c806e",
              "getApproved(uint256)": "081812fc",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "initialize(address,string,string,string)": "5f1e6f6d",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "ownersOfTokenIds(uint256[])": "52f5c2e4",
              "revokeRole(bytes32,address)": "d547741f",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setEditionBaseURI(uint256,string)": "79672692",
              "setEndTime(uint256,uint32)": "bb314ca1",
              "setOwnerOverride(address)": "75a8f08f",
              "setPermissionedQuantity(uint256,uint32)": "52e25bf2",
              "setSignerAddress(uint256,address)": "56dee996",
              "setStartTime(uint256,uint32)": "fbab9e04",
              "soundRecoveryAddress()": "0bcca831",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenToEdition(uint256)": "602787ed",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply()": "18160ddd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdrawFunds(uint256)": "155dd5ee",
              "withdrawnForEdition(uint256)": "d3bb0528"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum ArtistV6.TimeType\",\"name\":\"timeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"newTime\",\"type\":\"uint32\"}],\"name\":\"AuctionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"BaseURISet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"EditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ticketNumber\",\"type\":\"uint256\"}],\"name\":\"EditionPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"PermissionedQuantitySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"SignerAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMISSIONED_SALE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"atEditionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"atTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_ticketNumber\",\"type\":\"uint256\"}],\"name\":\"buyEdition\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_ticketNumbers\",\"type\":\"uint256[]\"}],\"name\":\"checkTicketNumbers\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_signerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createEdition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositedForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"editionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"editions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"ownersOfTokenIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"setEditionBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"setEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"setOwnerOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"setPermissionedQuantity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_newSignerAddress\",\"type\":\"address\"}],\"name\":\"setSignerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"}],\"name\":\"setStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"soundRecoveryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawnForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SoundXYZ - @gigamesh & @vigneshka\",\"details\":\"Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyEdition(uint256,bytes,uint256)\":{\"params\":{\"_editionId\":\"The id of the edition to purchase\",\"_signature\":\"A signed message for authorizing permissioned purchases\",\"_ticketNumber\":\"Ticket number required for validating this buyer hasn't already bought.\"}},\"checkTicketNumbers(uint256,uint256[])\":{\"params\":{\"_editionId\":\"Edition id\",\"_ticketNumbers\":\"List of ticket numbers (indexes)\"}},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)\":{\"params\":{\"_baseURI\":\"The base URI for the edition\",\"_editionId\":\"The expected edition ID\",\"_endTime\":\"The end time of the auction, in seconds since unix epoch.\",\"_fundingRecipient\":\"The account that will receive sales revenue.\",\"_permissionedQuantity\":\"The quantity of tokens that require a signature to buy.\",\"_price\":\"The price at which each token will be sold, in ETH.\",\"_quantity\":\"The maximum number of tokens that can be sold.\",\"_royaltyBPS\":\"The royalty amount in bps.\",\"_signerAddress\":\"signer address.\",\"_startTime\":\"The start time of the auction, in seconds since unix epoch.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"grantRole(bytes32,address)\":{\"params\":{\"account\":\"The account to register\",\"role\":\"The role to grant to the given account\"}},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"The account to check\",\"role\":\"The role to check\"}},\"initialize(address,string,string,string)\":{\"params\":{\"_baseURI\":\"Default base URI for all editions\",\"_name\":\"Name of artist\",\"_owner\":\"Owner of edition\",\"_symbol\":\"Symbol for the artist\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"ownersOfTokenIds(uint256[])\":{\"params\":{\"_tokenIds\":\"List of token ids\"}},\"revokeRole(bytes32,address)\":{\"params\":{\"account\":\"The account to revoke the role from\",\"role\":\"The role to revoke\"}},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"Sale price for the token\",\"_tokenId\":\"token id\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setEditionBaseURI(uint256,string)\":{\"params\":{\"_baseURI\":\"The new base URI\",\"_editionId\":\"The target edition's id\"}},\"setEndTime(uint256,uint32)\":{\"params\":{\"_editionId\":\"The id of the edition to set the end time for\",\"_endTime\":\"The end time to set (in seconds since unix epoch)\"}},\"setOwnerOverride(address)\":{\"params\":{\"_newOwner\":\"The new owner of the contract\"}},\"setPermissionedQuantity(uint256,uint32)\":{\"params\":{\"_editionId\":\"The edition id to set the permissioned quantity for\",\"_permissionedQuantity\":\"The new permissiond quantity\"}},\"setSignerAddress(uint256,address)\":{\"params\":{\"_editionId\":\"The edition id to set the signature address for\",\"_newSignerAddress\":\"The address that will be used to sign purchases\"}},\"setStartTime(uint256,uint32)\":{\"params\":{\"_editionId\":\"The id of the edition to set the start time for\",\"_startTime\":\"The start time to set (in seconds since unix epoch)\"}},\"supportsInterface(bytes4)\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-165\",\"params\":{\"_interfaceId\":\"The interface id to check\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenToEdition(uint256)\":{\"params\":{\"_tokenId\":\"token id\"}},\"tokenURI(uint256)\":{\"details\":\"Concatenate the baseURI and tokenId, to create URI.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"withdrawFunds(uint256)\":{\"params\":{\"_editionId\":\"The id of the edition to withdraw from\"}}},\"title\":\"Artist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyEdition(uint256,bytes,uint256)\":{\"notice\":\"Creates a new token for the given edition, and assigns it to the buyer\"},\"checkTicketNumbers(uint256,uint256[])\":{\"notice\":\"Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\"},\"constructor\":{\"notice\":\"Contract constructor\"},\"contractURI()\":{\"notice\":\"Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\"},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)\":{\"notice\":\"Creates a new edition.\"},\"editionCount()\":{\"notice\":\"returns the number of editions for this artist\"},\"grantRole(bytes32,address)\":{\"notice\":\"Register an account as an admin\"},\"hasRole(bytes32,address)\":{\"notice\":\"Check if an account has a role\"},\"initialize(address,string,string,string)\":{\"notice\":\"Initializes the contract\"},\"ownersOfTokenIds(uint256[])\":{\"notice\":\"Returns a list of owner addresses for a given list of token ids\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revoke a role from an account\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Get royalty information for token\"},\"setEditionBaseURI(uint256,string)\":{\"notice\":\"Sets the base URI for an edition\"},\"setEndTime(uint256,uint32)\":{\"notice\":\"Sets the end time for an edition\"},\"setOwnerOverride(address)\":{\"notice\":\"Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\"},\"setPermissionedQuantity(uint256,uint32)\":{\"notice\":\"Sets the permissioned quantity for an edition\"},\"setSignerAddress(uint256,address)\":{\"notice\":\"Sets the signature address of an edition\"},\"setStartTime(uint256,uint32)\":{\"notice\":\"Sets the start time for an edition\"},\"soundRecoveryAddress()\":{\"notice\":\"Returns the address (ie: gnosis safe) authorized to change ownership of the contract\"},\"supportsInterface(bytes4)\":{\"notice\":\"Informs other contracts which interfaces this contract supports\"},\"tokenToEdition(uint256)\":{\"notice\":\"Returns the edition id for a given token id\"},\"tokenURI(uint256)\":{\"notice\":\"Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\"},\"totalSupply()\":{\"notice\":\"The total number of tokens created by this contract\"},\"withdrawFunds(uint256)\":{\"notice\":\"Withdraws from the Artist to the fundingRecipient for an edition\"}},\"notice\":\"This contract is used to create & sell song NFTs for the artist who owns the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ArtistV6.sol\":\"ArtistV6\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\"},\"contracts/ArtistV6.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.14;\\n\\n/*\\n               ^###############################################&5               \\n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \\n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \\n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \\n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \\n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \\n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \\n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \\n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \\n\\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\\nimport '@openzeppelin/contracts/utils/Strings.sol';\\nimport './auxillary/AccessManager.sol';\\n\\n/// @title Artist\\n/// @author SoundXYZ - @gigamesh & @vigneshka\\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\\ncontract ArtistV6 is ERC721Upgradeable, IERC2981Upgradeable, AccessManager {\\n    // ================================\\n    // TYPES\\n    // ================================\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n        // quantity of permissioned tokens\\n        uint32 permissionedQuantity;\\n        // whitelist signer address\\n        address signerAddress;\\n        // base uri for the edition\\n        string baseURI;\\n    }\\n\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSA for bytes32;\\n\\n    enum TimeType {\\n        START,\\n        END\\n    }\\n\\n    // ================================\\n    // STORAGE\\n    // ================================\\n\\n    // The permissioned typehash (used for checking signature validity)\\n    bytes32 public constant PERMISSIONED_SALE_TYPEHASH =\\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\\n    // Domain separator - used to prevent replay attacks using signatures from different networks\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    // The default baseURI for the contract\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter public atTokenId; // DEPRECATED IN V3\\n    CountersUpgradeable.Counter public atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public _tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\\n\\n    // ================================\\n    // EVENTS\\n    // ================================\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime,\\n        uint32 permissionedQuantity,\\n        address signerAddress\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer,\\n        uint256 ticketNumber\\n    );\\n\\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\\n\\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\\n\\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\\n\\n    event BaseURISet(uint256 editionId, string baseURI);\\n\\n    // ================================\\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Contract constructor\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n    }\\n\\n    /// @notice Initializes the contract\\n    /// @param _owner Owner of edition\\n    /// @param _name Name of artist\\n    /// @param _symbol Symbol for the artist\\n    /// @param _baseURI Default base URI for all editions\\n    function initialize(\\n        address _owner,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __AccessManager_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // baseURI override only for testnets\\n        if (block.chainid != 1) {\\n            baseURI = _baseURI;\\n        }\\n\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new edition.\\n    /// @param _fundingRecipient The account that will receive sales revenue.\\n    /// @param _price The price at which each token will be sold, in ETH.\\n    /// @param _quantity The maximum number of tokens that can be sold.\\n    /// @param _royaltyBPS The royalty amount in bps.\\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\\n    /// @param _signerAddress signer address.\\n    /// @param _editionId The expected edition ID\\n    /// @param _baseURI The base URI for the edition\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime,\\n        uint32 _permissionedQuantity,\\n        address _signerAddress,\\n        uint256 _editionId,\\n        string memory _baseURI\\n    ) external checkPermission(ADMIN_ROLE) {\\n        require(_quantity > 0, 'Must set quantity');\\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\\n        require(_endTime > _startTime, 'End time must be greater than start time');\\n        require(_editionId == atEditionId.current(), 'Wrong edition ID');\\n\\n        if (_permissionedQuantity > 0) {\\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\\n        }\\n\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime,\\n            permissionedQuantity: _permissionedQuantity,\\n            signerAddress: _signerAddress,\\n            baseURI: _baseURI\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime,\\n            _permissionedQuantity,\\n            _signerAddress\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\\n    /// @param _editionId The id of the edition to purchase\\n    /// @param _signature A signed message for authorizing permissioned purchases\\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\\n    function buyEdition(\\n        uint256 _editionId,\\n        bytes calldata _signature,\\n        uint256 _ticketNumber\\n    ) external payable {\\n        // Caching variables locally to reduce reads\\n        uint256 price = editions[_editionId].price;\\n        uint32 quantity = editions[_editionId].quantity;\\n        uint32 numSold = editions[_editionId].numSold;\\n        uint32 newNumSold = numSold + 1;\\n        uint32 startTime = editions[_editionId].startTime;\\n        uint32 endTime = editions[_editionId].endTime;\\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\\n\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(quantity > 0, 'Edition does not exist');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases after the end time\\n        require(endTime > block.timestamp, 'Auction has ended');\\n\\n        // If the public auction hasn't started...\\n        if (startTime > block.timestamp) {\\n            // Check that permissioned tokens are still available\\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\\n\\n            // Check that the signature is valid.\\n            require(\\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\\n                'Invalid signer'\\n            );\\n        } else {\\n            // Check that there are still tokens available to purchase.\\n            // Only need to check this for the public sale (after the start time)\\n            // so we can accomodate open editions\\n            require(numSold < quantity, 'This edition is already sold out.');\\n        }\\n\\n        // Create the token id by packing editionId in the top bits\\n        uint256 tokenId;\\n        unchecked {\\n            tokenId = (_editionId << 128) | newNumSold;\\n            // Increment the number of tokens sold for this edition.\\n            editions[_editionId].numSold = newNumSold;\\n        }\\n\\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\\n        if (editions[_editionId].fundingRecipient == owner()) {\\n            // Update the deposited total for the edition\\n            depositedForEdition[_editionId] += msg.value;\\n        } else {\\n            // Send funds to the funding recipient.\\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\\n        }\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, tokenId);\\n\\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\\n    }\\n\\n    /// @notice Withdraws from the Artist to the fundingRecipient for an edition\\n    /// @param _editionId The id of the edition to withdraw from\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    /// @notice Sets the start time for an edition\\n    /// @param _editionId The id of the edition to set the start time for\\n    /// @param _startTime The start time to set (in seconds since unix epoch)\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external checkPermission(ADMIN_ROLE) {\\n        editions[_editionId].startTime = _startTime;\\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\\n    }\\n\\n    /// @notice Sets the end time for an edition\\n    /// @param _editionId The id of the edition to set the end time for\\n    /// @param _endTime The end time to set (in seconds since unix epoch)\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external checkPermission(ADMIN_ROLE) {\\n        editions[_editionId].endTime = _endTime;\\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\\n    }\\n\\n    /// @notice Sets the signature address of an edition\\n    /// @param _editionId The edition id to set the signature address for\\n    /// @param _newSignerAddress The address that will be used to sign purchases\\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external checkPermission(ADMIN_ROLE) {\\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\\n\\n        editions[_editionId].signerAddress = _newSignerAddress;\\n        emit SignerAddressSet(_editionId, _newSignerAddress);\\n    }\\n\\n    /// @notice Sets the permissioned quantity for an edition\\n    /// @param _editionId The edition id to set the permissioned quantity for\\n    /// @param _permissionedQuantity The new permissiond quantity\\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity)\\n        external\\n        checkPermission(ADMIN_ROLE)\\n    {\\n        // Prevent setting to permissioned quantity when there is no signer address\\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\\n\\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\\n    }\\n\\n    /// @notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\\n    /// @param _newOwner The new owner of the contract\\n    function setOwnerOverride(address _newOwner) external {\\n        require(_msgSender() == soundRecoveryAddress() || _msgSender() == owner(), 'unauthorized');\\n\\n        super._transferOwnership(_newOwner);\\n    }\\n\\n    /// @notice Sets the base URI for an edition\\n    /// @param _editionId The target edition's id\\n    /// @param _baseURI The new base URI\\n    function setEditionBaseURI(uint256 _editionId, string calldata _baseURI) external checkPermission(ADMIN_ROLE) {\\n        require(\\n            editions[_editionId].quantity > 0 || editions[_editionId].permissionedQuantity > 0,\\n            'Nonexistent edition'\\n        );\\n\\n        editions[_editionId].baseURI = _baseURI;\\n\\n        emit BaseURISet(_editionId, _baseURI);\\n    }\\n\\n    // ================================\\n    // VIEW FUNCTIONS\\n    // ================================\\n\\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\\n    /// @dev Concatenate the baseURI and tokenId, to create URI.\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        uint256 editionId = tokenToEdition(_tokenId);\\n\\n        string memory editionBaseURI = editions[editionId].baseURI;\\n\\n        // If the edition has a baseURI, it means this edition is on permastorage\\n        // Using 3 as the length in case it gets accidentally set to empty space\\n        if (bytes(editionBaseURI).length > 3) {\\n            return string.concat(editionBaseURI, Strings.toString(_tokenId), '/metadata.json');\\n        }\\n\\n        return string.concat(_contractBaseURI(), Strings.toString(_tokenId));\\n    }\\n\\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\\n    function contractURI() public view returns (string memory) {\\n        return string.concat(_contractBaseURI(), 'storefront');\\n    }\\n\\n    /// @notice Get royalty information for token\\n    /// @param _tokenId token id\\n    /// @param _salePrice Sale price for the token\\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        uint256 editionId = tokenToEdition(_tokenId);\\n        Edition memory edition = editions[editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    /// @notice The total number of tokens created by this contract\\n    function totalSupply() external view returns (uint256) {\\n        uint256 total = 0;\\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\\n            total += editions[id].numSold;\\n        }\\n        return total;\\n    }\\n\\n    /// @notice Informs other contracts which interfaces this contract supports\\n    /// @param _interfaceId The interface id to check\\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    /// @notice returns the number of editions for this artist\\n    function editionCount() external view returns (uint256) {\\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\\n    }\\n\\n    /// @notice Returns the edition id for a given token id\\n    /// @param _tokenId token id\\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\\n        // Check the top bits to see if the edition id is there\\n        uint256 editionId = _tokenId >> 128;\\n\\n        // If edition ID is 0, then this edition was created before the V3 upgrade\\n        if (editionId == 0) {\\n            // get edition ID from storage\\n            return _tokenToEdition[_tokenId];\\n        }\\n\\n        return editionId;\\n    }\\n\\n    /// @notice Returns a list of owner addresses for a given list of token ids\\n    /// @param _tokenIds List of token ids\\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\\n        address[] memory owners = new address[](_tokenIds.length);\\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\\n            owners[i] = ownerOf(_tokenIds[i]);\\n        }\\n        return owners;\\n    }\\n\\n    /// @notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\\n    /// @param _editionId Edition id\\n    /// @param _ticketNumbers List of ticket numbers (indexes)\\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\\n        external\\n        view\\n        returns (bool[] memory)\\n    {\\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\\n\\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\\n            claimed[i] = storedBit == 1;\\n        }\\n\\n        return claimed;\\n    }\\n\\n    /// @notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract\\n    function soundRecoveryAddress() public view virtual returns (address) {\\n        if (block.chainid == 1) {\\n            return 0x858a92511485715Cfb754f397a7894b7724c7Abd;\\n        } else if (block.chainid == 4) {\\n            return 0xee35E946Dd73EF78d352454c3F915e2cA0a09d87;\\n        } else {\\n            revert('unsupported chain');\\n        }\\n    }\\n\\n    // ================================\\n    // PRIVATE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Sends funds to an address\\n    /// @param _recipient The address to send funds to\\n    /// @param _amount The amount of funds to send\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n\\n    /// @notice Gets signer address to validate permissioned purchase\\n    /// @param _signature signed message\\n    /// @param _editionId edition id\\n    /// @param _ticketNumber ticket number to check\\n    /// @return address of signer\\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\\n    function getSigner(\\n        bytes calldata _signature,\\n        uint256 _editionId,\\n        uint256 _ticketNumber\\n    ) private returns (address) {\\n        // Check that the ticket number is within the reserved range for the edition\\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\\n\\n        // gets the stored bit\\n        (\\n            uint256 storedBit,\\n            uint256 localGroup,\\n            uint256 localGroupOffset,\\n            uint256 ticketNumbersIdx\\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\\n\\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\\n\\n        // Flip the bit to 1 to indicate that the ticket has been claimed\\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\\n\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                '\\\\x19\\\\x01',\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\\n            )\\n        );\\n        return digest.recover(_signature);\\n    }\\n\\n    /// @notice Gets the bit variables associated with a ticket number\\n    /// @param _editionId edition id\\n    /// @param _ticketNumber ticket number\\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\\n        private\\n        view\\n        returns (\\n            uint256,\\n            uint256,\\n            uint256,\\n            uint256\\n        )\\n    {\\n        uint256 localGroup; // the bit array for this ticket number\\n        uint256 ticketNumbersIdx; // the index of the the local group\\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\\n        unchecked {\\n            ticketNumbersIdx = _ticketNumber / 256;\\n            localGroupOffset = _ticketNumber % 256;\\n        }\\n\\n        // cache the local group for efficiency\\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\\n\\n        // gets the stored bit\\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\\n\\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\\n    }\\n\\n    function _contractBaseURI() private view returns (string memory) {\\n        string memory contractAddress = Strings.toHexString(uint256(uint160(address(this))), 20);\\n        if (block.chainid == 1) {\\n            return string.concat('https://metadata.sound.xyz/v1/', contractAddress, '/');\\n        } else {\\n            return string.concat(baseURI, contractAddress, '/');\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x286ca6b0af2eeda4af225c912866858e8fc28f957e1407d4d987b60a080a7d66\",\"license\":\"GPL-3.0-or-later\"},\"contracts/auxillary/AccessManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.14;\\n\\nimport '@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\n\\n/// @title AccessManager\\n/// @author OpenZeppelin & Sound.xyz (@gigma)\\n/// @notice Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.\\n/// @dev Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)\\ncontract AccessManager is Initializable, ContextUpgradeable {\\n    // The admin role identifier\\n    bytes32 public constant ADMIN_ROLE = keccak256('ADMIN');\\n\\n    address private _owner;\\n\\n    // Track registered admins\\n    mapping(bytes32 => mapping(address => bool)) private _roles;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    // =====================\\n    // Ownership functions\\n    // =====================\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __AccessManager_init() internal onlyInitializing {\\n        __Context_init_unchained();\\n        __AccessManager_init_unchained();\\n    }\\n\\n    function __AccessManager_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), 'Ownable: caller is not the owner');\\n        _;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        require(newOwner != address(0), 'Ownable: new owner is the zero address');\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    // =====================\\n    // Role functions\\n    // =====================\\n\\n    /// @notice Register an account as an admin\\n    /// @param role The role to grant to the given account\\n    /// @param account The account to register\\n    function grantRole(bytes32 role, address account) external onlyOwner {\\n        if (!hasRole(role, account)) {\\n            _roles[role][account] = true;\\n            emit RoleGranted(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Revoke a role from an account\\n    /// @param role The role to revoke\\n    /// @param account The account to revoke the role from\\n    function revokeRole(bytes32 role, address account) external onlyOwner {\\n        if (hasRole(role, account)) {\\n            _roles[role][account] = false;\\n            emit RoleRevoked(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Check if an account has a role\\n    /// @param role The role to check\\n    /// @param account The account to check\\n    function hasRole(bytes32 role, address account) public view returns (bool) {\\n        return _roles[role][account];\\n    }\\n\\n    /// @notice Check if the given address is the owner or has the given role.\\n    /// @param role The role to check for.\\n    modifier checkPermission(bytes32 role) {\\n        require(_msgSender() == owner() || hasRole(role, _msgSender()), 'unauthorized');\\n        _;\\n    }\\n\\n    uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0xc5cf31ec516a0981fd88b34b36d42a24e3678ae49f8fb5c81701cc6d0e28a316\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              },
              {
                "astId": 11701,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 11707,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_roles",
                "offset": 0,
                "slot": "152",
                "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 11927,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "153",
                "type": "t_array(t_uint256)48_storage"
              },
              {
                "astId": 10419,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "baseURI",
                "offset": 0,
                "slot": "201",
                "type": "t_string_storage"
              },
              {
                "astId": 10422,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "atTokenId",
                "offset": 0,
                "slot": "202",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 10425,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "atEditionId",
                "offset": 0,
                "slot": "203",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 10430,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "editions",
                "offset": 0,
                "slot": "204",
                "type": "t_mapping(t_uint256,t_struct(Edition)10400_storage)"
              },
              {
                "astId": 10434,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "_tokenToEdition",
                "offset": 0,
                "slot": "205",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 10438,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "depositedForEdition",
                "offset": 0,
                "slot": "206",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 10442,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "withdrawnForEdition",
                "offset": 0,
                "slot": "207",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 10448,
                "contract": "contracts/ArtistV6.sol:ArtistV6",
                "label": "ticketNumbers",
                "offset": 0,
                "slot": "208",
                "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_address_payable": {
                "encoding": "inplace",
                "label": "address payable",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)48_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[48]",
                "numberOfBytes": "1536"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(uint256 => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_uint256)"
              },
              "t_mapping(t_uint256,t_struct(Edition)10400_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ArtistV6.Edition)",
                "numberOfBytes": "32",
                "value": "t_struct(Edition)10400_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(Edition)10400_storage": {
                "encoding": "inplace",
                "label": "struct ArtistV6.Edition",
                "members": [
                  {
                    "astId": 10381,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "fundingRecipient",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address_payable"
                  },
                  {
                    "astId": 10383,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "price",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 10385,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "numSold",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 10387,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "quantity",
                    "offset": 4,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 10389,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "royaltyBPS",
                    "offset": 8,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 10391,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "startTime",
                    "offset": 12,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 10393,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "endTime",
                    "offset": 16,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 10395,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "permissionedQuantity",
                    "offset": 20,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 10397,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "signerAddress",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_address"
                  },
                  {
                    "astId": 10399,
                    "contract": "contracts/ArtistV6.sol:ArtistV6",
                    "label": "baseURI",
                    "offset": 0,
                    "slot": "4",
                    "type": "t_string_storage"
                  }
                ],
                "numberOfBytes": "160"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "buyEdition(uint256,bytes,uint256)": {
                "notice": "Creates a new token for the given edition, and assigns it to the buyer"
              },
              "checkTicketNumbers(uint256,uint256[])": {
                "notice": "Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)"
              },
              "constructor": {
                "notice": "Contract constructor"
              },
              "contractURI()": {
                "notice": "Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront"
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": {
                "notice": "Creates a new edition."
              },
              "editionCount()": {
                "notice": "returns the number of editions for this artist"
              },
              "grantRole(bytes32,address)": {
                "notice": "Register an account as an admin"
              },
              "hasRole(bytes32,address)": {
                "notice": "Check if an account has a role"
              },
              "initialize(address,string,string,string)": {
                "notice": "Initializes the contract"
              },
              "ownersOfTokenIds(uint256[])": {
                "notice": "Returns a list of owner addresses for a given list of token ids"
              },
              "revokeRole(bytes32,address)": {
                "notice": "Revoke a role from an account"
              },
              "royaltyInfo(uint256,uint256)": {
                "notice": "Get royalty information for token"
              },
              "setEditionBaseURI(uint256,string)": {
                "notice": "Sets the base URI for an edition"
              },
              "setEndTime(uint256,uint32)": {
                "notice": "Sets the end time for an edition"
              },
              "setOwnerOverride(address)": {
                "notice": "Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)"
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "notice": "Sets the permissioned quantity for an edition"
              },
              "setSignerAddress(uint256,address)": {
                "notice": "Sets the signature address of an edition"
              },
              "setStartTime(uint256,uint32)": {
                "notice": "Sets the start time for an edition"
              },
              "soundRecoveryAddress()": {
                "notice": "Returns the address (ie: gnosis safe) authorized to change ownership of the contract"
              },
              "supportsInterface(bytes4)": {
                "notice": "Informs other contracts which interfaces this contract supports"
              },
              "tokenToEdition(uint256)": {
                "notice": "Returns the edition id for a given token id"
              },
              "tokenURI(uint256)": {
                "notice": "Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json"
              },
              "totalSupply()": {
                "notice": "The total number of tokens created by this contract"
              },
              "withdrawFunds(uint256)": {
                "notice": "Withdraws from the Artist to the fundingRecipient for an edition"
              }
            },
            "notice": "This contract is used to create & sell song NFTs for the artist who owns the contract.",
            "version": 1
          }
        }
      },
      "contracts/auxillary/AccessManager.sol": {
        "AccessManager": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleGranted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleRevoked",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADMIN_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "grantRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "hasRole",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "revokeRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "OpenZeppelin & Sound.xyz (@gigma)",
            "details": "Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)",
            "kind": "dev",
            "methods": {
              "grantRole(bytes32,address)": {
                "params": {
                  "account": "The account to register",
                  "role": "The role to grant to the given account"
                }
              },
              "hasRole(bytes32,address)": {
                "params": {
                  "account": "The account to check",
                  "role": "The role to check"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "revokeRole(bytes32,address)": {
                "params": {
                  "account": "The account to revoke the role from",
                  "role": "The role to revoke"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "AccessManager",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610452806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632f2ff15d1461006757806375b238fc1461007c5780638da5cb5b146100b657806391d14854146100d1578063d547741f146100f4578063f2fde38b14610107575b600080fd5b61007a610075366004610399565b61011a565b005b6100a37fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4281565b6040519081526020015b60405180910390f35b6033546040516001600160a01b0390911681526020016100ad565b6100e46100df366004610399565b6101d4565b60405190151581526020016100ad565b61007a610102366004610399565b6101ff565b61007a6101153660046103c5565b610290565b6033546001600160a01b0316331461014d5760405162461bcd60e51b8152600401610144906103e7565b60405180910390fd5b61015782826101d4565b6101d05760008281526034602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561018f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60009182526034602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6033546001600160a01b031633146102295760405162461bcd60e51b8152600401610144906103e7565b61023382826101d4565b156101d05760008281526034602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6033546001600160a01b031633146102ba5760405162461bcd60e51b8152600401610144906103e7565b6001600160a01b03811661031f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610144565b6103288161032b565b50565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80356001600160a01b038116811461039457600080fd5b919050565b600080604083850312156103ac57600080fd5b823591506103bc6020840161037d565b90509250929050565b6000602082840312156103d757600080fd5b6103e08261037d565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122088a0f2f59d4a2f3fa7958dcba8a157f53cadd8793360a849ca03912c4313ef5964736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x452 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x107 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x399 JUMP JUMPDEST PUSH2 0x11A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA3 PUSH32 0xDF8B4C520FFE197C5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD JUMP JUMPDEST PUSH2 0xE4 PUSH2 0xDF CALLDATASIZE PUSH1 0x4 PUSH2 0x399 JUMP JUMPDEST PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD JUMP JUMPDEST PUSH2 0x7A PUSH2 0x102 CALLDATASIZE PUSH1 0x4 PUSH2 0x399 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x7A PUSH2 0x115 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C5 JUMP JUMPDEST PUSH2 0x290 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x157 DUP3 DUP3 PUSH2 0x1D4 JUMP JUMPDEST PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x18F CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x233 DUP3 DUP3 PUSH2 0x1D4 JUMP JUMPDEST ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x31F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x328 DUP2 PUSH2 0x32B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3BC PUSH1 0x20 DUP5 ADD PUSH2 0x37D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E0 DUP3 PUSH2 0x37D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 LOG0 CALLCODE CREATE2 SWAP14 0x4A 0x2F EXTCODEHASH 0xA7 SWAP6 DUP14 0xCB 0xA8 LOG1 JUMPI CREATE2 EXTCODECOPY 0xAD 0xD8 PUSH26 0x3360A849CA03912C4313EF5964736F6C634300080E0033000000 ",
              "sourceMap": "470:3450:42:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ADMIN_ROLE_11699": {
                  "entryPoint": null,
                  "id": 11699,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transferOwnership_11819": {
                  "entryPoint": 811,
                  "id": 11819,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@grantRole_11852": {
                  "entryPoint": 282,
                  "id": 11852,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@hasRole_11901": {
                  "entryPoint": 468,
                  "id": 11901,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@owner_11762": {
                  "entryPoint": null,
                  "id": 11762,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@revokeRole_11884": {
                  "entryPoint": 511,
                  "id": 11884,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@transferOwnership_11799": {
                  "entryPoint": 656,
                  "id": 11799,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 893,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 965,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 921,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 999,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1989:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:124:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "165:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "174:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "177:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "167:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "167:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "167:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "150:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "155:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "146:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "146:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "159:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "142:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "142:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "111:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:173:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "279:167:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "325:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "334:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "337:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "327:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "327:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "327:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "300:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "309:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "296:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "296:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "321:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "292:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "292:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "289:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "350:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "373:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "360:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "360:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "350:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "392:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "425:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "436:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "421:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "421:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "402:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "402:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "392:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "237:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "248:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "260:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "268:6:46",
                            "type": ""
                          }
                        ],
                        "src": "192:254:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "552:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "562:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "574:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "585:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "570:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "570:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "604:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "615:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "597:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "597:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "597:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "521:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "532:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "543:4:46",
                            "type": ""
                          }
                        ],
                        "src": "451:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "734:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "744:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "756:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "767:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "752:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "752:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "744:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "786:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "801:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "817:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "822:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "813:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "813:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "826:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "809:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "809:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "797:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "797:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "779:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "779:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "779:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "703:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "714:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "725:4:46",
                            "type": ""
                          }
                        ],
                        "src": "633:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "936:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "946:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "958:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "969:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "954:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "954:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "946:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "988:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1013:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1006:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1006:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "999:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "999:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "981:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "981:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "905:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "916:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "927:4:46",
                            "type": ""
                          }
                        ],
                        "src": "841:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1103:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1149:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1158:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1161:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1151:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1151:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1151:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1124:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1133:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1120:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1120:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1145:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1116:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1116:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1113:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1174:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1203:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1184:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1184:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1069:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1080:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1092:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1033:186:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1398:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1415:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1426:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1408:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1408:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1408:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1449:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1460:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1445:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1445:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1465:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1438:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1438:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1438:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1488:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1499:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1484:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1484:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1504:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1477:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1477:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1477:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1548:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1560:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1571:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1556:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1556:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1548:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1375:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1389:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1224:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1759:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1776:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1787:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1769:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1769:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1769:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1810:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1821:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1806:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1806:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1826:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1799:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1799:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1799:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1849:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1860:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1845:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1845:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1865:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1838:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1838:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1838:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1920:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1931:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1916:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1916:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1936:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1909:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1909:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1909:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1954:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1966:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1977:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1962:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1962:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1954:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1736:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1750:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1585:402:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c80632f2ff15d1461006757806375b238fc1461007c5780638da5cb5b146100b657806391d14854146100d1578063d547741f146100f4578063f2fde38b14610107575b600080fd5b61007a610075366004610399565b61011a565b005b6100a37fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4281565b6040519081526020015b60405180910390f35b6033546040516001600160a01b0390911681526020016100ad565b6100e46100df366004610399565b6101d4565b60405190151581526020016100ad565b61007a610102366004610399565b6101ff565b61007a6101153660046103c5565b610290565b6033546001600160a01b0316331461014d5760405162461bcd60e51b8152600401610144906103e7565b60405180910390fd5b61015782826101d4565b6101d05760008281526034602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561018f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60009182526034602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6033546001600160a01b031633146102295760405162461bcd60e51b8152600401610144906103e7565b61023382826101d4565b156101d05760008281526034602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6033546001600160a01b031633146102ba5760405162461bcd60e51b8152600401610144906103e7565b6001600160a01b03811661031f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610144565b6103288161032b565b50565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80356001600160a01b038116811461039457600080fd5b919050565b600080604083850312156103ac57600080fd5b823591506103bc6020840161037d565b90509250929050565b6000602082840312156103d757600080fd5b6103e08261037d565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122088a0f2f59d4a2f3fa7958dcba8a157f53cadd8793360a849ca03912c4313ef5964736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x107 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x399 JUMP JUMPDEST PUSH2 0x11A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA3 PUSH32 0xDF8B4C520FFE197C5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD JUMP JUMPDEST PUSH2 0xE4 PUSH2 0xDF CALLDATASIZE PUSH1 0x4 PUSH2 0x399 JUMP JUMPDEST PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD JUMP JUMPDEST PUSH2 0x7A PUSH2 0x102 CALLDATASIZE PUSH1 0x4 PUSH2 0x399 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x7A PUSH2 0x115 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C5 JUMP JUMPDEST PUSH2 0x290 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x157 DUP3 DUP3 PUSH2 0x1D4 JUMP JUMPDEST PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x18F CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x233 DUP3 DUP3 PUSH2 0x1D4 JUMP JUMPDEST ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x31F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x328 DUP2 PUSH2 0x32B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3BC PUSH1 0x20 DUP5 ADD PUSH2 0x37D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E0 DUP3 PUSH2 0x37D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 LOG0 CALLCODE CREATE2 SWAP14 0x4A 0x2F EXTCODEHASH 0xA7 SWAP6 DUP14 0xCB 0xA8 LOG1 JUMPI CREATE2 EXTCODECOPY 0xAD 0xD8 PUSH26 0x3360A849CA03912C4313EF5964736F6C634300080E0033000000 ",
              "sourceMap": "470:3450:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:226;;;;;;:::i;:::-;;:::i;:::-;;569:55;;606:18;569:55;;;;;597:25:46;;;585:2;570:18;569:55:42;;;;;;;;1559:77;1623:6;;1559:77;;-1:-1:-1;;;;;1623:6:42;;;779:51:46;;767:2;752:18;1559:77:42;633:203:46;3492:120:42;;;;;;:::i;:::-;;:::i;:::-;;;1006:14:46;;999:22;981:41;;969:2;954:18;3492:120:42;841:187:46;3130:227:42;;;;;;:::i;:::-;;:::i;1990:190::-;;;;;;:::i;:::-;;:::i;2754:226::-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;;;;;;;;;2838:22:::1;2846:4;2852:7;2838;:22::i;:::-;2833:141;;2876:12;::::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;2876:21:42;::::1;::::0;;;;;;;:28;;-1:-1:-1;;2876:28:42::1;2900:4;2876:28;::::0;;2950:12:::1;929:10:12::0;;850:96;2950:12:42::1;-1:-1:-1::0;;;;;2923:40:42::1;2941:7;-1:-1:-1::0;;;;;2923:40:42::1;2935:4;2923:40;;;;;;;;;;2833:141;2754:226:::0;;:::o;3492:120::-;3561:4;3584:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3584:21:42;;;;;;;;;;;;;;;3492:120::o;3130:227::-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;3214:22:::1;3222:4;3228:7;3214;:22::i;:::-;3210:141;;;3276:5;3252:12:::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;3252:21:42;::::1;::::0;;;;;;;;:29;;-1:-1:-1;;3252:29:42::1;::::0;;3300:40;929:10:12;;3252:12:42;;3300:40:::1;::::0;3276:5;3300:40:::1;3130:227:::0;;:::o;1990:190::-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;2070:22:42;::::1;2062:73;;;::::0;-1:-1:-1;;;2062:73:42;;1787:2:46;2062:73:42::1;::::0;::::1;1769:21:46::0;1826:2;1806:18;;;1799:30;1865:34;1845:18;;;1838:62;-1:-1:-1;;;1916:18:46;;;1909:36;1962:19;;2062:73:42::1;1585:402:46::0;2062:73:42::1;2145:28;2164:8;2145:18;:28::i;:::-;1990:190:::0;:::o;2334:179::-;2418:6;;;-1:-1:-1;;;;;2434:17:42;;;-1:-1:-1;;;;;;2434:17:42;;;;;;;2466:40;;2418:6;;;2434:17;2418:6;;2466:40;;2399:16;;2466:40;2389:124;2334:179;:::o;14:173:46:-;82:20;;-1:-1:-1;;;;;131:31:46;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;373:9;360:23;350:33;;402:38;436:2;425:9;421:18;402:38;:::i;:::-;392:48;;192:254;;;;;:::o;1033:186::-;1092:6;1145:2;1133:9;1124:7;1120:23;1116:32;1113:52;;;1161:1;1158;1151:12;1113:52;1184:29;1203:9;1184:29;:::i;:::-;1174:39;1033:186;-1:-1:-1;;;1033:186:46:o;1224:356::-;1426:2;1408:21;;;1445:18;;;1438:30;1504:34;1499:2;1484:18;;1477:62;1571:2;1556:18;;1224:356::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "221200",
                "executionCost": "263",
                "totalCost": "221463"
              },
              "external": {
                "ADMIN_ROLE()": "184",
                "grantRole(bytes32,address)": "31109",
                "hasRole(bytes32,address)": "2709",
                "owner()": "2323",
                "revokeRole(bytes32,address)": "31133",
                "transferOwnership(address)": "28400"
              },
              "internal": {
                "__AccessManager_init()": "infinite",
                "__AccessManager_init_unchained()": "infinite",
                "_transferOwnership(address)": "25824"
              }
            },
            "methodIdentifiers": {
              "ADMIN_ROLE()": "75b238fc",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "owner()": "8da5cb5b",
              "revokeRole(bytes32,address)": "d547741f",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"OpenZeppelin & Sound.xyz (@gigma)\",\"details\":\"Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)\",\"kind\":\"dev\",\"methods\":{\"grantRole(bytes32,address)\":{\"params\":{\"account\":\"The account to register\",\"role\":\"The role to grant to the given account\"}},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"The account to check\",\"role\":\"The role to check\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"revokeRole(bytes32,address)\":{\"params\":{\"account\":\"The account to revoke the role from\",\"role\":\"The role to revoke\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"AccessManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"grantRole(bytes32,address)\":{\"notice\":\"Register an account as an admin\"},\"hasRole(bytes32,address)\":{\"notice\":\"Check if an account has a role\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revoke a role from an account\"}},\"notice\":\"Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/auxillary/AccessManager.sol\":\"AccessManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"contracts/auxillary/AccessManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.14;\\n\\nimport '@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\n\\n/// @title AccessManager\\n/// @author OpenZeppelin & Sound.xyz (@gigma)\\n/// @notice Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.\\n/// @dev Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)\\ncontract AccessManager is Initializable, ContextUpgradeable {\\n    // The admin role identifier\\n    bytes32 public constant ADMIN_ROLE = keccak256('ADMIN');\\n\\n    address private _owner;\\n\\n    // Track registered admins\\n    mapping(bytes32 => mapping(address => bool)) private _roles;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    // =====================\\n    // Ownership functions\\n    // =====================\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __AccessManager_init() internal onlyInitializing {\\n        __Context_init_unchained();\\n        __AccessManager_init_unchained();\\n    }\\n\\n    function __AccessManager_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), 'Ownable: caller is not the owner');\\n        _;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        require(newOwner != address(0), 'Ownable: new owner is the zero address');\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    // =====================\\n    // Role functions\\n    // =====================\\n\\n    /// @notice Register an account as an admin\\n    /// @param role The role to grant to the given account\\n    /// @param account The account to register\\n    function grantRole(bytes32 role, address account) external onlyOwner {\\n        if (!hasRole(role, account)) {\\n            _roles[role][account] = true;\\n            emit RoleGranted(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Revoke a role from an account\\n    /// @param role The role to revoke\\n    /// @param account The account to revoke the role from\\n    function revokeRole(bytes32 role, address account) external onlyOwner {\\n        if (hasRole(role, account)) {\\n            _roles[role][account] = false;\\n            emit RoleRevoked(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Check if an account has a role\\n    /// @param role The role to check\\n    /// @param account The account to check\\n    function hasRole(bytes32 role, address account) public view returns (bool) {\\n        return _roles[role][account];\\n    }\\n\\n    /// @notice Check if the given address is the owner or has the given role.\\n    /// @param role The role to check for.\\n    modifier checkPermission(bytes32 role) {\\n        require(_msgSender() == owner() || hasRole(role, _msgSender()), 'unauthorized');\\n        _;\\n    }\\n\\n    uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0xc5cf31ec516a0981fd88b34b36d42a24e3678ae49f8fb5c81701cc6d0e28a316\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/auxillary/AccessManager.sol:AccessManager",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/auxillary/AccessManager.sol:AccessManager",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/auxillary/AccessManager.sol:AccessManager",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 11701,
                "contract": "contracts/auxillary/AccessManager.sol:AccessManager",
                "label": "_owner",
                "offset": 0,
                "slot": "51",
                "type": "t_address"
              },
              {
                "astId": 11707,
                "contract": "contracts/auxillary/AccessManager.sol:AccessManager",
                "label": "_roles",
                "offset": 0,
                "slot": "52",
                "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 11927,
                "contract": "contracts/auxillary/AccessManager.sol:AccessManager",
                "label": "__gap",
                "offset": 0,
                "slot": "53",
                "type": "t_array(t_uint256)48_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)48_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[48]",
                "numberOfBytes": "1536"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "grantRole(bytes32,address)": {
                "notice": "Register an account as an admin"
              },
              "hasRole(bytes32,address)": {
                "notice": "Check if an account has a role"
              },
              "revokeRole(bytes32,address)": {
                "notice": "Revoke a role from an account"
              }
            },
            "notice": "Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.",
            "version": 1
          }
        }
      },
      "contracts/test-contracts/ArtistCreatorUpgradeTest.sol": {
        "ArtistCreatorUpgradeTest": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "artistId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "artistAddress",
                  "type": "address"
                }
              ],
              "name": "CreatedArtist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MINTER_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "artistContracts",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "beaconAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "createArtist",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "getSigner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "markOfTheBeast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "params": {
                  "_name": "Name of the artist"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "proxiableUUID()": {
                "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
              },
              "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
              },
              "setAdmin(address)": {
                "params": {
                  "_newAdmin": "address of new admin"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "upgradeTo(address)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              },
              "upgradeToAndCall(address,bytes)": {
                "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60a06040523060805234801561001457600080fd5b506080516151f661004c600039600081816105170152818161055a015281816106020152818161064501526106e101526151f66000f3fe608060405260043610620001075760003560e01c80638129fc1c1162000095578063e6adabfd1162000060578063e6adabfd146200029e578063f2fde38b14620002c3578063f851a44014620002e8578063fa4d280c146200030a57600080fd5b80638129fc1c146200022a5780638da5cb5b1462000242578063b16a43f01462000262578063dbdcc4bd146200028757600080fd5b806352d1902d11620000d657806352d1902d14620001b3578063704b6c0214620001cb578063715018a614620001f05780637e2ec6d0146200020857600080fd5b8063233654eb146200010c5780633644e515146200014e5780633659cfe614620001755780634f1ef286146200019c575b600080fd5b3480156200011957600080fd5b50620001316200012b36600462001635565b62000340565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200015b57600080fd5b506200016660cb5481565b60405190815260200162000145565b3480156200018257600080fd5b506200019a6200019436600462001712565b6200050d565b005b6200019a620001ad36600462001730565b620005f8565b348015620001c057600080fd5b5062000166620006d4565b348015620001d857600080fd5b506200019a620001ea36600462001712565b6200078a565b348015620001fd57600080fd5b506200019a62000816565b3480156200021557600080fd5b5060cc5462000131906001600160a01b031681565b3480156200023757600080fd5b506200019a6200082e565b3480156200024f57600080fd5b506097546001600160a01b031662000131565b3480156200026f57600080fd5b50620001316200028136600462001799565b62000a9d565b3480156200029457600080fd5b5061029a62000166565b348015620002ab57600080fd5b5062000131620002bd366004620017b3565b62000ac8565b348015620002d057600080fd5b506200019a620002e236600462001712565b62000bfe565b348015620002f557600080fd5b5060ca5462000131906001600160a01b031681565b3480156200031757600080fd5b50620001667f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b03166200035b878762000ac8565b6001600160a01b031614620003b75760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc546000906001600160a01b031663055fe41d60e51b33620003d960c95490565b888888604051602401620003f295949392919062001856565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620004319062001510565b6200043e929190620018b5565b604051809103906000f0801580156200045b573d6000803e3d6000fd5b5060cd80546001810182556000919091527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0383166001600160a01b031990911681179091559091507f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0620004d960c95490565b8787604051620004ec93929190620018e3565b60405180910390a26200050360c980546001019055565b9695505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005585760405162461bcd60e51b8152600401620003ae9062001912565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620005a36000805160206200517a833981519152546001600160a01b031690565b6001600160a01b031614620005cc5760405162461bcd60e51b8152600401620003ae906200195e565b620005d78162000c7a565b60408051600080825260208201909252620005f59183919062000c84565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620006435760405162461bcd60e51b8152600401620003ae9062001912565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200068e6000805160206200517a833981519152546001600160a01b031690565b6001600160a01b031614620006b75760405162461bcd60e51b8152600401620003ae906200195e565b620006c28262000c7a565b620006d08282600162000c84565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620007765760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401620003ae565b506000805160206200517a83398151915290565b6097546001600160a01b0316331480620007ae575060ca546001600160a01b031633145b620007f45760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b6044820152606401620003ae565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6200082062000e01565b6200082c600062000e5d565b565b600054610100900460ff16158080156200084f5750600054600160ff909116105b806200086b5750303b1580156200086b575060005460ff166001145b620008d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620003ae565b6000805460ff191660011790558015620008f4576000805461ff0019166101001790555b620008fe62000eaf565b60ca80546001600160a01b031916331790556040516200094d907fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465904690602001918252602082015260400190565b60408051601f1981840301815290829052805160209091012060cb5560009062000977906200151e565b604051809103906000f08015801562000994573d6000803e3d6000fd5b50604051620009a3906200152c565b6001600160a01b039091168152602001604051809103906000f080158015620009d0573d6000803e3d6000fd5b5060405163f2fde38b60e01b81523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b15801562000a1657600080fd5b505af115801562000a2b573d6000803e3d6000fd5b505060cc80546001600160a01b0319166001600160a01b038516179055505060c980546001019055508015620005f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60cd818154811062000aae57600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b031662000b1d5760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b6044820152606401620003ae565b60cb54604080517f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b260208201523391810191909152600091906060016040516020818303038152906040528051906020012060405160200162000b9792919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050600062000bf585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000f279050565b95945050505050565b62000c0862000e01565b6001600160a01b03811662000c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620003ae565b620005f58162000e5d565b620005f562000e01565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000cbf5762000cba8362000f4f565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000d1c575060408051601f3d908101601f1916820190925262000d1991810190620019aa565b60015b62000d815760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401620003ae565b6000805160206200517a833981519152811462000df35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401620003ae565b5062000cba83838362000fee565b6097546001600160a01b031633146200082c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003ae565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1662000f1c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620003ae565b6200082c3362000e5d565b600080600062000f3885856200101f565b9150915062000f478162001095565b509392505050565b6001600160a01b0381163b62000fbe5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620003ae565b6000805160206200517a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000ff98362001263565b600082511180620010075750805b1562000cba57620010198383620012a5565b50505050565b6000808251604103620010595760208301516040840151606085015160001a6200104c8782858562001399565b945094505050506200108e565b82516040036200108657602083015160408401516200107a8683836200148e565b9350935050506200108e565b506000905060025b9250929050565b6000816004811115620010ac57620010ac620019c4565b03620010b55750565b6001816004811115620010cc57620010cc620019c4565b036200111b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401620003ae565b6002816004811115620011325762001132620019c4565b03620011815760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401620003ae565b6003816004811115620011985762001198620019c4565b03620011f25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401620003ae565b6004816004811115620012095762001209620019c4565b03620005f55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401620003ae565b6200126e8162000f4f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6200130f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620003ae565b600080846001600160a01b0316846040516200132c9190620019da565b600060405180830381855af49150503d806000811462001369576040519150601f19603f3d011682016040523d82523d6000602084013e6200136e565b606091505b509150915062000bf582826040518060600160405280602781526020016200519a60279139620014cb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115620013d2575060009050600362001485565b8460ff16601b14158015620013eb57508460ff16601c14155b15620013fe575060009050600462001485565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801562001453573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200147e5760006001925092505062001485565b9150600090505b94509492505050565b6000806001600160ff1b03831681620014ad60ff86901c601b620019f8565b9050620014bd8782888562001399565b935093505050935093915050565b60608315620014dc57508162001509565b825115620014ed5782518084602001fd5b8160405162461bcd60e51b8152600401620003ae919062001a1f565b9392505050565b6108fa8062001a3583390190565b612967806200232f83390190565b6104e48062004c9683390190565b60008083601f8401126200154d57600080fd5b50813567ffffffffffffffff8111156200156657600080fd5b6020830191508360208285010111156200108e57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115620015b357620015b36200157f565b604051601f8501601f19908116603f01168101908282118183101715620015de57620015de6200157f565b81604052809350858152868686011115620015f857600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200162457600080fd5b620015098383356020850162001595565b6000806000806000608086880312156200164e57600080fd5b853567ffffffffffffffff808211156200166757600080fd5b6200167589838a016200153a565b909750955060208801359150808211156200168f57600080fd5b6200169d89838a0162001612565b94506040880135915080821115620016b457600080fd5b620016c289838a0162001612565b93506060880135915080821115620016d957600080fd5b50620016e88882890162001612565b9150509295509295909350565b80356001600160a01b03811681146200170d57600080fd5b919050565b6000602082840312156200172557600080fd5b6200150982620016f5565b600080604083850312156200174457600080fd5b6200174f83620016f5565b9150602083013567ffffffffffffffff8111156200176c57600080fd5b8301601f810185136200177e57600080fd5b6200178f8582356020840162001595565b9150509250929050565b600060208284031215620017ac57600080fd5b5035919050565b60008060208385031215620017c757600080fd5b823567ffffffffffffffff811115620017df57600080fd5b620017ed858286016200153a565b90969095509350505050565b60005b8381101562001816578181015183820152602001620017fc565b83811115620010195750506000910152565b6000815180845262001842816020860160208601620017f9565b601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a0604082015260006200187f60a083018662001828565b828103606084015262001893818662001828565b90508281036080840152620018a9818562001828565b98975050505050505050565b6001600160a01b0383168152604060208201819052600090620018db9083018462001828565b949350505050565b838152606060208201526000620018fe606083018562001828565b828103604084015262000503818562001828565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215620019bd57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008251620019ee818460208701620017f9565b9190910192915050565b6000821982111562001a1a57634e487b7160e01b600052601160045260246000fd5b500190565b6020815260006200150960208301846200182856fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50612947806100206000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220871f7d595f60f02509ea6c6b53d9b245636255bcd4511d07df4f1a19a4f55c1e64736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x51F6 PUSH2 0x4C PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x517 ADD MSTORE DUP2 DUP2 PUSH2 0x55A ADD MSTORE DUP2 DUP2 PUSH2 0x602 ADD MSTORE DUP2 DUP2 PUSH2 0x645 ADD MSTORE PUSH2 0x6E1 ADD MSTORE PUSH2 0x51F6 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x107 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8129FC1C GT PUSH3 0x95 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x29E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x2C3 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2E8 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8129FC1C EQ PUSH3 0x22A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x242 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x262 JUMPI DUP1 PUSH4 0xDBDCC4BD EQ PUSH3 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D GT PUSH3 0xD6 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x1B3 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1CB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1F0 JUMPI DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0x10C JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x14E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x175 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x19C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x131 PUSH3 0x12B CALLDATASIZE PUSH1 0x4 PUSH3 0x1635 JUMP JUMPDEST PUSH3 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x166 PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x194 CALLDATASIZE PUSH1 0x4 PUSH3 0x1712 JUMP JUMPDEST PUSH3 0x50D JUMP JUMPDEST STOP JUMPDEST PUSH3 0x19A PUSH3 0x1AD CALLDATASIZE PUSH1 0x4 PUSH3 0x1730 JUMP JUMPDEST PUSH3 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x166 PUSH3 0x6D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x1EA CALLDATASIZE PUSH1 0x4 PUSH3 0x1712 JUMP JUMPDEST PUSH3 0x78A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x816 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x131 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x82E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x131 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x131 PUSH3 0x281 CALLDATASIZE PUSH1 0x4 PUSH3 0x1799 JUMP JUMPDEST PUSH3 0xA9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29A PUSH3 0x166 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x131 PUSH3 0x2BD CALLDATASIZE PUSH1 0x4 PUSH3 0x17B3 JUMP JUMPDEST PUSH3 0xAC8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH3 0x1712 JUMP JUMPDEST PUSH3 0xBFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x131 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x166 PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x35B DUP8 DUP8 PUSH3 0xAC8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x3B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x55FE41D PUSH1 0xE5 SHL CALLER PUSH3 0x3D9 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x3F2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1856 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH3 0x431 SWAP1 PUSH3 0x1510 JUMP JUMPDEST PUSH3 0x43E SWAP3 SWAP2 SWAP1 PUSH3 0x18B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x45B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0xCD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x83978B4C69C48DD978AB43FE30F077615294F938FB7F936D9EB340E51EA7DB2E ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP2 POP PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH3 0x4D9 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP8 DUP8 PUSH1 0x40 MLOAD PUSH3 0x4EC SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x18E3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH3 0x503 PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x558 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x1912 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x5A3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x5CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x195E JUMP JUMPDEST PUSH3 0x5D7 DUP2 PUSH3 0xC7A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x5F5 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0xC84 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x643 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x1912 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x68E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x6B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x195E JUMP JUMPDEST PUSH3 0x6C2 DUP3 PUSH3 0xC7A JUMP JUMPDEST PUSH3 0x6D0 DUP3 DUP3 PUSH1 0x1 PUSH3 0xC84 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x776 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x7AE JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x820 PUSH3 0xE01 JUMP JUMPDEST PUSH3 0x82C PUSH1 0x0 PUSH3 0xE5D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH3 0x84F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH3 0x86B JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x86B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH3 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x8F4 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH3 0x8FE PUSH3 0xEAF JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH3 0x94D SWAP1 PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0xCB SSTORE PUSH1 0x0 SWAP1 PUSH3 0x977 SWAP1 PUSH3 0x151E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x994 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x9A3 SWAP1 PUSH3 0x152C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x9D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xF2FDE38B PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xA16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xA2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xCC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE POP POP PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP DUP1 ISZERO PUSH3 0x5F5 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0xAAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xB1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xB97 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0xBF5 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xF27 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0xC08 PUSH3 0xE01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0xC6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH3 0x5F5 DUP2 PUSH3 0xE5D JUMP JUMPDEST PUSH3 0x5F5 PUSH3 0xE01 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0xCBF JUMPI PUSH3 0xCBA DUP4 PUSH3 0xF4F JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xD1C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xD19 SWAP2 DUP2 ADD SWAP1 PUSH3 0x19AA JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xD81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST POP PUSH3 0xCBA DUP4 DUP4 DUP4 PUSH3 0xFEE JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH3 0xF1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH3 0x82C CALLER PUSH3 0xE5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xF38 DUP6 DUP6 PUSH3 0x101F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xF47 DUP2 PUSH3 0x1095 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xFBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xFF9 DUP4 PUSH3 0x1263 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0x1007 JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0xCBA JUMPI PUSH3 0x1019 DUP4 DUP4 PUSH3 0x12A5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0x1059 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0x104C DUP8 DUP3 DUP6 DUP6 PUSH3 0x1399 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0x108E JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0x1086 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0x107A DUP7 DUP4 DUP4 PUSH3 0x148E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0x108E JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x10AC JUMPI PUSH3 0x10AC PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x10B5 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x10CC JUMPI PUSH3 0x10CC PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x111B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1132 JUMPI PUSH3 0x1132 PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x1181 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1198 JUMPI PUSH3 0x1198 PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x11F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1209 JUMPI PUSH3 0x1209 PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH3 0x126E DUP2 PUSH3 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0x130F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x132C SWAP2 SWAP1 PUSH3 0x19DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x1369 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x136E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xBF5 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x519A PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x14CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x13D2 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1485 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x13EB JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x13FE JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1485 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1453 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x147E JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1485 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x14AD PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x19F8 JUMP JUMPDEST SWAP1 POP PUSH3 0x14BD DUP8 DUP3 DUP9 DUP6 PUSH3 0x1399 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x14DC JUMPI POP DUP2 PUSH3 0x1509 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x14ED JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP2 SWAP1 PUSH3 0x1A1F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x1A35 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x2967 DUP1 PUSH3 0x232F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E4 DUP1 PUSH3 0x4C96 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x154D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0x108E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x15B3 JUMPI PUSH3 0x15B3 PUSH3 0x157F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x15DE JUMPI PUSH3 0x15DE PUSH3 0x157F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x15F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1509 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x1595 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x164E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x1667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1675 DUP10 DUP4 DUP11 ADD PUSH3 0x153A JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x168F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x169D DUP10 DUP4 DUP11 ADD PUSH3 0x1612 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x16B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x16C2 DUP10 DUP4 DUP11 ADD PUSH3 0x1612 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x16D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x16E8 DUP9 DUP3 DUP10 ADD PUSH3 0x1612 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x170D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1509 DUP3 PUSH3 0x16F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1744 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x174F DUP4 PUSH3 0x16F5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x176C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x177E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x178F DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x1595 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x17AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x17C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x17DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x17ED DUP6 DUP3 DUP7 ADD PUSH3 0x153A JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x1816 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x17FC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x1019 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x1842 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x17F9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x187F PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x1828 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x1893 DUP2 DUP7 PUSH3 0x1828 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH3 0x18A9 DUP2 DUP6 PUSH3 0x1828 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x18DB SWAP1 DUP4 ADD DUP5 PUSH3 0x1828 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x18FE PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x1828 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x503 DUP2 DUP6 PUSH3 0x1828 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x19BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x19EE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x17F9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x1A1A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1509 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x1828 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65646080 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2947 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xBD8616EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD8616EC EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0x74E79189 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3FAFEF29 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x234 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x207F JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x20FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x213C JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x9CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x319 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x395 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH4 0xFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 DUP4 AND PUSH1 0x60 DUP7 ADD MSTORE DUP3 AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x401 PUSH2 0x3FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21F6 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x2231 JUMP JUMPDEST PUSH2 0xB42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xE0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x502 PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x254 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xEE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x55D CALLDATASIZE PUSH1 0x4 PUSH2 0x22F5 JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x57D CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x28C PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x10FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x610 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x63D CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x14E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x2530 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x712 JUMPI POP PUSH2 0x712 DUP3 PUSH2 0x15BC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x753 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7A0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x775 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x783 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 DUP3 PUSH2 0x160C JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP3 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x84E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x86A JUMPI POP PUSH2 0x86A DUP2 CALLER PUSH2 0x67F JUMP JUMPDEST PUSH2 0x8DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x166B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x91F JUMPI PUSH2 0x91F PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x948 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x9B1 JUMPI PUSH2 0x979 DUP2 PUSH2 0xD29 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI PUSH2 0x98B PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0x9AD DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x9BB DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x950 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA28 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x16D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA39 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA43 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA52 CALLER DUP3 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH5 0x100000000 DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP3 SWAP2 PUSH2 0xB0D JUMPI MLOAD SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xB2A DUP4 DUP9 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0x2677 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xBB2 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR DUP2 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP8 DUP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP4 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL MUL SWAP4 SWAP1 SWAP4 AND PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT SWAP5 DUP4 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP3 SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0xC92 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xB3131D7D301F8CAEB40981CFFC627B1FDF324B5E4A23845B61C1A6AD2A25F385 SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG2 PUSH2 0xD06 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1084 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0xE21 PUSH1 0x0 PUSH2 0x1A5B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE57 JUMPI PUSH2 0xE57 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE80 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xED4 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI PUSH2 0xEBB PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0xED0 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xEDE DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE88 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST PUSH2 0xA28 CALLER DUP4 DUP4 PUSH2 0x1AAD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0xF20 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0xF3A JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xFCA DUP5 DUP5 PUSH2 0x1B7B JUMP JUMPDEST PUSH2 0xFD2 PUSH2 0x1BAC JUMP JUMPDEST PUSH2 0xFDB DUP7 PUSH2 0x1508 JUMP JUMPDEST DUP2 PUSH2 0xFE5 DUP7 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF6 SWAP3 SWAP2 SWAP1 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x101A SWAP3 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP PUSH2 0x1029 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1037 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x108E CALLER DUP4 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x10AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x10B6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x10C4 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 AND LT PUSH2 0x11D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE LT ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x12B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x105D58DD1A5BDB881A185CDB89DD081CDD185C9D1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND GT PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1327 CALLER PUSH2 0x1322 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1345 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x136D DUP4 PUSH2 0x26DE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP1 PUSH1 0xCD PUSH1 0x0 PUSH2 0x139A PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x13B5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP5 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1412 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1494 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x14AF SWAP1 PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x14B8 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x279A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14F4 SWAP2 SWAP1 PUSH2 0x27E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1510 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1412 DUP2 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1586 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x15ED JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x712 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x16A0 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x177B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x8E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17F2 DUP4 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1839 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x185D JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1852 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1878 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x193E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1949 PUSH1 0x0 DUP3 PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1972 SWAP1 DUP5 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x19A0 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xA28 DUP3 DUP3 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 PUSH2 0x1E9F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x1C02 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1C2C JUMPI DUP1 PUSH2 0x1C16 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C25 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2677 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x185D JUMPI PUSH2 0x1C86 PUSH1 0x1 DUP4 PUSH2 0x25DD JUMP JUMPDEST SWAP2 POP PUSH2 0x1C93 PUSH1 0xA DUP7 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1C9E SWAP1 PUSH1 0x30 PUSH2 0x26C6 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CB3 JUMPI PUSH2 0x1CB3 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1CD5 PUSH1 0xA DUP7 PUSH2 0x2677 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 JUMP JUMPDEST PUSH2 0x1CE7 DUP5 DUP5 DUP5 PUSH2 0x1865 JUMP JUMPDEST PUSH2 0x1CF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1DF3 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x1E8B SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8E6 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 CALLER PUSH2 0x1A5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1F13 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1F4E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1F4B SWAP2 DUP2 ADD SWAP1 PUSH2 0x28F4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1FAB JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1FA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x185D JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x1FDC SWAP1 PUSH2 0x255E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2017 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2044 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2044 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2029 JUMP JUMPDEST POP PUSH2 0x2050 SWAP3 SWAP2 POP PUSH2 0x2054 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20A6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x20E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x215A DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2184 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21D5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21E5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x222C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x224A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2255 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH2 0x226A PUSH1 0x40 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP4 POP PUSH2 0x2278 PUSH1 0x60 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP3 POP PUSH2 0x2286 PUSH1 0x80 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP2 POP PUSH2 0x2294 PUSH1 0xA0 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2313 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2364 JUMPI PUSH2 0x2364 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x238C JUMPI PUSH2 0x238C PUSH2 0x2333 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x23A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2349 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x23F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2402 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2432 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2454 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2477 DUP9 DUP3 DUP10 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x24A5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x24B5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x24E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24F8 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2349 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2527 PUSH1 0x20 DUP5 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x254E DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2328 DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2572 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2592 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x25D6 JUMPI PUSH2 0x25D6 PUSH2 0x25AE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EF PUSH2 0x25AE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x265C JUMPI PUSH2 0x265C PUSH2 0x25AE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2686 JUMPI PUSH2 0x2686 PUSH2 0x2661 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x269D DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x26B1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x26D9 PUSH2 0x25AE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x26F7 JUMPI PUSH2 0x26F7 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x271B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x273C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2750 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2761 JUMPI PUSH2 0x278E JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x278E JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2786 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x276D JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A6 DUP3 DUP7 PUSH2 0x2701 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x27B6 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x27D3 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27EC DUP3 DUP5 PUSH2 0x2701 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2860 JUMPI PUSH2 0x2860 PUSH2 0x2661 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x28EA SWAP1 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xE4 PUSH1 0xB7 0xEF PUSH16 0x39786F77F92A66849CE602649C95F52 0xED 0xB7 SWAP9 0xCE CALLDATACOPY 0xFB SMOD PUSH30 0xA5FF64736F6C634300080E0033608060405234801561001057600080FD5B POP PUSH1 0x40 MLOAD PUSH2 0x4E4 CODESIZE SUB DUP1 PUSH2 0x4E4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x151 JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x47 JUMP JUMPDEST PUSH2 0x41 DUP2 PUSH2 0x97 JUMP JUMPDEST POP PUSH2 0x181 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xAA DUP2 PUSH2 0x142 PUSH1 0x20 SHL PUSH2 0x1A0 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E206973206E6F74206120636F6E747261637400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x354 DUP1 PUSH2 0x190 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x10E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x122 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xD7 DUP2 PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x116 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x120 PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x194 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19D DUP2 PUSH2 0x29E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH2 0x857C 0xDA 0x49 0xEE CREATE 0xAB PUSH32 0xFBF7C954AD8941A4D6737EA56FBE0BCCB90FD0C5769A64736F6C634300080E00 CALLER CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A264697066735822122087 0x1F PUSH30 0x595F60F02509EA6C6B53D9B245636255BCD4511D07DF4F1A19A4F55C1E64 PUSH20 0x6F6C634300080E00330000000000000000000000 ",
              "sourceMap": "1096:3857:43:-:0;;;1332:4:6;1289:48;;1096:3857:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_11963": {
                  "entryPoint": null,
                  "id": 11963,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@MINTER_TYPEHASH_11956": {
                  "entryPoint": null,
                  "id": 11956,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Ownable_init_unchained_37": {
                  "entryPoint": 3759,
                  "id": 37,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_authorizeUpgrade_12205": {
                  "entryPoint": 3194,
                  "id": 12205,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_checkOwner_68": {
                  "entryPoint": 3585,
                  "id": 68,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_functionDelegateCall_523": {
                  "entryPoint": 4773,
                  "id": 523,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getImplementation_207": {
                  "entryPoint": null,
                  "id": 207,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_231": {
                  "entryPoint": 3919,
                  "id": 231,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_throwError_2588": {
                  "entryPoint": 4245,
                  "id": 2588,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_125": {
                  "entryPoint": 3677,
                  "id": 125,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeToAndCallUUPS_327": {
                  "entryPoint": 3204,
                  "id": 327,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeToAndCall_274": {
                  "entryPoint": 4078,
                  "id": 274,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_upgradeTo_246": {
                  "entryPoint": 4707,
                  "id": 246,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@admin_11961": {
                  "entryPoint": null,
                  "id": 11961,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@artistContracts_11968": {
                  "entryPoint": 2717,
                  "id": 11968,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@beaconAddress_11965": {
                  "entryPoint": null,
                  "id": 11965,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@createArtist_12125": {
                  "entryPoint": 832,
                  "id": 12125,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getAddressSlot_2264": {
                  "entryPoint": null,
                  "id": 2264,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getBooleanSlot_2275": {
                  "entryPoint": null,
                  "id": 2275,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_12171": {
                  "entryPoint": 2760,
                  "id": 12171,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_12041": {
                  "entryPoint": 2094,
                  "id": 12041,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@markOfTheBeast_12213": {
                  "entryPoint": null,
                  "id": 12213,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@owner_54": {
                  "entryPoint": null,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@proxiableUUID_771": {
                  "entryPoint": 1748,
                  "id": 771,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@recover_2680": {
                  "entryPoint": 3879,
                  "id": 2680,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@renounceOwnership_82": {
                  "entryPoint": 2070,
                  "id": 82,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setAdmin_12196": {
                  "entryPoint": 1930,
                  "id": 12196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@transferOwnership_105": {
                  "entryPoint": 3070,
                  "id": 105,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_2653": {
                  "entryPoint": 4127,
                  "id": 2653,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_2727": {
                  "entryPoint": 5262,
                  "id": 2727,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_2838": {
                  "entryPoint": 5017,
                  "id": 2838,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@upgradeToAndCall_814": {
                  "entryPoint": 1528,
                  "id": 814,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@upgradeTo_793": {
                  "entryPoint": 1293,
                  "id": 793,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@verifyCallResult_2121": {
                  "entryPoint": 5323,
                  "id": 2121,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 5877,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 5525,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 5434,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_string": {
                  "entryPoint": 5650,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 5906,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr": {
                  "entryPoint": 5936,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32_fromMemory": {
                  "entryPoint": 6570,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 6067,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 5685,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 6041,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 6184,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 6618,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6325,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6230,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6687,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6418,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6494,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 6371,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 6648,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 6137,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 6596,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 5503,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:16148:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "86:275:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "135:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "144:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "137:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "137:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "137:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "114:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "122:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "110:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "110:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "106:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "106:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "96:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "160:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "183:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "170:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "170:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "233:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "242:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "245:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "235:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "235:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "235:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "213:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "199:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "258:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "274:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "282:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "270:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "270:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "339:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "348:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "341:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "341:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "310:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "318:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "306:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "306:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "327:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:30:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "334:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "299:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "299:39:46"
                              },
                              "nodeType": "YulIf",
                              "src": "296:59:46"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "49:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "57:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "65:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "75:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14:347:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "398:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "415:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "422:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "427:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "418:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "418:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "408:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "455:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "458:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "448:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "448:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "448:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "482:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "472:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "472:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "472:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "366:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "573:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "583:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "593:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "587:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "638:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "640:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "640:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "640:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "626:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "623:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "623:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "620:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "669:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "683:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "679:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "673:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "695:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "715:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "709:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "709:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "699:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "727:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "749:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "773:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "781:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "769:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "769:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "786:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "765:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "765:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "791:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "761:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "761:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "757:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "757:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "745:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "745:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "731:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "859:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "861:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "861:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "861:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "818:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "830:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "815:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "815:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "838:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "850:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "812:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "812:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "809:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "897:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "901:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "890:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "890:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "921:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "930:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "952:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "960:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "945:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "945:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "945:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1005:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1014:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1017:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1007:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1007:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1007:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "986:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "991:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "982:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "982:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1000:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "979:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "979:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "976:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1047:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1055:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1043:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1043:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "1062:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1067:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1030:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1030:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1030:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1098:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1106:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1094:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1094:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1115:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1090:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1090:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1122:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1083:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1083:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1083:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "542:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "547:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "555:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "563:5:46",
                            "type": ""
                          }
                        ],
                        "src": "498:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1188:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1237:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1246:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1249:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1239:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1239:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1239:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1216:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1224:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1212:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1212:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1208:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1208:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1201:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1201:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1198:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1262:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1310:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1318:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1306:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1306:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1338:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1325:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1325:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1347:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1271:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1271:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1262:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1162:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1170:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1178:5:46",
                            "type": ""
                          }
                        ],
                        "src": "1135:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1532:861:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1579:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1588:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1591:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1581:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1581:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1581:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1553:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1562:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1549:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1549:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1574:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1545:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1545:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1542:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1604:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1631:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1618:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1618:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1608:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1660:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1705:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1714:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1717:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1707:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1707:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1693:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1701:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1690:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1690:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1687:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1730:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1786:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1797:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1782:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1782:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1806:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1756:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1756:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1734:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1744:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1823:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "1833:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1850:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1860:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1850:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1877:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1910:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1921:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1906:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1906:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1893:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1893:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1881:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1940:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1950:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1937:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1937:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1934:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2011:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2022:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2007:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2033:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1989:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1989:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2050:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2083:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2094:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2079:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2079:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2066:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2066:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2054:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2127:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2136:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2139:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2129:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2129:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2129:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2113:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2123:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2110:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2107:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2152:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2184:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2195:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2180:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2180:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2206:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2162:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2162:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2223:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2256:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2267:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2252:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2239:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2239:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2227:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2300:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2309:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2312:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2302:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2302:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2302:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2286:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2296:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2283:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2283:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2280:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2325:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2357:9:46"
                                      },
                                      {
                                        "name": "offset_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2368:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2353:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2353:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2379:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "2335:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2335:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2325:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1466:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1477:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1489:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1497:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1505:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1513:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1521:6:46",
                            "type": ""
                          }
                        ],
                        "src": "1362:1031:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2499:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2521:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2532:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2517:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2517:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2551:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2566:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2582:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2587:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2578:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2578:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2591:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2574:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2574:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2562:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2562:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2544:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2544:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2544:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2468:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2479:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2490:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2398:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2707:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2717:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2740:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2725:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2717:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2759:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2770:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2752:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2752:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2752:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2676:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2687:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2698:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2606:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2837:124:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2847:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2869:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2856:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2856:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "2847:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2939:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2948:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2951:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2941:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2941:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2941:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2898:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2909:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2924:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2929:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2920:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2920:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2933:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "2916:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2916:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2905:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2905:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2895:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2895:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2888:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2888:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2885:70:46"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2816:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2827:5:46",
                            "type": ""
                          }
                        ],
                        "src": "2788:173:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3036:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3082:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3091:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3094:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3084:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3084:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3084:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3057:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3066:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3053:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3053:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3078:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3049:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3049:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3046:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3107:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3136:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3117:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3117:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3107:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3002:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3013:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3025:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2966:186:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3253:428:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3299:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3308:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3311:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3301:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3301:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3301:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3274:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3283:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3270:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3270:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3295:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3266:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3266:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3263:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3324:39:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3353:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3334:18:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3334:29:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3324:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3372:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3403:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3414:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3399:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3399:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3386:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3386:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3376:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3461:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3470:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3473:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3463:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3463:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3463:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3433:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3441:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3430:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3430:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3427:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3486:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3500:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3511:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3496:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3496:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3490:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3566:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3575:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3578:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3568:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3568:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3568:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3545:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3549:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3541:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3541:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3556:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3537:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3537:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3530:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3530:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3527:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3591:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3640:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3644:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3636:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3636:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3662:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3649:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3649:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3667:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3601:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3591:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3211:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3222:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3234:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3242:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3157:524:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3756:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3802:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3811:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3814:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3804:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3804:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3804:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3777:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3786:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3773:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3773:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3798:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3769:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3769:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3766:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3827:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3850:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3837:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3837:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3827:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3722:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3733:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3745:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3686:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3972:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3982:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3994:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4005:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3990:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3990:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3982:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4024:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4035:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4017:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4017:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4017:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3941:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3952:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3963:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3871:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4142:320:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4188:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4197:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4200:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4190:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4190:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4190:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4163:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4172:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4159:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4159:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4184:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4155:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4155:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4152:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4213:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4240:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4227:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4227:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4217:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4293:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4302:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4305:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4295:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4295:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4295:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4265:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4273:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4262:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4262:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4259:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4318:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4374:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4385:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4370:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4370:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4394:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4344:25:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4344:58:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4322:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4332:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4411:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "4421:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4411:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4438:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "4448:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4438:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4100:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4111:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4123:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4131:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4053:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4641:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4658:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4669:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4651:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4651:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4651:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4692:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4703:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4688:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4688:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4708:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4681:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4681:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4681:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4731:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4742:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4727:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4727:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4747:33:46",
                                    "type": "",
                                    "value": "invalid authorization signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4720:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4720:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4720:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4790:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4802:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4813:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4798:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4798:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4790:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4618:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4632:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4467:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4880:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4890:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4899:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4894:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4959:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4984:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4989:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4980:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4980:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5003:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5008:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4999:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4999:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4993:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4993:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4973:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4973:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4973:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4920:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4923:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4917:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4917:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4931:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4933:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4942:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4945:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4938:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4938:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4933:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4913:3:46",
                                "statements": []
                              },
                              "src": "4909:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5048:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "5061:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "5066:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5057:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5057:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5075:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5050:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5050:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5050:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5037:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5040:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5034:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5034:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5031:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "4858:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "4863:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4868:6:46",
                            "type": ""
                          }
                        ],
                        "src": "4827:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5140:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5150:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5170:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5164:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5164:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5154:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "5192:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5197:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5185:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5185:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5185:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5239:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5246:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5235:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5235:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5257:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5262:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5253:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5253:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5269:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5213:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5213:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5213:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5285:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5300:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5313:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5321:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5309:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5309:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5330:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "5326:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5326:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5305:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5305:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5296:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5296:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5337:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5292:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5292:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5285:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5117:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "5124:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "5132:3:46",
                            "type": ""
                          }
                        ],
                        "src": "5090:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5626:444:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5643:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5658:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5674:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5679:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5670:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5670:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5683:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5666:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5666:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5654:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5654:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5636:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5636:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5636:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5707:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5718:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5703:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5703:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5723:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5696:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5696:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5696:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5750:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5761:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5746:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5746:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5766:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5739:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5739:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5739:31:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5779:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5811:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5823:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5834:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5819:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5819:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5793:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5793:46:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5783:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5859:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5870:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5855:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5855:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5879:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5887:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5875:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5875:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5848:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5848:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5848:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5907:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5939:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5947:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "5921:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5921:33:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5911:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5974:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5985:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5970:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5970:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5995:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6003:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5991:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5991:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5963:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5963:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5963:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6023:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "6049:6:46"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6057:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6031:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6031:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6023:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5563:9:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5574:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5582:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5590:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5598:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5606:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5617:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5353:717:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6222:168:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6239:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6254:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6270:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6275:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6266:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6266:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6279:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6262:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6262:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6250:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6250:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6232:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6232:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6232:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6303:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6314:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6299:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6299:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6319:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6292:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6292:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6292:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6331:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6357:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6369:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6380:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6365:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6365:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6339:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6339:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6331:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6183:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6194:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6202:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6213:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6075:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6592:257:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6609:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6620:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6602:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6602:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6602:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6647:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6658:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6643:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6643:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6663:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6636:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6636:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6636:30:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6675:59:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6707:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6719:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6730:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6715:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6715:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6689:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6689:45:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6679:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6754:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6765:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6750:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6750:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6774:6:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6782:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6770:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6770:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6743:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6743:50:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6743:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6802:41:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6828:6:46"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6836:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "6810:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6810:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6802:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6545:9:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6556:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6564:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6572:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6583:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6395:454:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7028:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7045:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7056:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7038:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7038:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7038:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7079:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7090:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7075:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7075:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7095:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7068:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7068:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7068:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7118:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7129:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7114:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7114:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7134:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7107:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7107:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7107:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7189:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7200:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7185:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7185:18:46"
                                  },
                                  {
                                    "hexValue": "64656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7205:14:46",
                                    "type": "",
                                    "value": "delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7178:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7178:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7178:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7229:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7241:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7252:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7237:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7237:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7229:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7005:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7019:4:46",
                            "type": ""
                          }
                        ],
                        "src": "6854:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7441:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7458:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7469:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7451:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7451:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7451:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7492:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7503:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7488:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7488:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7508:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7481:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7481:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7481:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7531:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7542:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7527:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7527:18:46"
                                  },
                                  {
                                    "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7547:34:46",
                                    "type": "",
                                    "value": "Function must be called through "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7520:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7520:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7520:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7602:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7613:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7598:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7598:18:46"
                                  },
                                  {
                                    "hexValue": "6163746976652070726f7879",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7618:14:46",
                                    "type": "",
                                    "value": "active proxy"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7591:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7591:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7591:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7642:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7654:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7665:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7650:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7650:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7642:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7418:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7432:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7267:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7854:246:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7871:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7882:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7864:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7864:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7864:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7905:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7916:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7901:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7901:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7921:2:46",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7894:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7894:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7894:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7944:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7955:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7940:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7940:18:46"
                                  },
                                  {
                                    "hexValue": "555550535570677261646561626c653a206d757374206e6f742062652063616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7960:34:46",
                                    "type": "",
                                    "value": "UUPSUpgradeable: must not be cal"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7933:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7933:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7933:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8015:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8026:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8011:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8011:18:46"
                                  },
                                  {
                                    "hexValue": "6c6564207468726f7567682064656c656761746563616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8031:26:46",
                                    "type": "",
                                    "value": "led through delegatecall"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8004:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8004:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8004:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8067:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8079:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8090:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8075:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8075:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8067:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7831:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7845:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7680:420:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8279:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8296:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8307:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8289:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8289:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8289:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8330:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8341:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8326:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8326:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8346:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8319:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8319:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8319:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8369:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8380:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8365:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8365:18:46"
                                  },
                                  {
                                    "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8385:23:46",
                                    "type": "",
                                    "value": "invalid authorization"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8358:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8358:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8358:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8418:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8430:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8441:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8426:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8426:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8418:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8256:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8270:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8105:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8629:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8646:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8657:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8639:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8639:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8639:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8680:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8691:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8676:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8676:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8696:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8669:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8669:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8669:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8719:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8730:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8715:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8715:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8735:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8708:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8708:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8708:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8790:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8801:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8786:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8786:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8806:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8779:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8779:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8779:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8832:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8844:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8855:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8840:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8840:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8832:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8606:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8620:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8455:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8999:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9009:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9021:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9032:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9017:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9017:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9009:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9051:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9062:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9044:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9044:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9044:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9089:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9100:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9085:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9085:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9105:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9078:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9078:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9078:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8960:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8971:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8979:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8990:4:46",
                            "type": ""
                          }
                        ],
                        "src": "8870:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9230:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9240:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9252:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9263:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9248:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9248:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9240:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9282:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9297:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9305:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9293:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9293:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9275:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9275:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9275:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9199:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9210:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9221:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9123:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9496:171:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9513:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9524:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9506:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9506:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9506:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9547:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9558:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9543:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9543:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9563:2:46",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9536:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9536:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9536:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9586:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9597:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9582:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9582:18:46"
                                  },
                                  {
                                    "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9602:23:46",
                                    "type": "",
                                    "value": "whitelist not enabled"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9575:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9575:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9575:51:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9635:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9647:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9658:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9643:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9643:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9635:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9473:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9487:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9322:345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9801:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9811:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9823:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9834:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9819:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9819:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9811:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9853:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9864:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9846:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9846:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9846:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9891:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9902:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9887:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9887:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9911:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9927:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9932:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "9923:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9923:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9936:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "9919:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9919:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9907:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9907:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9880:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9880:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9880:60:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9762:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9773:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9781:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9792:4:46",
                            "type": ""
                          }
                        ],
                        "src": "9672:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10199:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10216:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10225:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10230:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "10221:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10221:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10209:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10209:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10209:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10256:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10261:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10252:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10252:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10265:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10245:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10245:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10245:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10292:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10297:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10288:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10288:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10302:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10281:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10281:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10281:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10318:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "10329:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10334:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10325:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10325:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "10318:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "10167:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10172:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10180:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10191:3:46",
                            "type": ""
                          }
                        ],
                        "src": "9951:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10522:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10539:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10550:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10532:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10532:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10532:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10573:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10584:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10569:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10569:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10589:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10562:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10562:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10562:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10612:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10623:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10608:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10608:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10628:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10601:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10601:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10601:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10683:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10694:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10679:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10679:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10699:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10672:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10672:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10672:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10717:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10740:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10725:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10717:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10499:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10513:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10348:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10836:103:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10882:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10891:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10894:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10884:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10884:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10884:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10857:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10866:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10853:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10853:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10878:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10849:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10849:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10846:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10907:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10923:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10917:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10917:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10907:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10802:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10813:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10825:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10755:184:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11118:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11135:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11146:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11128:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11128:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11128:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11169:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11180:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11165:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11165:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11185:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11158:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11158:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11158:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11208:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11219:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11204:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11204:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a206e657720696d706c656d656e74617469",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11224:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: new implementati"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11197:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11197:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11197:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11279:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11290:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11275:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11275:18:46"
                                  },
                                  {
                                    "hexValue": "6f6e206973206e6f742055555053",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11295:16:46",
                                    "type": "",
                                    "value": "on is not UUPS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11268:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11268:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11268:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11321:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11333:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11344:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11329:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11329:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11321:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11095:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11109:4:46",
                            "type": ""
                          }
                        ],
                        "src": "10944:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11533:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11550:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11561:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11543:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11543:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11543:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11584:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11595:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11580:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11580:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11600:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11573:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11573:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11573:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11623:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11634:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11619:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11619:18:46"
                                  },
                                  {
                                    "hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f78",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11639:34:46",
                                    "type": "",
                                    "value": "ERC1967Upgrade: unsupported prox"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11612:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11612:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11612:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11694:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11705:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11690:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11690:18:46"
                                  },
                                  {
                                    "hexValue": "6961626c6555554944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11710:11:46",
                                    "type": "",
                                    "value": "iableUUID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11683:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11683:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11683:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11731:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11743:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11754:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11739:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11739:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11731:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11510:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11524:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11359:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11943:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11960:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11971:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11953:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11953:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11953:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11994:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12005:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11990:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11990:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12010:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11983:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11983:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11983:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12033:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12044:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12029:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12029:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12049:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12022:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12022:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12022:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12093:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12105:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12116:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12101:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12101:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12093:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11920:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11934:4:46",
                            "type": ""
                          }
                        ],
                        "src": "11769:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12304:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12321:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12332:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12314:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12314:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12314:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12355:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12366:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12351:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12351:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12371:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12344:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12344:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12344:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12394:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12405:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12390:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12390:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12410:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12383:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12383:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12383:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12465:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12476:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12461:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12461:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12481:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12454:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12454:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12454:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12504:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12516:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12527:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12512:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12512:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12504:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12281:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12295:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12130:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12716:235:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12733:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12744:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12726:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12726:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12726:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12767:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12778:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12763:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12763:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12783:2:46",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12756:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12756:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12756:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12806:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12817:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12802:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12802:18:46"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12822:34:46",
                                    "type": "",
                                    "value": "ERC1967: new implementation is n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12795:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12795:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12795:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12877:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12888:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12873:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12873:18:46"
                                  },
                                  {
                                    "hexValue": "6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12893:15:46",
                                    "type": "",
                                    "value": "ot a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12866:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12866:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12866:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12918:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12930:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12941:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12926:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12926:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12918:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12693:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12707:4:46",
                            "type": ""
                          }
                        ],
                        "src": "12542:409:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12988:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13005:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13012:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13017:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "13008:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13008:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12998:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12998:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12998:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13045:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13048:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13038:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13038:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13038:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13069:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13072:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "13062:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13062:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13062:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12956:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13262:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13279:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13290:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13272:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13272:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13272:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13313:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13324:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13309:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13309:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13329:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13302:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13302:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13302:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13352:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13363:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13348:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13348:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13368:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13341:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13341:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13341:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13404:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13416:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13427:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13412:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13412:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13404:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13239:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13253:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13088:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13615:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13632:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13643:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13625:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13625:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13625:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13666:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13677:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13662:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13662:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13682:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13655:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13655:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13655:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13705:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13716:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13701:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13701:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13721:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13694:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13694:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13694:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13764:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13776:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13787:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13772:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13772:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13764:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13592:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13606:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13441:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13975:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13992:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14003:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13985:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13985:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13985:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14026:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14037:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14022:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14022:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14042:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14015:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14015:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14065:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14076:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14061:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14061:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14081:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14054:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14054:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14054:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14136:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14147:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14132:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14132:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14152:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14125:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14125:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14125:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14166:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14178:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14189:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14174:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14174:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14166:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13952:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13966:4:46",
                            "type": ""
                          }
                        ],
                        "src": "13801:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14378:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14395:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14406:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14388:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14388:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14388:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14429:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14440:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14425:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14425:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14445:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14418:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14418:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14418:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14468:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14479:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14464:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14464:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14484:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14457:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14457:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14457:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14539:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14550:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14535:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14535:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14555:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14528:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14528:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14528:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14569:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14581:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14592:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14577:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14577:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14569:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14355:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14369:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14204:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14781:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14798:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14809:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14791:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14791:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14791:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14832:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14843:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14828:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14828:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14848:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14821:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14821:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14821:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14871:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14882:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14867:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14867:18:46"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14887:34:46",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14860:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14860:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14860:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14942:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14953:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14938:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14938:18:46"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14958:8:46",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14931:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14931:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14931:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14976:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14988:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14999:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14984:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14984:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14976:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14758:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14772:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14607:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15151:137:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15161:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15181:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15175:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15175:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "15165:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15223:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15231:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15219:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15219:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15238:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15243:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15197:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15197:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15197:53:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15259:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15270:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15275:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15266:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15266:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "15259:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "15127:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15132:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "15143:3:46",
                            "type": ""
                          }
                        ],
                        "src": "15014:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15474:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15484:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15496:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15507:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15492:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15492:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15484:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15527:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15538:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15520:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15520:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15520:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15565:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15576:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15561:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15561:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15585:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15593:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15581:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15581:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15554:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15554:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15554:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15619:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15630:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15615:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15615:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15635:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15608:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15608:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15608:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15662:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15673:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15658:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15658:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15678:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15651:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15651:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15651:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15419:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15430:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15438:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15446:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15454:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15465:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15293:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15744:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15779:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15800:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15807:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15812:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "15803:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15803:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15793:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15793:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15793:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15844:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15847:4:46",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15837:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15837:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15837:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15872:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15875:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15865:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15865:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15865:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15760:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "15767:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "15763:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15763:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15757:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15757:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15754:136:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15899:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15910:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15913:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15906:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15906:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "15899:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "15727:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "15730:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "15736:3:46",
                            "type": ""
                          }
                        ],
                        "src": "15696:225:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16047:99:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16064:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16075:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16057:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16057:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16057:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16087:53:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16113:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16125:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16136:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16121:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16121:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "16095:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16095:45:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16087:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16016:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16027:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16038:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15926:220:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(0, 0) }\n        value4 := abi_decode_string(add(headStart, offset_3), dataEnd)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"invalid authorization signature\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_string(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_string(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Function must be called through \")\n        mstore(add(headStart, 96), \"active proxy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n        mstore(add(headStart, 96), \"led through delegatecall\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"invalid authorization\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"whitelist not enabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n        mstore(add(headStart, 96), \"on is not UUPS\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n        mstore(add(headStart, 96), \"iableUUID\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n        mstore(add(headStart, 96), \"ot a contract\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "721": [
                  {
                    "length": 32,
                    "start": 1303
                  },
                  {
                    "length": 32,
                    "start": 1370
                  },
                  {
                    "length": 32,
                    "start": 1538
                  },
                  {
                    "length": 32,
                    "start": 1605
                  },
                  {
                    "length": 32,
                    "start": 1761
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405260043610620001075760003560e01c80638129fc1c1162000095578063e6adabfd1162000060578063e6adabfd146200029e578063f2fde38b14620002c3578063f851a44014620002e8578063fa4d280c146200030a57600080fd5b80638129fc1c146200022a5780638da5cb5b1462000242578063b16a43f01462000262578063dbdcc4bd146200028757600080fd5b806352d1902d11620000d657806352d1902d14620001b3578063704b6c0214620001cb578063715018a614620001f05780637e2ec6d0146200020857600080fd5b8063233654eb146200010c5780633644e515146200014e5780633659cfe614620001755780634f1ef286146200019c575b600080fd5b3480156200011957600080fd5b50620001316200012b36600462001635565b62000340565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200015b57600080fd5b506200016660cb5481565b60405190815260200162000145565b3480156200018257600080fd5b506200019a6200019436600462001712565b6200050d565b005b6200019a620001ad36600462001730565b620005f8565b348015620001c057600080fd5b5062000166620006d4565b348015620001d857600080fd5b506200019a620001ea36600462001712565b6200078a565b348015620001fd57600080fd5b506200019a62000816565b3480156200021557600080fd5b5060cc5462000131906001600160a01b031681565b3480156200023757600080fd5b506200019a6200082e565b3480156200024f57600080fd5b506097546001600160a01b031662000131565b3480156200026f57600080fd5b50620001316200028136600462001799565b62000a9d565b3480156200029457600080fd5b5061029a62000166565b348015620002ab57600080fd5b5062000131620002bd366004620017b3565b62000ac8565b348015620002d057600080fd5b506200019a620002e236600462001712565b62000bfe565b348015620002f557600080fd5b5060ca5462000131906001600160a01b031681565b3480156200031757600080fd5b50620001667f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b281565b60ca546000906001600160a01b03166200035b878762000ac8565b6001600160a01b031614620003b75760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617574686f72697a6174696f6e207369676e61747572650060448201526064015b60405180910390fd5b60cc546000906001600160a01b031663055fe41d60e51b33620003d960c95490565b888888604051602401620003f295949392919062001856565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620004319062001510565b6200043e929190620018b5565b604051809103906000f0801580156200045b573d6000803e3d6000fd5b5060cd80546001810182556000919091527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0383166001600160a01b031990911681179091559091507f23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0620004d960c95490565b8787604051620004ec93929190620018e3565b60405180910390a26200050360c980546001019055565b9695505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620005585760405162461bcd60e51b8152600401620003ae9062001912565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620005a36000805160206200517a833981519152546001600160a01b031690565b6001600160a01b031614620005cc5760405162461bcd60e51b8152600401620003ae906200195e565b620005d78162000c7a565b60408051600080825260208201909252620005f59183919062000c84565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620006435760405162461bcd60e51b8152600401620003ae9062001912565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200068e6000805160206200517a833981519152546001600160a01b031690565b6001600160a01b031614620006b75760405162461bcd60e51b8152600401620003ae906200195e565b620006c28262000c7a565b620006d08282600162000c84565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620007765760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401620003ae565b506000805160206200517a83398151915290565b6097546001600160a01b0316331480620007ae575060ca546001600160a01b031633145b620007f45760405162461bcd60e51b815260206004820152601560248201527434b73b30b634b21030baba3437b934bd30ba34b7b760591b6044820152606401620003ae565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6200082062000e01565b6200082c600062000e5d565b565b600054610100900460ff16158080156200084f5750600054600160ff909116105b806200086b5750303b1580156200086b575060005460ff166001145b620008d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620003ae565b6000805460ff191660011790558015620008f4576000805461ff0019166101001790555b620008fe62000eaf565b60ca80546001600160a01b031916331790556040516200094d907fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465904690602001918252602082015260400190565b60408051601f1981840301815290829052805160209091012060cb5560009062000977906200151e565b604051809103906000f08015801562000994573d6000803e3d6000fd5b50604051620009a3906200152c565b6001600160a01b039091168152602001604051809103906000f080158015620009d0573d6000803e3d6000fd5b5060405163f2fde38b60e01b81523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b15801562000a1657600080fd5b505af115801562000a2b573d6000803e3d6000fd5b505060cc80546001600160a01b0319166001600160a01b038516179055505060c980546001019055508015620005f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60cd818154811062000aae57600080fd5b6000918252602090912001546001600160a01b0316905081565b60ca546000906001600160a01b031662000b1d5760405162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081b9bdd08195b98589b1959605a1b6044820152606401620003ae565b60cb54604080517f5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b260208201523391810191909152600091906060016040516020818303038152906040528051906020012060405160200162000b9792919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050600062000bf585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505062000f279050565b95945050505050565b62000c0862000e01565b6001600160a01b03811662000c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620003ae565b620005f58162000e5d565b620005f562000e01565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161562000cbf5762000cba8362000f4f565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000d1c575060408051601f3d908101601f1916820190925262000d1991810190620019aa565b60015b62000d815760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401620003ae565b6000805160206200517a833981519152811462000df35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401620003ae565b5062000cba83838362000fee565b6097546001600160a01b031633146200082c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003ae565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1662000f1c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620003ae565b6200082c3362000e5d565b600080600062000f3885856200101f565b9150915062000f478162001095565b509392505050565b6001600160a01b0381163b62000fbe5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620003ae565b6000805160206200517a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62000ff98362001263565b600082511180620010075750805b1562000cba57620010198383620012a5565b50505050565b6000808251604103620010595760208301516040840151606085015160001a6200104c8782858562001399565b945094505050506200108e565b82516040036200108657602083015160408401516200107a8683836200148e565b9350935050506200108e565b506000905060025b9250929050565b6000816004811115620010ac57620010ac620019c4565b03620010b55750565b6001816004811115620010cc57620010cc620019c4565b036200111b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401620003ae565b6002816004811115620011325762001132620019c4565b03620011815760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401620003ae565b6003816004811115620011985762001198620019c4565b03620011f25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401620003ae565b6004816004811115620012095762001209620019c4565b03620005f55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401620003ae565b6200126e8162000f4f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6200130f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620003ae565b600080846001600160a01b0316846040516200132c9190620019da565b600060405180830381855af49150503d806000811462001369576040519150601f19603f3d011682016040523d82523d6000602084013e6200136e565b606091505b509150915062000bf582826040518060600160405280602781526020016200519a60279139620014cb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115620013d2575060009050600362001485565b8460ff16601b14158015620013eb57508460ff16601c14155b15620013fe575060009050600462001485565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801562001453573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200147e5760006001925092505062001485565b9150600090505b94509492505050565b6000806001600160ff1b03831681620014ad60ff86901c601b620019f8565b9050620014bd8782888562001399565b935093505050935093915050565b60608315620014dc57508162001509565b825115620014ed5782518084602001fd5b8160405162461bcd60e51b8152600401620003ae919062001a1f565b9392505050565b6108fa8062001a3583390190565b612967806200232f83390190565b6104e48062004c9683390190565b60008083601f8401126200154d57600080fd5b50813567ffffffffffffffff8111156200156657600080fd5b6020830191508360208285010111156200108e57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115620015b357620015b36200157f565b604051601f8501601f19908116603f01168101908282118183101715620015de57620015de6200157f565b81604052809350858152868686011115620015f857600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200162457600080fd5b620015098383356020850162001595565b6000806000806000608086880312156200164e57600080fd5b853567ffffffffffffffff808211156200166757600080fd5b6200167589838a016200153a565b909750955060208801359150808211156200168f57600080fd5b6200169d89838a0162001612565b94506040880135915080821115620016b457600080fd5b620016c289838a0162001612565b93506060880135915080821115620016d957600080fd5b50620016e88882890162001612565b9150509295509295909350565b80356001600160a01b03811681146200170d57600080fd5b919050565b6000602082840312156200172557600080fd5b6200150982620016f5565b600080604083850312156200174457600080fd5b6200174f83620016f5565b9150602083013567ffffffffffffffff8111156200176c57600080fd5b8301601f810185136200177e57600080fd5b6200178f8582356020840162001595565b9150509250929050565b600060208284031215620017ac57600080fd5b5035919050565b60008060208385031215620017c757600080fd5b823567ffffffffffffffff811115620017df57600080fd5b620017ed858286016200153a565b90969095509350505050565b60005b8381101562001816578181015183820152602001620017fc565b83811115620010195750506000910152565b6000815180845262001842816020860160208601620017f9565b601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a0604082015260006200187f60a083018662001828565b828103606084015262001893818662001828565b90508281036080840152620018a9818562001828565b98975050505050505050565b6001600160a01b0383168152604060208201819052600090620018db9083018462001828565b949350505050565b838152606060208201526000620018fe606083018562001828565b828103604084015262000503818562001828565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215620019bd57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008251620019ee818460208701620017f9565b9190910192915050565b6000821982111562001a1a57634e487b7160e01b600052601160045260246000fd5b500190565b6020815260006200150960208301846200182856fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209edd394a164f4df235ebb5c07889d2d9b73cdcabc3f96db3749d3815d01ead7964736f6c634300080e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50612947806100206000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063bd8616ec11610095578063e8a3d48511610064578063e8a3d4851461064f578063e985e9c514610664578063f2fde38b146106ad578063fbab9e04146106cd57600080fd5b8063bd8616ec146105c2578063c87b56dd146105d5578063d3bb0528146105f5578063e1a3d5731461062257600080fd5b8063a22cb465116100d1578063a22cb46514610542578063abfc83a014610562578063b88d4fde14610582578063bb314ca1146105a257600080fd5b8063715018a6146104cd57806374e79189146104e25780638da5cb5b1461050f57806395d89b411461052d57600080fd5b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610440578063602787ed146104605780636352211e1461048d57806370a08231146104ad57600080fd5b806323b872dd146102fe578063279c806e1461031e5780632a55205a146103e15780633fafef291461042057600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806313dd29601461028e578063155dd5ee146102bb57806318160ddd146102db57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f836600461207f565b6106ed565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610718565b60405161020991906120fb565b34801561024057600080fd5b5061025461024f36600461210e565b6107aa565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c61028736600461213c565b6107d1565b005b34801561029a57600080fd5b506102ae6102a936600461210e565b6108eb565b6040516102099190612168565b3480156102c757600080fd5b5061028c6102d636600461210e565b6109cc565b3480156102e757600080fd5b506102f0610a2c565b604051908152602001610209565b34801561030a57600080fd5b5061028c6103193660046121b5565b610a48565b34801561032a57600080fd5b5061039561033936600461210e565b60cc602052600090815260409020805460018201546002909201546001600160a01b03909116919063ffffffff808216916401000000008104821691600160401b8204811691600160601b8104821691600160801b9091041687565b604080516001600160a01b039098168852602088019690965263ffffffff94851695870195909552918316606086015282166080850152811660a08401521660c082015260e001610209565b3480156103ed57600080fd5b506104016103fc3660046121f6565b610a79565b604080516001600160a01b039093168352602083019190915201610209565b34801561042c57600080fd5b5061028c61043b366004612231565b610b42565b34801561044c57600080fd5b5061028c61045b3660046121b5565b610d0e565b34801561046c57600080fd5b506102f061047b36600461210e565b60cd6020526000908152604090205481565b34801561049957600080fd5b506102546104a836600461210e565b610d29565b3480156104b957600080fd5b506102f06104c83660046122a0565b610d89565b3480156104d957600080fd5b5061028c610e0f565b3480156104ee57600080fd5b506105026104fd36600461210e565b610e23565b60405161020991906122bd565b34801561051b57600080fd5b506097546001600160a01b0316610254565b34801561053957600080fd5b50610227610ee6565b34801561054e57600080fd5b5061028c61055d3660046122f5565b610ef5565b34801561056e57600080fd5b5061028c61057d3660046123df565b610f00565b34801561058e57600080fd5b5061028c61059d366004612484565b611084565b3480156105ae57600080fd5b5061028c6105bd366004612504565b6110bc565b61028c6105d036600461210e565b6110fa565b3480156105e157600080fd5b506102276105f036600461210e565b611415565b34801561060157600080fd5b506102f061061036600461210e565b60cf6020526000908152604090205481565b34801561062e57600080fd5b506102f061063d36600461210e565b60ce6020526000908152604090205481565b34801561065b57600080fd5b506102276114e0565b34801561067057600080fd5b506101fd61067f366004612530565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156106b957600080fd5b5061028c6106c83660046122a0565b611508565b3480156106d957600080fd5b5061028c6106e8366004612504565b61157e565b600063152a902d60e11b6001600160e01b0319831614806107125750610712826115bc565b92915050565b6060606580546107279061255e565b80601f01602080910402602001604051908101604052809291908181526020018280546107539061255e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905090565b60006107b58261160c565b506000908152606960205260409020546001600160a01b031690565b60006107dc82610d29565b9050806001600160a01b0316836001600160a01b03160361084e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061086a575061086a813361067f565b6108dc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610845565b6108e6838361166b565b505050565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff81111561091f5761091f612333565b604051908082528060200260200182016040528015610948578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd60205260409020548590036109b15761097981610d29565b83838151811061098b5761098b612598565b6001600160a01b0390921660209283029190910190910152816109ad816125c4565b9250505b806109bb816125c4565b915050610950565b50909392505050565b600081815260cf602090815260408083205460ce9092528220546109f091906125dd565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610a28906001600160a01b0316826116d9565b5050565b60006001610a3960ca5490565b610a4391906125dd565b905090565b610a5233826117e6565b610a6e5760405162461bcd60e51b8152600401610845906125f4565b6108e6838383611865565b600082815260cc60209081526040808320815160e08101835281546001600160a01b031680825260018301549482019490945260029091015463ffffffff80821693830193909352640100000000810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b900490911660c08201528291610b0d5751915060009050610b3b565b6080810151815163ffffffff90911690612710610b2a8388612642565b610b349190612677565b9350935050505b9250929050565b610b4a611a01565b6040518060e00160405280876001600160a01b03168152602001868152602001600063ffffffff1681526020018563ffffffff1681526020018463ffffffff1681526020018363ffffffff1681526020018263ffffffff1681525060cc6000610bb260cb5490565b81526020808201929092526040908101600020835181546001600160a01b039091166001600160a01b0319909116178155918301516001830155820151600290910180546060840151608085015160a086015160c09096015163ffffffff908116600160801b0263ffffffff60801b19978216600160601b0263ffffffff60601b19938316600160401b02939093166fffffffffffffffff0000000000000000199483166401000000000267ffffffffffffffff1990961692909716919091179390931791909116939093179290921792909216179055610c9260cb5490565b604080516001600160a01b03891681526020810188905263ffffffff8781168284015286811660608301528581166080830152841660a082015290517fb3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f3859181900360c00190a2610d0660cb80546001019055565b505050505050565b6108e683838360405180602001604052806000815250611084565b6000818152606760205260408120546001600160a01b0316806107125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b60006001600160a01b038216610df35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610845565b506001600160a01b031660009081526068602052604090205490565b610e17611a01565b610e216000611a5b565b565b600081815260cc60205260408120600201546060919063ffffffff1667ffffffffffffffff811115610e5757610e57612333565b604051908082528060200260200182016040528015610e80578160200160208202803683370190505b509050600060015b60ca548110156109c357600081815260cd6020526040902054859003610ed45780838381518110610ebb57610ebb612598565b602090810291909101015281610ed0816125c4565b9250505b80610ede816125c4565b915050610e88565b6060606680546107279061255e565b610a28338383611aad565b600054610100900460ff1615808015610f205750600054600160ff909116105b80610f3a5750303b158015610f3a575060005460ff166001145b610f9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610845565b6000805460ff191660011790558015610fc0576000805461ff0019166101001790555b610fca8484611b7b565b610fd2611bac565b610fdb86611508565b81610fe586611bdb565b604051602001610ff692919061268b565b60405160208183030381529060405260c9908051906020019061101a929190611fd0565b5061102960ca80546001019055565b61103760cb80546001019055565b8015610d06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61108e33836117e6565b6110aa5760405162461bcd60e51b8152600401610845906125f4565b6110b684848484611cdc565b50505050565b6110c4611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160801b0263ffffffff60801b19909216919091179055565b600081815260cc6020526040902060020154640100000000900463ffffffff1661115f5760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610845565b600081815260cc602052604090206002015463ffffffff640100000000820481169116106111d95760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610845565b600081815260cc602052604090206001015434101561124c5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610845565b600081815260cc602052604090206002015442600160601b90910463ffffffff16106112b35760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb881a185cdb89dd081cdd185c9d195960521b6044820152606401610845565b600081815260cc602052604090206002015442600160801b90910463ffffffff16116113155760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610845565b6113273361132260ca5490565b611d0f565b600081815260ce6020526040812080543492906113459084906126c6565b9091555050600081815260cc60205260408120600201805463ffffffff169161136d836126de565b91906101000a81548163ffffffff021916908363ffffffff160217905550508060cd600061139a60ca5490565b8152602081019190915260400160002055336113b560ca5490565b600083815260cc602090815260409182902060020154915163ffffffff909216825284917fe38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785910160405180910390a461141260ca80546001019055565b50565b6000818152606760205260409020546060906001600160a01b03166114945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610845565b600082815260cd602052604090205460c9906114af90611bdb565b6114b884611bdb565b6040516020016114ca9392919061279a565b6040516020818303038152906040529050919050565b606060c96040516020016114f491906127e0565b604051602081830303815290604052905090565b611510611a01565b6001600160a01b0381166115755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610845565b61141281611a5b565b611586611a01565b600091825260cc6020526040909120600201805463ffffffff909216600160601b0263ffffffff60601b19909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806115ed57506001600160e01b03198216635b5e139f60e01b145b8061071257506301ffc9a760e01b6001600160e01b0319831614610712565b6000818152606760205260409020546001600160a01b03166114125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610845565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906116a082610d29565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156117295760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610845565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b50509050806108e65760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610845565b6000806117f283610d29565b9050806001600160a01b0316846001600160a01b0316148061183957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061185d5750836001600160a01b0316611852846107aa565b6001600160a01b0316145b949350505050565b826001600160a01b031661187882610d29565b6001600160a01b0316146118dc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610845565b6001600160a01b03821661193e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610845565b61194960008261166b565b6001600160a01b03831660009081526068602052604081208054600192906119729084906125dd565b90915550506001600160a01b03821660009081526068602052604081208054600192906119a09084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6097546001600160a01b03163314610e215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610845565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611b0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610845565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611ba25760405162461bcd60e51b815260040161084590612806565b610a288282611e51565b600054610100900460ff16611bd35760405162461bcd60e51b815260040161084590612806565b610e21611e9f565b606081600003611c025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c2c5780611c16816125c4565b9150611c259050600a83612677565b9150611c06565b60008167ffffffffffffffff811115611c4757611c47612333565b6040519080825280601f01601f191660200182016040528015611c71576020820181803683370190505b5090505b841561185d57611c866001836125dd565b9150611c93600a86612851565b611c9e9060306126c6565b60f81b818381518110611cb357611cb3612598565b60200101906001600160f81b031916908160001a905350611cd5600a86612677565b9450611c75565b611ce7848484611865565b611cf384848484611ecf565b6110b65760405162461bcd60e51b815260040161084590612865565b6001600160a01b038216611d655760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610845565b6000818152606760205260409020546001600160a01b031615611dca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610845565b6001600160a01b0382166000908152606860205260408120805460019290611df39084906126c6565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16611e785760405162461bcd60e51b815260040161084590612806565b8151611e8b906065906020850190611fd0565b5080516108e6906066906020840190611fd0565b600054610100900460ff16611ec65760405162461bcd60e51b815260040161084590612806565b610e2133611a5b565b60006001600160a01b0384163b15611fc557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f139033908990889088906004016128b7565b6020604051808303816000875af1925050508015611f4e575060408051601f3d908101601f19168201909252611f4b918101906128f4565b60015b611fab573d808015611f7c576040519150601f19603f3d011682016040523d82523d6000602084013e611f81565b606091505b508051600003611fa35760405162461bcd60e51b815260040161084590612865565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061185d565b506001949350505050565b828054611fdc9061255e565b90600052602060002090601f016020900481019282611ffe5760008555612044565b82601f1061201757805160ff1916838001178555612044565b82800160010185558215612044579182015b82811115612044578251825591602001919060010190612029565b50612050929150612054565b5090565b5b808211156120505760008155600101612055565b6001600160e01b03198116811461141257600080fd5b60006020828403121561209157600080fd5b813561209c81612069565b9392505050565b60005b838110156120be5781810151838201526020016120a6565b838111156110b65750506000910152565b600081518084526120e78160208601602086016120a3565b601f01601f19169290920160200192915050565b60208152600061209c60208301846120cf565b60006020828403121561212057600080fd5b5035919050565b6001600160a01b038116811461141257600080fd5b6000806040838503121561214f57600080fd5b823561215a81612127565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156121a95783516001600160a01b031683529284019291840191600101612184565b50909695505050505050565b6000806000606084860312156121ca57600080fd5b83356121d581612127565b925060208401356121e581612127565b929592945050506040919091013590565b6000806040838503121561220957600080fd5b50508035926020909101359150565b803563ffffffff8116811461222c57600080fd5b919050565b60008060008060008060c0878903121561224a57600080fd5b863561225581612127565b95506020870135945061226a60408801612218565b935061227860608801612218565b925061228660808801612218565b915061229460a08801612218565b90509295509295509295565b6000602082840312156122b257600080fd5b813561209c81612127565b6020808252825182820181905260009190848201906040850190845b818110156121a9578351835292840192918401916001016122d9565b6000806040838503121561230857600080fd5b823561231381612127565b91506020830135801515811461232857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561236457612364612333565b604051601f8501601f19908116603f0116810190828211818310171561238c5761238c612333565b816040528093508581528686860111156123a557600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126123d057600080fd5b61209c83833560208501612349565b600080600080600060a086880312156123f757600080fd5b853561240281612127565b945060208601359350604086013567ffffffffffffffff8082111561242657600080fd5b61243289838a016123bf565b9450606088013591508082111561244857600080fd5b61245489838a016123bf565b9350608088013591508082111561246a57600080fd5b50612477888289016123bf565b9150509295509295909350565b6000806000806080858703121561249a57600080fd5b84356124a581612127565b935060208501356124b581612127565b925060408501359150606085013567ffffffffffffffff8111156124d857600080fd5b8501601f810187136124e957600080fd5b6124f887823560208401612349565b91505092959194509250565b6000806040838503121561251757600080fd5b8235915061252760208401612218565b90509250929050565b6000806040838503121561254357600080fd5b823561254e81612127565b9150602083013561232881612127565b600181811c9082168061257257607f821691505b60208210810361259257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125d6576125d66125ae565b5060010190565b6000828210156125ef576125ef6125ae565b500390565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561265c5761265c6125ae565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261268657612686612661565b500490565b6000835161269d8184602088016120a3565b8351908301906126b18183602088016120a3565b602f60f81b9101908152600101949350505050565b600082198211156126d9576126d96125ae565b500190565b600063ffffffff8083168181036126f7576126f76125ae565b6001019392505050565b8054600090600181811c908083168061271b57607f831692505b6020808410820361273c57634e487b7160e01b600052602260045260246000fd5b81801561275057600181146127615761278e565b60ff1986168952848901965061278e565b60008881526020902060005b868110156127865781548b82015290850190830161276d565b505084890196505b50505050505092915050565b60006127a68286612701565b84516127b68183602089016120a3565b602f60f81b910190815283516127d38160018401602088016120a3565b0160010195945050505050565b60006127ec8284612701565b691cdd1bdc99599c9bdb9d60b21b8152600a019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261286057612860612661565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128ea908301846120cf565b9695505050505050565b60006020828403121561290657600080fd5b815161209c8161206956fea264697066735822122024e460b7ef6f039786f77f92a66849ce602649c95f52edb798ce37fb077da5ff64736f6c634300080e0033608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212200161857cda49eef0ab7ffbf7c954ad8941a4d6737ea56fbe0bccb90fd0c5769a64736f6c634300080e0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220871f7d595f60f02509ea6c6b53d9b245636255bcd4511d07df4f1a19a4f55c1e64736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x107 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8129FC1C GT PUSH3 0x95 JUMPI DUP1 PUSH4 0xE6ADABFD GT PUSH3 0x60 JUMPI DUP1 PUSH4 0xE6ADABFD EQ PUSH3 0x29E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x2C3 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH3 0x2E8 JUMPI DUP1 PUSH4 0xFA4D280C EQ PUSH3 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8129FC1C EQ PUSH3 0x22A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x242 JUMPI DUP1 PUSH4 0xB16A43F0 EQ PUSH3 0x262 JUMPI DUP1 PUSH4 0xDBDCC4BD EQ PUSH3 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D GT PUSH3 0xD6 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x1B3 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH3 0x1CB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x1F0 JUMPI DUP1 PUSH4 0x7E2EC6D0 EQ PUSH3 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x233654EB EQ PUSH3 0x10C JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH3 0x14E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH3 0x175 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x19C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x131 PUSH3 0x12B CALLDATASIZE PUSH1 0x4 PUSH3 0x1635 JUMP JUMPDEST PUSH3 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x166 PUSH1 0xCB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x194 CALLDATASIZE PUSH1 0x4 PUSH3 0x1712 JUMP JUMPDEST PUSH3 0x50D JUMP JUMPDEST STOP JUMPDEST PUSH3 0x19A PUSH3 0x1AD CALLDATASIZE PUSH1 0x4 PUSH3 0x1730 JUMP JUMPDEST PUSH3 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x166 PUSH3 0x6D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x1EA CALLDATASIZE PUSH1 0x4 PUSH3 0x1712 JUMP JUMPDEST PUSH3 0x78A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x816 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC SLOAD PUSH3 0x131 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x82E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x131 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x131 PUSH3 0x281 CALLDATASIZE PUSH1 0x4 PUSH3 0x1799 JUMP JUMPDEST PUSH3 0xA9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29A PUSH3 0x166 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x131 PUSH3 0x2BD CALLDATASIZE PUSH1 0x4 PUSH3 0x17B3 JUMP JUMPDEST PUSH3 0xAC8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x19A PUSH3 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH3 0x1712 JUMP JUMPDEST PUSH3 0xBFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH3 0x131 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x166 PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x35B DUP8 DUP8 PUSH3 0xAC8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x3B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C696420617574686F72697A6174696F6E207369676E617475726500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xCC SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x55FE41D PUSH1 0xE5 SHL CALLER PUSH3 0x3D9 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x3F2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1856 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH3 0x431 SWAP1 PUSH3 0x1510 JUMP JUMPDEST PUSH3 0x43E SWAP3 SWAP2 SWAP1 PUSH3 0x18B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x45B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0xCD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x83978B4C69C48DD978AB43FE30F077615294F938FB7F936D9EB340E51EA7DB2E ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP2 POP PUSH32 0x23748B43B77F98380E738976C6324996908FFC1989994DD3C68631C87A65A7C0 PUSH3 0x4D9 PUSH1 0xC9 SLOAD SWAP1 JUMP JUMPDEST DUP8 DUP8 PUSH1 0x40 MLOAD PUSH3 0x4EC SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x18E3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH3 0x503 PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x558 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x1912 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x5A3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x5CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x195E JUMP JUMPDEST PUSH3 0x5D7 DUP2 PUSH3 0xC7A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x5F5 SWAP2 DUP4 SWAP2 SWAP1 PUSH3 0xC84 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH3 0x643 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x1912 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x68E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH3 0x6B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP1 PUSH3 0x195E JUMP JUMPDEST PUSH3 0x6C2 DUP3 PUSH3 0xC7A JUMP JUMPDEST PUSH3 0x6D0 DUP3 DUP3 PUSH1 0x1 PUSH3 0xC84 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x776 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH3 0x7AE JUMPI POP PUSH1 0xCA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH3 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x34B73B30B634B21030BABA3437B934BD30BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x820 PUSH3 0xE01 JUMP JUMPDEST PUSH3 0x82C PUSH1 0x0 PUSH3 0xE5D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH3 0x84F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH3 0x86B JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x86B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH3 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x8F4 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH3 0x8FE PUSH3 0xEAF JUMP JUMPDEST PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH3 0x94D SWAP1 PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0xCB SSTORE PUSH1 0x0 SWAP1 PUSH3 0x977 SWAP1 PUSH3 0x151E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x994 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x9A3 SWAP1 PUSH3 0x152C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x9D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xF2FDE38B PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xA16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xA2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xCC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE POP POP PUSH1 0xC9 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP DUP1 ISZERO PUSH3 0x5F5 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0xCD DUP2 DUP2 SLOAD DUP2 LT PUSH3 0xAAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xCA SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xB1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081B9BDD08195B98589B1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5925E35AEBBEB7738AE3E97AD24E3B4CC09001C8668D81F3365213A0EC1E85B2 PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xB97 SWAP3 SWAP2 SWAP1 PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0xBF5 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP7 SWAP4 SWAP3 POP POP PUSH3 0xF27 SWAP1 POP JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0xC08 PUSH3 0xE01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0xC6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH3 0x5F5 DUP2 PUSH3 0xE5D JUMP JUMPDEST PUSH3 0x5F5 PUSH3 0xE01 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0xCBF JUMPI PUSH3 0xCBA DUP4 PUSH3 0xF4F JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0xD1C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0xD19 SWAP2 DUP2 ADD SWAP1 PUSH3 0x19AA JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0xD81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x6F6E206973206E6F742055555053 PUSH1 0x90 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1A58589B1955555251 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST POP PUSH3 0xCBA DUP4 DUP4 DUP4 PUSH3 0xFEE JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH3 0xF1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH3 0x82C CALLER PUSH3 0xE5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xF38 DUP6 DUP6 PUSH3 0x101F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xF47 DUP2 PUSH3 0x1095 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH3 0xFBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x517A DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xFF9 DUP4 PUSH3 0x1263 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH3 0x1007 JUMPI POP DUP1 JUMPDEST ISZERO PUSH3 0xCBA JUMPI PUSH3 0x1019 DUP4 DUP4 PUSH3 0x12A5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH3 0x1059 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH3 0x104C DUP8 DUP3 DUP6 DUP6 PUSH3 0x1399 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH3 0x108E JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH3 0x1086 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH3 0x107A DUP7 DUP4 DUP4 PUSH3 0x148E JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH3 0x108E JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x10AC JUMPI PUSH3 0x10AC PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x10B5 JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x10CC JUMPI PUSH3 0x10CC PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x111B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1132 JUMPI PUSH3 0x1132 PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x1181 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1198 JUMPI PUSH3 0x1198 PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x11F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH3 0x1209 JUMPI PUSH3 0x1209 PUSH3 0x19C4 JUMP JUMPDEST SUB PUSH3 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH3 0x126E DUP2 PUSH3 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE PUSH3 0x130F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x3AE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x132C SWAP2 SWAP1 PUSH3 0x19DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x1369 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x136E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xBF5 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x519A PUSH1 0x27 SWAP2 CODECOPY PUSH3 0x14CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH3 0x13D2 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH3 0x1485 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH3 0x13EB JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH3 0x13FE JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH3 0x1485 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1453 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x147E JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH3 0x1485 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH3 0x14AD PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH3 0x19F8 JUMP JUMPDEST SWAP1 POP PUSH3 0x14BD DUP8 DUP3 DUP9 DUP6 PUSH3 0x1399 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x14DC JUMPI POP DUP2 PUSH3 0x1509 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH3 0x14ED JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3AE SWAP2 SWAP1 PUSH3 0x1A1F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8FA DUP1 PUSH3 0x1A35 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x2967 DUP1 PUSH3 0x232F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E4 DUP1 PUSH3 0x4C96 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x154D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0x108E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH3 0x15B3 JUMPI PUSH3 0x15B3 PUSH3 0x157F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x15DE JUMPI PUSH3 0x15DE PUSH3 0x157F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x15F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1509 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH3 0x1595 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x164E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x1667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1675 DUP10 DUP4 DUP11 ADD PUSH3 0x153A JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x168F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x169D DUP10 DUP4 DUP11 ADD PUSH3 0x1612 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x16B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x16C2 DUP10 DUP4 DUP11 ADD PUSH3 0x1612 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x16D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x16E8 DUP9 DUP3 DUP10 ADD PUSH3 0x1612 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x170D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1509 DUP3 PUSH3 0x16F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1744 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x174F DUP4 PUSH3 0x16F5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x176C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x177E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x178F DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x1595 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x17AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x17C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x17DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x17ED DUP6 DUP3 DUP7 ADD PUSH3 0x153A JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x1816 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x17FC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x1019 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x1842 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x17F9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x187F PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x1828 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x1893 DUP2 DUP7 PUSH3 0x1828 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH3 0x18A9 DUP2 DUP6 PUSH3 0x1828 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH3 0x18DB SWAP1 DUP4 ADD DUP5 PUSH3 0x1828 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x18FE PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x1828 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x503 DUP2 DUP6 PUSH3 0x1828 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x19BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x19EE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x17F9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x1A1A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1509 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x1828 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x8FA CODESIZE SUB DUP1 PUSH2 0x8FA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x456 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x580 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x7F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH2 0xF9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST DUP4 PUSH2 0x2A3 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x113 DUP2 PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E6 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x2CF PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST DUP1 PUSH2 0x282 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 SHL PUSH2 0x2DE PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8D3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x531 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3B5 DUP3 DUP3 DUP7 PUSH2 0x3BF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3CE JUMPI POP DUP2 PUSH2 0x2C8 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3DE JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x54D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x445 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x42D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472 DUP4 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4B5 JUMPI PUSH2 0x4B5 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4DD JUMPI PUSH2 0x4DD PUSH2 0x414 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x507 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x42A JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8 DUP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x543 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x56C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x42A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x58F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212209EDD39 0x4A AND 0x4F 0x4D CALLCODE CALLDATALOAD 0xEB 0xB5 0xC0 PUSH25 0x89D2D9B73CDCABC3F96DB3749D3815D01EAD7964736F6C6343 STOP ADDMOD 0xE STOP CALLER COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65646080 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2947 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xBD8616EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBD8616EC EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0xABFC83A0 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0x74E79189 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3FAFEF29 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13DD2960 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x234 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x207F JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x20FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x213C JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x9CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x319 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x395 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x20 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH4 0xFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 DUP4 AND PUSH1 0x60 DUP7 ADD MSTORE DUP3 AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x401 PUSH2 0x3FC CALLDATASIZE PUSH1 0x4 PUSH2 0x21F6 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x209 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x2231 JUMP JUMPDEST PUSH2 0xB42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x21B5 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x254 PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xE0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x502 PUSH2 0x4FD CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x209 SWAP2 SWAP1 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x254 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xEE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x55D CALLDATASIZE PUSH1 0x4 PUSH2 0x22F5 JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x57D CALLDATASIZE PUSH1 0x4 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x28C PUSH2 0x5D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x10FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH2 0x1415 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x610 CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F0 PUSH2 0x63D CALLDATASIZE PUSH1 0x4 PUSH2 0x210E JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x14E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x2530 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x6E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2504 JUMP JUMPDEST PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x712 JUMPI POP PUSH2 0x712 DUP3 PUSH2 0x15BC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x753 SWAP1 PUSH2 0x255E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7A0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x775 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x783 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 DUP3 PUSH2 0x160C JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP3 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x84E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x86A JUMPI POP PUSH2 0x86A DUP2 CALLER PUSH2 0x67F JUMP JUMPDEST PUSH2 0x8DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 PUSH2 0x166B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x91F JUMPI PUSH2 0x91F PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x948 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0x9B1 JUMPI PUSH2 0x979 DUP2 PUSH2 0xD29 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI PUSH2 0x98B PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP2 PUSH2 0x9AD DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x9BB DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x950 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xA28 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x16D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0xA39 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA43 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA52 CALLER DUP3 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH5 0x100000000 DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP3 SWAP2 PUSH2 0xB0D JUMPI MLOAD SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0xB3B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xB2A DUP4 DUP9 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0x2677 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0xBB2 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR DUP2 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP4 ADD SSTORE DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP8 DUP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP4 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL MUL SWAP4 SWAP1 SWAP4 AND PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT SWAP5 DUP4 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP3 SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 OR SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0xC92 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xB3131D7D301F8CAEB40981CFFC627B1FDF324B5E4A23845B61C1A6AD2A25F385 SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG2 PUSH2 0xD06 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8E6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1084 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0xE21 PUSH1 0x0 PUSH2 0x1A5B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x60 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE57 JUMPI PUSH2 0xE57 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE80 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST PUSH1 0xCA SLOAD DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 SUB PUSH2 0xED4 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI PUSH2 0xEBB PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0xED0 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xEDE DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE88 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0x727 SWAP1 PUSH2 0x255E JUMP JUMPDEST PUSH2 0xA28 CALLER DUP4 DUP4 PUSH2 0x1AAD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0xF20 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0xF3A JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xFCA DUP5 DUP5 PUSH2 0x1B7B JUMP JUMPDEST PUSH2 0xFD2 PUSH2 0x1BAC JUMP JUMPDEST PUSH2 0xFDB DUP7 PUSH2 0x1508 JUMP JUMPDEST DUP2 PUSH2 0xFE5 DUP7 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF6 SWAP3 SWAP2 SWAP1 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xC9 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x101A SWAP3 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP PUSH2 0x1029 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1037 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x108E CALLER DUP4 PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x10AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x10B6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x10C4 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x115F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP3 DIV DUP2 AND SWAP2 AND LT PUSH2 0x11D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE LT ISZERO PUSH2 0x124C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x60 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x12B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x105D58DD1A5BDB881A185CDB89DD081CDD185C9D1959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND GT PUSH2 0x1315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1327 CALLER PUSH2 0x1322 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x1345 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF AND SWAP2 PUSH2 0x136D DUP4 PUSH2 0x26DE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP1 PUSH1 0xCD PUSH1 0x0 PUSH2 0x139A PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE CALLER PUSH2 0x13B5 PUSH1 0xCA SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE DUP5 SWAP2 PUSH32 0xE38CB07A52E5D88A83DE7C9D29C2841118103E462D20F8C526B35872F9977785 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1412 PUSH1 0xCA DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1494 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xC9 SWAP1 PUSH2 0x14AF SWAP1 PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x14B8 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x279A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14F4 SWAP2 SWAP1 PUSH2 0x27E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1510 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1412 DUP2 PUSH2 0x1A5B JUMP JUMPDEST PUSH2 0x1586 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x60 SHL MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x15ED JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x712 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x16A0 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x177B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x8E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17F2 DUP4 PUSH2 0xD29 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1839 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x185D JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1852 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1878 DUP3 PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x193E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x845 JUMP JUMPDEST PUSH2 0x1949 PUSH1 0x0 DUP3 PUSH2 0x166B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1972 SWAP1 DUP5 SWAP1 PUSH2 0x25DD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x19A0 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xA28 DUP3 DUP3 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 PUSH2 0x1E9F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x1C02 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1C2C JUMPI DUP1 PUSH2 0x1C16 DUP2 PUSH2 0x25C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C25 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x2677 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x185D JUMPI PUSH2 0x1C86 PUSH1 0x1 DUP4 PUSH2 0x25DD JUMP JUMPDEST SWAP2 POP PUSH2 0x1C93 PUSH1 0xA DUP7 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1C9E SWAP1 PUSH1 0x30 PUSH2 0x26C6 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CB3 JUMPI PUSH2 0x1CB3 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x1CD5 PUSH1 0xA DUP7 PUSH2 0x2677 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C75 JUMP JUMPDEST PUSH2 0x1CE7 DUP5 DUP5 DUP5 PUSH2 0x1865 JUMP JUMPDEST PUSH2 0x1CF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x845 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x1DF3 SWAP1 DUP5 SWAP1 PUSH2 0x26C6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x1E8B SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8E6 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2806 JUMP JUMPDEST PUSH2 0xE21 CALLER PUSH2 0x1A5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1F13 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x28B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1F4E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1F4B SWAP2 DUP2 ADD SWAP1 PUSH2 0x28F4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1FAB JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1FA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x845 SWAP1 PUSH2 0x2865 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x185D JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x1FDC SWAP1 PUSH2 0x255E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2017 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2044 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2044 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2044 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2029 JUMP JUMPDEST POP PUSH2 0x2050 SWAP3 SWAP2 POP PUSH2 0x2054 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20A6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x20E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x214F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x215A DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2184 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x21D5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21E5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x222C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x224A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2255 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH2 0x226A PUSH1 0x40 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP4 POP PUSH2 0x2278 PUSH1 0x60 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP3 POP PUSH2 0x2286 PUSH1 0x80 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP2 POP PUSH2 0x2294 PUSH1 0xA0 DUP9 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x209C DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21A9 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2313 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP5 GT ISZERO PUSH2 0x2364 JUMPI PUSH2 0x2364 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x238C JUMPI PUSH2 0x238C PUSH2 0x2333 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x23A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209C DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2349 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x23F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2402 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2432 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2454 DUP10 DUP4 DUP11 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2477 DUP9 DUP3 DUP10 ADD PUSH2 0x23BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x24A5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x24B5 DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x24E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24F8 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2349 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2527 PUSH1 0x20 DUP5 ADD PUSH2 0x2218 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x254E DUP2 PUSH2 0x2127 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2328 DUP2 PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2572 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2592 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x25D6 JUMPI PUSH2 0x25D6 PUSH2 0x25AE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EF PUSH2 0x25AE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x265C JUMPI PUSH2 0x265C PUSH2 0x25AE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2686 JUMPI PUSH2 0x2686 PUSH2 0x2661 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x269D DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x26B1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x26D9 PUSH2 0x25AE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x26F7 JUMPI PUSH2 0x26F7 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x271B JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x273C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2750 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2761 JUMPI PUSH2 0x278E JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x278E JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x2786 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x276D JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A6 DUP3 DUP7 PUSH2 0x2701 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x27B6 DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x20A3 JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL SWAP2 ADD SWAP1 DUP2 MSTORE DUP4 MLOAD PUSH2 0x27D3 DUP2 PUSH1 0x1 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x20A3 JUMP JUMPDEST ADD PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27EC DUP3 DUP5 PUSH2 0x2701 JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL DUP2 MSTORE PUSH1 0xA ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2860 JUMPI PUSH2 0x2860 PUSH2 0x2661 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x28EA SWAP1 DUP4 ADD DUP5 PUSH2 0x20CF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x209C DUP2 PUSH2 0x2069 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xE4 PUSH1 0xB7 0xEF PUSH16 0x39786F77F92A66849CE602649C95F52 0xED 0xB7 SWAP9 0xCE CALLDATACOPY 0xFB SMOD PUSH30 0xA5FF64736F6C634300080E0033608060405234801561001057600080FD5B POP PUSH1 0x40 MLOAD PUSH2 0x4E4 CODESIZE SUB DUP1 PUSH2 0x4E4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x151 JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x47 JUMP JUMPDEST PUSH2 0x41 DUP2 PUSH2 0x97 JUMP JUMPDEST POP PUSH2 0x181 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xAA DUP2 PUSH2 0x142 PUSH1 0x20 SHL PUSH2 0x1A0 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E206973206E6F74206120636F6E747261637400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x354 DUP1 PUSH2 0x190 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x10E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x122 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xD7 DUP2 PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x116 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x120 PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x194 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19D DUP2 PUSH2 0x29E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x18B JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH2 0x857C 0xDA 0x49 0xEE CREATE 0xAB PUSH32 0xFBF7C954AD8941A4D6737EA56FBE0BCCB90FD0C5769A64736F6C634300080E00 CALLER CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A264697066735822122087 0x1F PUSH30 0x595F60F02509EA6C6B53D9B245636255BCD4511D07DF4F1A19A4F55C1E64 PUSH20 0x6F6C634300080E00330000000000000000000000 ",
              "sourceMap": "1096:3857:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2799:822;;;;;;;;;;-1:-1:-1;2799:822:43;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2562:32:46;;;2544:51;;2532:2;2517:18;2799:822:43;;;;;;;;1573:31;;;;;;;;;;;;;;;;;;;2752:25:46;;;2740:2;2725:18;1573:31:43;2606:177:46;3315:197:6;;;;;;;;;;-1:-1:-1;3315:197:6;;;;;:::i;:::-;;:::i;:::-;;3761:222;;;;;;:::i;:::-;;:::i;3004:131::-;;;;;;;;;;;;;:::i;4618:172:43:-;;;;;;;;;;-1:-1:-1;4618:172:43;;;;;:::i;:::-;;:::i;2071:101:0:-;;;;;;;;;;;;;:::i;1610:28:43:-;;;;;;;;;;-1:-1:-1;1610:28:43;;;;-1:-1:-1;;;;;1610:28:43;;;1978:583;;;;;;;;;;;;;:::i;1441:85:0:-;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;1681:32:43;;;;;;;;;;-1:-1:-1;1681:32:43;;;;;:::i;:::-;;:::i;4868:83::-;;;;;;;;;;-1:-1:-1;4941:3:43;4868:83;;3667:842;;;;;;;;;;-1:-1:-1;3667:842:43;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;1547:20:43:-;;;;;;;;;;-1:-1:-1;1547:20:43;;;;-1:-1:-1;;;;;1547:20:43;;;1336:85;;;;;;;;;;;;1378:43;1336:85;;2799:822;3021:5;;2969:7;;-1:-1:-1;;;;;3021:5:43;2997:20;3007:9;;2997;:20::i;:::-;-1:-1:-1;;;;;2997:29:43;;2988:75;;;;-1:-1:-1;;;2988:75:43;;4669:2:46;2988:75:43;;;4651:21:46;4708:2;4688:18;;;4681:30;4747:33;4727:18;;;4720:61;4798:18;;2988:75:43;;;;;;;;;3123:13;;3074:17;;-1:-1:-1;;;;;3123:13:43;-1:-1:-1;;;3246:10:43;3274:20;:10;929:14:13;;838:112;3274:20:43;3312:5;3335:7;3360:8;3150:232;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3150:232:43;;;;;;;;;;;;;;-1:-1:-1;;;;;3150:232:43;-1:-1:-1;;;;;;3150:232:43;;;;;;;;;;3094:298;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3430:15:43;:36;;;;;;;-1:-1:-1;3430:36:43;;;;;;;;-1:-1:-1;;;;;3430:36:43;;-1:-1:-1;;;;;;3430:36:43;;;;;;;;3074:318;;-1:-1:-1;3482:67:43;3496:20;:10;929:14:13;;838:112;3496:20:43;3518:5;3525:7;3482:67;;;;;;;;:::i;:::-;;;;;;;;3560:22;:10;1043:19:13;;1061:1;1043:19;;;956:123;3560:22:43;3608:5;2799:822;-1:-1:-1;;;;;;2799:822:43:o;3315:197:6:-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3398:36:::1;3416:17;3398;:36::i;:::-;3485:12;::::0;;3495:1:::1;3485:12:::0;;;::::1;::::0;::::1;::::0;;;3444:61:::1;::::0;3466:17;;3485:12;3444:21:::1;:61::i;:::-;3315:197:::0;:::o;3761:222::-;-1:-1:-1;;;;;1898:6:6;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:6;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:6;:20;-1:-1:-1;;;;;;;;;;;1642:65:3;-1:-1:-1;;;;;1642:65:3;;1563:151;1971:20:6;-1:-1:-1;;;;;1971:30:6;;1963:87;;;;-1:-1:-1;;;1963:87:6;;;;;;;:::i;:::-;3878:36:::1;3896:17;3878;:36::i;:::-;3924:52;3946:17;3965:4;3971;3924:21;:52::i;:::-;3761:222:::0;;:::o;3004:131::-;3082:7;2324:4;-1:-1:-1;;;;;2333:6:6;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:6;;7882:2:46;2308:92:6;;;7864:21:46;7921:2;7901:18;;;7894:30;7960:34;7940:18;;;7933:62;8031:26;8011:18;;;8004:54;8075:19;;2308:92:6;7680:420:46;2308:92:6;-1:-1:-1;;;;;;;;;;;;3004:131:6;:::o;4618:172:43:-;1513:6:0;;-1:-1:-1;;;;;1513:6:0;929:10:12;4682:23:43;;:48;;-1:-1:-1;4709:5:43;;-1:-1:-1;;;;;4709:5:43;929:10:12;4709:21:43;4682:48;4674:82;;;;-1:-1:-1;;;4674:82:43;;8307:2:46;4674:82:43;;;8289:21:46;8346:2;8326:18;;;8319:30;-1:-1:-1;;;8365:18:46;;;8358:51;8426:18;;4674:82:43;8105:345:46;4674:82:43;4766:5;:17;;-1:-1:-1;;;;;;4766:17:43;-1:-1:-1;;;;;4766:17:43;;;;;;;;;;4618:172::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;1978:583:43:-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;8657:2:46;3157:201:5;;;8639:21:46;8696:2;8676:18;;;8669:30;8735:34;8715:18;;;8708:62;-1:-1:-1;;;8786:18:46;;;8779:44;8840:19;;3157:201:5;8455:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;2029:26:43::1;:24;:26::i;:::-;2123:5;:18:::0;;-1:-1:-1;;;;;;2123:18:43::1;2131:10;2123:18;::::0;;2180:69:::1;::::0;::::1;::::0;2191:42:::1;::::0;2235:13:::1;::::0;2180:69:::1;;9044:25:46::0;;;9100:2;9085:18;;9078:34;9032:2;9017:18;;8870:248;2180:69:43::1;;::::0;;-1:-1:-1;;2180:69:43;;::::1;::::0;;;;;;;2170:80;;2180:69:::1;2170:80:::0;;::::1;::::0;2151:16:::1;:99:::0;2315:25:::1;::::0;2373:12:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2343:44;;;;;:::i;:::-;-1:-1:-1::0;;;;;2562:32:46;;;2544:51;;2532:2;2517:18;2343:44:43::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2397:37:43::1;::::0;-1:-1:-1;;;2397:37:43;;2423:10:::1;2397:37;::::0;::::1;2544:51:46::0;2315:72:43;;-1:-1:-1;;;;;;2397:25:43;::::1;::::0;::::1;::::0;2517:18:46;;2397:37:43::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2444:13:43::1;:32:::0;;-1:-1:-1;;;;;;2444:32:43::1;-1:-1:-1::0;;;;;2444:32:43;::::1;;::::0;;-1:-1:-1;;2532:10:43::1;1043:19:13::0;;-1:-1:-1;1043:19:13;;;2019:542:43::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;9275:36:46;;3553:14:5;;9263:2:46;9248:18;3553:14:5;;;;;;;3101:483;1978:583:43:o;1681:32::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1681:32:43;;-1:-1:-1;1681:32:43;:::o;3667:842::-;3760:5;;3733:7;;-1:-1:-1;;;;;3760:5:43;3752:53;;;;-1:-1:-1;;;3752:53:43;;9524:2:46;3752:53:43;;;9506:21:46;9563:2;9543:18;;;9536:30;-1:-1:-1;;;9582:18:46;;;9575:51;9643:18;;3752:53:43;9322:345:46;3752:53:43;4094:16;;4122:39;;;1378:43;4122:39;;;9846:25:46;4150:10:43;9887:18:46;;;9880:60;;;;4025:14:43;;4094:16;9819:18:46;;4122:39:43;;;;;;;;;;;;4112:50;;;;;;4065:98;;;;;;;;-1:-1:-1;;;10209:27:46;;10261:1;10252:11;;10245:27;;;;10297:2;10288:12;;10281:28;10334:2;10325:12;;9951:392;4065:98:43;;;;;;;;;;;;;4042:131;;;;;;4025:148;;4417:24;4444:25;4459:9;;4444:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4444:6:43;;:25;-1:-1:-1;;4444:14:43;:25;-1:-1:-1;4444:25:43:i;:::-;4417:52;3667:842;-1:-1:-1;;;;;3667:842:43:o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;10550:2:46;2401:73:0::1;::::0;::::1;10532:21:46::0;10589:2;10569:18;;;10562:30;10628:34;10608:18;;;10601:62;-1:-1:-1;;;10679:18:46;;;10672:36;10725:19;;2401:73:0::1;10348:402:46::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;4796:66:43:-:0;1334:13:0;:11;:13::i;2938:974:3:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;:::-;2938:974;;;:::o;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:3;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:3;;;;;;;;-1:-1:-1;;3531:63:3;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:3;;11146:2:46;3758:56:3;;;11128:21:46;11185:2;11165:18;;;11158:30;11224:34;11204:18;;;11197:62;-1:-1:-1;;;11275:18:46;;;11268:44;11329:19;;3758:56:3;10944:410:46;3527:302:3;-1:-1:-1;;;;;;;;;;;3644:28:3;;3636:82;;;;-1:-1:-1;;;3636:82:3;;11561:2:46;3636:82:3;;;11543:21:46;11600:2;11580:18;;;11573:30;11639:34;11619:18;;;11612:62;-1:-1:-1;;;11690:18:46;;;11683:39;11739:19;;3636:82:3;11359:405:46;3636:82:3;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;11971:2:46;1654:68:0;;;11953:21:46;;;11990:18;;;11983:30;12049:34;12029:18;;;12022:62;12101:18;;1654:68:0;11769:356:46;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1104:111::-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;12332:2:46;4902:69:5;;;12314:21:46;12371:2;12351:18;;;12344:30;12410:34;12390:18;;;12383:62;-1:-1:-1;;;12461:18:46;;;12454:41;12512:19;;4902:69:5;12130:407:46;4902:69:5;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;4424:227:16:-:0;4502:7;4522:17;4541:18;4563:27;4574:4;4580:9;4563:10;:27::i;:::-;4521:69;;;;4600:18;4612:5;4600:11;:18::i;:::-;-1:-1:-1;4635:9:16;4424:227;-1:-1:-1;;;4424:227:16:o;1805:281:3:-;-1:-1:-1;;;;;1476:19:11;;;1878:106:3;;;;-1:-1:-1;;;1878:106:3;;12744:2:46;1878:106:3;;;12726:21:46;12783:2;12763:18;;;12756:30;12822:34;12802:18;;;12795:62;-1:-1:-1;;;12873:18:46;;;12866:43;12926:19;;1878:106:3;12542:409:46;1878:106:3;-1:-1:-1;;;;;;;;;;;1994:85:3;;-1:-1:-1;;;;;;1994:85:3;-1:-1:-1;;;;;1994:85:3;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;:::-;;2478:288;;;:::o;2265:1373:16:-;2346:7;2355:12;2576:9;:16;2596:2;2576:22;2572:1060;;2912:4;2897:20;;2891:27;2961:4;2946:20;;2940:27;3018:4;3003:20;;2997:27;2614:9;2989:36;3059:25;3070:4;2989:36;2891:27;2940;3059:10;:25::i;:::-;3052:32;;;;;;;;;2572:1060;3105:9;:16;3125:2;3105:22;3101:531;;3421:4;3406:20;;3400:27;3471:4;3456:20;;3450:27;3511:23;3522:4;3400:27;3450;3511:10;:23::i;:::-;3504:30;;;;;;;;3101:531;-1:-1:-1;3581:1:16;;-1:-1:-1;3585:35:16;3101:531;2265:1373;;;;;:::o;570:631::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:561;;570:631;:::o;634:561::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:465;;788:34;;-1:-1:-1;;;788:34:16;;13290:2:46;788:34:16;;;13272:21:46;13329:2;13309:18;;;13302:30;13368:26;13348:18;;;13341:54;13412:18;;788:34:16;13088:348:46;730:465:16;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:356;;903:41;;-1:-1:-1;;;903:41:16;;13643:2:46;903:41:16;;;13625:21:46;13682:2;13662:18;;;13655:30;13721:33;13701:18;;;13694:61;13772:18;;903:41:16;13441:355:46;839:356:16;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:234;;1020:44;;-1:-1:-1;;;1020:44:16;;14003:2:46;1020:44:16;;;13985:21:46;14042:2;14022:18;;;14015:30;14081:34;14061:18;;;14054:62;-1:-1:-1;;;14132:18:46;;;14125:32;14174:19;;1020:44:16;13801:398:46;961:234:16;1094:30;1085:5;:39;;;;;;;;:::i;:::-;;1081:114;;1140:44;;-1:-1:-1;;;1140:44:16;;14406:2:46;1140:44:16;;;14388:21:46;14445:2;14425:18;;;14418:30;14484:34;14464:18;;;14457:62;-1:-1:-1;;;14535:18:46;;;14528:32;14577:19;;1140:44:16;14204:398:46;2192:152:3;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:3;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:11;;;7195:88:3;;;;-1:-1:-1;;;7195:88:3;;14809:2:46;7195:88:3;;;14791:21:46;14848:2;14828:18;;;14821:30;14887:34;14867:18;;;14860:62;-1:-1:-1;;;14938:18:46;;;14931:36;14984:19;;7195:88:3;14607:402:46;7195:88:3;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:3;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;5832:1603:16:-;5958:7;;6882:66;6869:79;;6865:161;;;-1:-1:-1;6980:1:16;;-1:-1:-1;6984:30:16;6964:51;;6865:161;7039:1;:7;;7044:2;7039:7;;:18;;;;;7050:1;:7;;7055:2;7050:7;;7039:18;7035:100;;;-1:-1:-1;7089:1:16;;-1:-1:-1;7093:30:16;7073:51;;7035:100;7246:24;;;7229:14;7246:24;;;;;;;;;15520:25:46;;;15593:4;15581:17;;15561:18;;;15554:45;;;;15615:18;;;15608:34;;;15658:18;;;15651:34;;;7246:24:16;;15492:19:46;;7246:24:16;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7246:24:16;;-1:-1:-1;;7246:24:16;;;-1:-1:-1;;;;;;;7284:20:16;;7280:101;;7336:1;7340:29;7320:50;;;;;;;7280:101;7399:6;-1:-1:-1;7407:20:16;;-1:-1:-1;5832:1603:16;;;;;;;;:::o;4905:336::-;5015:7;;-1:-1:-1;;;;;5060:80:16;;5015:7;5166:25;5182:3;5167:18;;;5189:2;5166:25;:::i;:::-;5150:42;;5209:25;5220:4;5226:1;5229;5232;5209:10;:25::i;:::-;5202:32;;;;;;4905:336;;;;;;:::o;6622:742:11:-;6768:12;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;6933:415::-;6622:742;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:347:46:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:46;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;366:127;427:10;422:3;418:20;415:1;408:31;458:4;455:1;448:15;482:4;479:1;472:15;498:632;563:5;593:18;634:2;626:6;623:14;620:40;;;640:18;;:::i;:::-;715:2;709:9;683:2;769:15;;-1:-1:-1;;765:24:46;;;791:2;761:33;757:42;745:55;;;815:18;;;835:22;;;812:46;809:72;;;861:18;;:::i;:::-;901:10;897:2;890:22;930:6;921:15;;960:6;952;945:22;1000:3;991:6;986:3;982:16;979:25;976:45;;;1017:1;1014;1007:12;976:45;1067:6;1062:3;1055:4;1047:6;1043:17;1030:44;1122:1;1115:4;1106:6;1098;1094:19;1090:30;1083:41;;;;498:632;;;;;:::o;1135:222::-;1178:5;1231:3;1224:4;1216:6;1212:17;1208:27;1198:55;;1249:1;1246;1239:12;1198:55;1271:80;1347:3;1338:6;1325:20;1318:4;1310:6;1306:17;1271:80;:::i;1362:1031::-;1489:6;1497;1505;1513;1521;1574:3;1562:9;1553:7;1549:23;1545:33;1542:53;;;1591:1;1588;1581:12;1542:53;1631:9;1618:23;1660:18;1701:2;1693:6;1690:14;1687:34;;;1717:1;1714;1707:12;1687:34;1756:58;1806:7;1797:6;1786:9;1782:22;1756:58;:::i;:::-;1833:8;;-1:-1:-1;1730:84:46;-1:-1:-1;1921:2:46;1906:18;;1893:32;;-1:-1:-1;1937:16:46;;;1934:36;;;1966:1;1963;1956:12;1934:36;1989:52;2033:7;2022:8;2011:9;2007:24;1989:52;:::i;:::-;1979:62;;2094:2;2083:9;2079:18;2066:32;2050:48;;2123:2;2113:8;2110:16;2107:36;;;2139:1;2136;2129:12;2107:36;2162:52;2206:7;2195:8;2184:9;2180:24;2162:52;:::i;:::-;2152:62;;2267:2;2256:9;2252:18;2239:32;2223:48;;2296:2;2286:8;2283:16;2280:36;;;2312:1;2309;2302:12;2280:36;;2335:52;2379:7;2368:8;2357:9;2353:24;2335:52;:::i;:::-;2325:62;;;1362:1031;;;;;;;;:::o;2788:173::-;2856:20;;-1:-1:-1;;;;;2905:31:46;;2895:42;;2885:70;;2951:1;2948;2941:12;2885:70;2788:173;;;:::o;2966:186::-;3025:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:52;;;3094:1;3091;3084:12;3046:52;3117:29;3136:9;3117:29;:::i;3157:524::-;3234:6;3242;3295:2;3283:9;3274:7;3270:23;3266:32;3263:52;;;3311:1;3308;3301:12;3263:52;3334:29;3353:9;3334:29;:::i;:::-;3324:39;;3414:2;3403:9;3399:18;3386:32;3441:18;3433:6;3430:30;3427:50;;;3473:1;3470;3463:12;3427:50;3496:22;;3549:4;3541:13;;3537:27;-1:-1:-1;3527:55:46;;3578:1;3575;3568:12;3527:55;3601:74;3667:7;3662:2;3649:16;3644:2;3640;3636:11;3601:74;:::i;:::-;3591:84;;;3157:524;;;;;:::o;3686:180::-;3745:6;3798:2;3786:9;3777:7;3773:23;3769:32;3766:52;;;3814:1;3811;3804:12;3766:52;-1:-1:-1;3837:23:46;;3686:180;-1:-1:-1;3686:180:46:o;4053:409::-;4123:6;4131;4184:2;4172:9;4163:7;4159:23;4155:32;4152:52;;;4200:1;4197;4190:12;4152:52;4240:9;4227:23;4273:18;4265:6;4262:30;4259:50;;;4305:1;4302;4295:12;4259:50;4344:58;4394:7;4385:6;4374:9;4370:22;4344:58;:::i;:::-;4421:8;;4318:84;;-1:-1:-1;4053:409:46;-1:-1:-1;;;;4053:409:46:o;4827:258::-;4899:1;4909:113;4923:6;4920:1;4917:13;4909:113;;;4999:11;;;4993:18;4980:11;;;4973:39;4945:2;4938:10;4909:113;;;5040:6;5037:1;5034:13;5031:48;;;-1:-1:-1;;5075:1:46;5057:16;;5050:27;4827:258::o;5090:::-;5132:3;5170:5;5164:12;5197:6;5192:3;5185:19;5213:63;5269:6;5262:4;5257:3;5253:14;5246:4;5239:5;5235:16;5213:63;:::i;:::-;5330:2;5309:15;-1:-1:-1;;5305:29:46;5296:39;;;;5337:4;5292:50;;5090:258;-1:-1:-1;;5090:258:46:o;5353:717::-;5683:1;5679;5674:3;5670:11;5666:19;5658:6;5654:32;5643:9;5636:51;5723:6;5718:2;5707:9;5703:18;5696:34;5766:3;5761:2;5750:9;5746:18;5739:31;5617:4;5793:46;5834:3;5823:9;5819:19;5811:6;5793:46;:::i;:::-;5887:9;5879:6;5875:22;5870:2;5859:9;5855:18;5848:50;5921:33;5947:6;5939;5921:33;:::i;:::-;5907:47;;6003:9;5995:6;5991:22;5985:3;5974:9;5970:19;5963:51;6031:33;6057:6;6049;6031:33;:::i;:::-;6023:41;5353:717;-1:-1:-1;;;;;;;;5353:717:46:o;6075:315::-;-1:-1:-1;;;;;6250:32:46;;6232:51;;6319:2;6314;6299:18;;6292:30;;;-1:-1:-1;;6339:45:46;;6365:18;;6357:6;6339:45;:::i;:::-;6331:53;6075:315;-1:-1:-1;;;;6075:315:46:o;6395:454::-;6620:6;6609:9;6602:25;6663:2;6658;6647:9;6643:18;6636:30;6583:4;6689:45;6730:2;6719:9;6715:18;6707:6;6689:45;:::i;:::-;6782:9;6774:6;6770:22;6765:2;6754:9;6750:18;6743:50;6810:33;6836:6;6828;6810:33;:::i;6854:408::-;7056:2;7038:21;;;7095:2;7075:18;;;7068:30;7134:34;7129:2;7114:18;;7107:62;-1:-1:-1;;;7200:2:46;7185:18;;7178:42;7252:3;7237:19;;6854:408::o;7267:::-;7469:2;7451:21;;;7508:2;7488:18;;;7481:30;7547:34;7542:2;7527:18;;7520:62;-1:-1:-1;;;7613:2:46;7598:18;;7591:42;7665:3;7650:19;;7267:408::o;10755:184::-;10825:6;10878:2;10866:9;10857:7;10853:23;10849:32;10846:52;;;10894:1;10891;10884:12;10846:52;-1:-1:-1;10917:16:46;;10755:184;-1:-1:-1;10755:184:46:o;12956:127::-;13017:10;13012:3;13008:20;13005:1;12998:31;13048:4;13045:1;13038:15;13072:4;13069:1;13062:15;15014:274;15143:3;15181:6;15175:13;15197:53;15243:6;15238:3;15231:4;15223:6;15219:17;15197:53;:::i;:::-;15266:16;;;;;15014:274;-1:-1:-1;;15014:274:46:o;15696:225::-;15736:3;15767:1;15763:6;15760:1;15757:13;15754:136;;;15812:10;15807:3;15803:20;15800:1;15793:31;15847:4;15844:1;15837:15;15875:4;15872:1;15865:15;15754:136;-1:-1:-1;15906:9:46;;15696:225::o;15926:220::-;16075:2;16064:9;16057:21;16038:4;16095:45;16136:2;16125:9;16121:18;16113:6;16095:45;:::i"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4196400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "2341",
                "MINTER_TYPEHASH()": "283",
                "admin()": "2392",
                "artistContracts(uint256)": "4670",
                "beaconAddress()": "2415",
                "createArtist(bytes,string,string,string)": "infinite",
                "getSigner(bytes)": "infinite",
                "initialize()": "infinite",
                "markOfTheBeast()": "281",
                "owner()": "2365",
                "proxiableUUID()": "infinite",
                "renounceOwnership()": "infinite",
                "setAdmin(address)": "28901",
                "transferOwnership(address)": "28380",
                "upgradeTo(address)": "infinite",
                "upgradeToAndCall(address,bytes)": "infinite"
              },
              "internal": {
                "_authorizeUpgrade(address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "MINTER_TYPEHASH()": "fa4d280c",
              "admin()": "f851a440",
              "artistContracts(uint256)": "b16a43f0",
              "beaconAddress()": "7e2ec6d0",
              "createArtist(bytes,string,string,string)": "233654eb",
              "getSigner(bytes)": "e6adabfd",
              "initialize()": "8129fc1c",
              "markOfTheBeast()": "dbdcc4bd",
              "owner()": "8da5cb5b",
              "proxiableUUID()": "52d1902d",
              "renounceOwnership()": "715018a6",
              "setAdmin(address)": "704b6c02",
              "transferOwnership(address)": "f2fde38b",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"artistId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"artistAddress\",\"type\":\"address\"}],\"name\":\"CreatedArtist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artistContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createArtist\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"markOfTheBeast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"params\":{\"_name\":\"Name of the artist\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAdmin(address)\":{\"params\":{\"_newAdmin\":\"address of new admin\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"events\":{\"CreatedArtist(uint256,string,string,address)\":{\"notice\":\"Emitted when an Artist is created\"}},\"kind\":\"user\",\"methods\":{\"createArtist(bytes,string,string,string)\":{\"notice\":\"Creates a new artist contract as a factory with a deterministic address Important: None of these fields (except the Url fields with the same hash) can be changed after calling\"},\"getSigner(bytes)\":{\"notice\":\"Get signer address of signature\"},\"initialize()\":{\"notice\":\"Initializes factory\"},\"setAdmin(address)\":{\"notice\":\"Sets the admin for authorizing artist deployment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test-contracts/ArtistCreatorUpgradeTest.sol\":\"ArtistCreatorUpgradeTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n    function __ERC1967Upgrade_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n    }\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n        require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n        require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate that the this implementation remains valid after an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n        return _IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeTo(address newImplementation) external virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeTo} and {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal override onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(\\n            Address.isContract(IBeacon(newBeacon).implementation()),\\n            \\\"ERC1967: beacon implementation is not a contract\\\"\\n        );\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overridden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/beacon/BeaconProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"../ERC1967/ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\\n *\\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\\n * conflict with the storage layout of the implementation behind the proxy.\\n *\\n * _Available since v3.4._\\n */\\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the proxy with `beacon`.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\\n     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\\n     * constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract with the interface {IBeacon}.\\n     */\\n    constructor(address beacon, bytes memory data) payable {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current beacon address.\\n     */\\n    function _beacon() internal view virtual returns (address) {\\n        return _getBeacon();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address of the associated beacon.\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return IBeacon(_getBeacon()).implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\\n     *\\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\\n     *\\n     * Requirements:\\n     *\\n     * - `beacon` must be a contract.\\n     * - The implementation returned by `beacon` must be a contract.\\n     */\\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\\n        _upgradeBeaconToAndCall(beacon, data, false);\\n    }\\n}\\n\",\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IBeacon.sol\\\";\\nimport \\\"../../access/Ownable.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\\n * implementation contract, which is where they will delegate all function calls.\\n *\\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\\n */\\ncontract UpgradeableBeacon is IBeacon, Ownable {\\n    address private _implementation;\\n\\n    /**\\n     * @dev Emitted when the implementation returned by the beacon is changed.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\\n     * beacon.\\n     */\\n    constructor(address implementation_) {\\n        _setImplementation(implementation_);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function implementation() public view virtual override returns (address) {\\n        return _implementation;\\n    }\\n\\n    /**\\n     * @dev Upgrades the beacon to a new implementation.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * Requirements:\\n     *\\n     * - msg.sender must be the owner of the contract.\\n     * - `newImplementation` must be a contract.\\n     */\\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Sets the implementation contract address for this beacon\\n     *\\n     * Requirements:\\n     *\\n     * - `newImplementation` must be a contract.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"UpgradeableBeacon: implementation is not a contract\\\");\\n        _implementation = newImplementation;\\n    }\\n}\\n\",\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"contracts/Artist.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport {IERC2981Upgradeable, IERC165Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport {ERC721Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport {Strings} from '@openzeppelin/contracts/utils/Strings.sol';\\nimport {CountersUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\n\\n// This contract is a combination of Mirror.xyz's Editions.sol and Zora's SingleEditionMintable.sol\\n\\n/**\\n * @title Artist\\n * @author SoundXYZ\\n */\\ncontract Artist is ERC721Upgradeable, IERC2981Upgradeable, OwnableUpgradeable {\\n    // todo (optimization): link Strings as a deployed library\\n    using Strings for uint256;\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n    // ============ Structs ============\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n    }\\n\\n    // ============ Storage ============\\n\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter private atTokenId;\\n    CountersUpgradeable.Counter private atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n\\n    // ============ Events ============\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer\\n    );\\n\\n    // ============ Methods ============\\n\\n    /**\\n      @param _owner Owner of edition\\n      @param _name Name of artist\\n    */\\n    function initialize(\\n        address _owner,\\n        uint256 _artistId,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __Ownable_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // E.g. https://sound.xyz/api/metadata/[artistId]/\\n        baseURI = string(abi.encodePacked(_baseURI, _artistId.toString(), '/'));\\n\\n        // Set token id start to be 1 not 0\\n        atTokenId.increment();\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime\\n    ) external onlyOwner {\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    function buyEdition(uint256 _editionId) external payable {\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(editions[_editionId].quantity > 0, 'Edition does not exist');\\n        // Check that there are still tokens available to purchase.\\n        require(editions[_editionId].numSold < editions[_editionId].quantity, 'This edition is already sold out.');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= editions[_editionId].price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases before the start time\\n        require(editions[_editionId].startTime < block.timestamp, \\\"Auction hasn't started\\\");\\n        // Don't allow purchases after the end time\\n        require(editions[_editionId].endTime > block.timestamp, 'Auction has ended');\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, atTokenId.current());\\n        // Update the deposited total for the edition\\n        depositedForEdition[_editionId] += msg.value;\\n        // Increment the number of tokens sold for this edition.\\n        editions[_editionId].numSold++;\\n        // Store the mapping of token id to the edition being purchased.\\n        tokenToEdition[atTokenId.current()] = _editionId;\\n\\n        emit EditionPurchased(_editionId, atTokenId.current(), editions[_editionId].numSold, msg.sender);\\n\\n        atTokenId.increment();\\n    }\\n\\n    // ============ Operational Methods ============\\n\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external onlyOwner {\\n        editions[_editionId].startTime = _startTime;\\n    }\\n\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external onlyOwner {\\n        editions[_editionId].endTime = _endTime;\\n    }\\n\\n    // ============ NFT Methods ============\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, tokenToEdition[_tokenId].toString(), '/', _tokenId.toString()));\\n    }\\n\\n    // Returns e.g. https://sound.xyz/api/metadata/[artistId]/storefront\\n    function contractURI() public view returns (string memory) {\\n        // Concatenate the components, baseURI, editionId and tokenId, to create URI.\\n        return string(abi.encodePacked(baseURI, 'storefront'));\\n    }\\n\\n    // ============ Extensions =================\\n\\n    /**\\n        @dev Get token ids for a given edition id\\n        @param _editionId edition id\\n     */\\n    function getTokenIdsOfEdition(uint256 _editionId) public view returns (uint256[] memory) {\\n        uint256[] memory tokenIdsOfEdition = new uint256[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                tokenIdsOfEdition[index] = id;\\n                index++;\\n            }\\n        }\\n        return tokenIdsOfEdition;\\n    }\\n\\n    /**\\n        @dev Get owners of a given edition id\\n        @param _editionId edition id\\n     */\\n    function getOwnersOfEdition(uint256 _editionId) public view returns (address[] memory) {\\n        address[] memory ownersOfEdition = new address[](editions[_editionId].numSold);\\n        uint256 index = 0;\\n\\n        for (uint256 id = 1; id < atTokenId.current(); id++) {\\n            if (tokenToEdition[id] == _editionId) {\\n                ownersOfEdition[index] = ERC721Upgradeable.ownerOf(id);\\n                index++;\\n            }\\n        }\\n        return ownersOfEdition;\\n    }\\n\\n    /**\\n        @dev Get royalty information for token\\n        @param _editionId edition id\\n        @param _salePrice Sale price for the token\\n     */\\n    function royaltyInfo(uint256 _editionId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        Edition memory edition = editions[_editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    function totalSupply() external view returns (uint256) {\\n        return atTokenId.current() - 1; // because atTokenId is 1-indexed\\n    }\\n\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    // ============ Private Methods ============\\n\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n}\\n\",\"keccak256\":\"0x275df23e9824418bb46b4643f2cee3b4871481f1a4be57f357af6753b485aab0\",\"license\":\"GPL-3.0-or-later\"},\"contracts/test-contracts/ArtistCreatorUpgradeTest.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.7;\\n\\n/*\\n \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\n\\u2588\\u2588      \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n     \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588    \\u2588\\u2588 \\u2588\\u2588  \\u2588\\u2588 \\u2588\\u2588 \\u2588\\u2588   \\u2588\\u2588 \\n\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588  \\u2588\\u2588   \\u2588\\u2588\\u2588\\u2588 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588 \\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol';\\nimport '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';\\nimport '../Artist.sol';\\n\\ncontract ArtistCreatorUpgradeTest is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSAUpgradeable for bytes32;\\n\\n    // ============ Storage ============\\n\\n    bytes32 public constant MINTER_TYPEHASH = keccak256('Deployer(address artistWallet)');\\n    CountersUpgradeable.Counter private atArtistId;\\n    // address used for signature verification, changeable by owner\\n    address public admin;\\n    bytes32 public DOMAIN_SEPARATOR;\\n    address public beaconAddress;\\n    // registry of created contracts\\n    address[] public artistContracts;\\n\\n    // ============ Events ============\\n\\n    /// Emitted when an Artist is created\\n    event CreatedArtist(uint256 artistId, string name, string symbol, address indexed artistAddress);\\n\\n    // ============ Functions ============\\n\\n    /// Initializes factory\\n    function initialize() public initializer {\\n        __Ownable_init_unchained();\\n\\n        // set admin for artist deployment authorization\\n        admin = msg.sender;\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n\\n        // set up beacon with msg.sender as the owner\\n        UpgradeableBeacon _beacon = new UpgradeableBeacon(address(new Artist()));\\n        _beacon.transferOwnership(msg.sender);\\n        beaconAddress = address(_beacon);\\n\\n        // Set artist id start to be 1 not 0\\n        atArtistId.increment();\\n    }\\n\\n    /// Creates a new artist contract as a factory with a deterministic address\\n    /// Important: None of these fields (except the Url fields with the same hash) can be changed after calling\\n    /// @param _name Name of the artist\\n    function createArtist(\\n        bytes calldata signature,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public returns (address) {\\n        require((getSigner(signature) == admin), 'invalid authorization signature');\\n\\n        BeaconProxy proxy = new BeaconProxy(\\n            beaconAddress,\\n            abi.encodeWithSelector(\\n                Artist(address(0)).initialize.selector,\\n                msg.sender,\\n                atArtistId.current(),\\n                _name,\\n                _symbol,\\n                _baseURI\\n            )\\n        );\\n\\n        // add to registry\\n        artistContracts.push(address(proxy));\\n\\n        emit CreatedArtist(atArtistId.current(), _name, _symbol, address(proxy));\\n\\n        atArtistId.increment();\\n\\n        return address(proxy);\\n    }\\n\\n    /// Get signer address of signature\\n    function getSigner(bytes calldata signature) public view returns (address) {\\n        require(admin != address(0), 'whitelist not enabled');\\n        // Verify EIP-712 signature by recreating the data structure\\n        // that we signed on the client side, and then using that to recover\\n        // the address that signed the signature for this data.\\n        bytes32 digest = keccak256(\\n            abi.encodePacked('\\\\x19\\\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(MINTER_TYPEHASH, msg.sender)))\\n        );\\n        // Use the recover method to see what address was used to create\\n        // the signature on this data.\\n        // Note that if the digest doesn't exactly match what was signed we'll\\n        // get a random recovered address.\\n        address recoveredAddress = digest.recover(signature);\\n        return recoveredAddress;\\n    }\\n\\n    /// Sets the admin for authorizing artist deployment\\n    /// @param _newAdmin address of new admin\\n    function setAdmin(address _newAdmin) external {\\n        require(owner() == _msgSender() || admin == _msgSender(), 'invalid authorization');\\n        admin = _newAdmin;\\n    }\\n\\n    function _authorizeUpgrade(address) internal override onlyOwner {}\\n\\n    function markOfTheBeast() public pure returns (uint256) {\\n        return 666;\\n    }\\n}\\n\",\"keccak256\":\"0x74276e1b7080481011e65be2df6fcc6f10c69bcbd1d0479cd94fbbbc45e74c31\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 528,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 825,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2163,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "__gap",
                "offset": 0,
                "slot": "101",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 10,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 130,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "__gap",
                "offset": 0,
                "slot": "152",
                "type": "t_array(t_uint256)49_storage"
              },
              {
                "astId": 11959,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "atArtistId",
                "offset": 0,
                "slot": "201",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 11961,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "admin",
                "offset": 0,
                "slot": "202",
                "type": "t_address"
              },
              {
                "astId": 11963,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "DOMAIN_SEPARATOR",
                "offset": 0,
                "slot": "203",
                "type": "t_bytes32"
              },
              {
                "astId": 11965,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "beaconAddress",
                "offset": 0,
                "slot": "204",
                "type": "t_address"
              },
              {
                "astId": 11968,
                "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                "label": "artistContracts",
                "offset": 0,
                "slot": "205",
                "type": "t_array(t_address)dyn_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_array(t_uint256)49_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[49]",
                "numberOfBytes": "1568"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol:ArtistCreatorUpgradeTest",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "events": {
              "CreatedArtist(uint256,string,string,address)": {
                "notice": "Emitted when an Artist is created"
              }
            },
            "kind": "user",
            "methods": {
              "createArtist(bytes,string,string,string)": {
                "notice": "Creates a new artist contract as a factory with a deterministic address Important: None of these fields (except the Url fields with the same hash) can be changed after calling"
              },
              "getSigner(bytes)": {
                "notice": "Get signer address of signature"
              },
              "initialize()": {
                "notice": "Initializes factory"
              },
              "setAdmin(address)": {
                "notice": "Sets the admin for authorizing artist deployment"
              }
            },
            "version": 1
          }
        }
      },
      "contracts/test-contracts/TEST_ArtistV6.sol": {
        "TEST_ArtistV6": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "enum TEST_ArtistV6.TimeType",
                  "name": "timeType",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint32",
                  "name": "newTime",
                  "type": "uint32"
                }
              ],
              "name": "AuctionTimeSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "baseURI",
                  "type": "string"
                }
              ],
              "name": "BaseURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "EditionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "EditionPurchased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "version",
                  "type": "uint8"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "PermissionedQuantitySet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleGranted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "RoleRevoked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "editionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                }
              ],
              "name": "SignerAddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADMIN_ROLE",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMISSIONED_SALE_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "_tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "atEditionId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "atTokenId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "_ticketNumber",
                  "type": "uint256"
                }
              ],
              "name": "buyEdition",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ticketNumbers",
                  "type": "uint256[]"
                }
              ],
              "name": "checkTicketNumbers",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "",
                  "type": "bool[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "contractURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "createEdition",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "depositedForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "editionCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "editions",
              "outputs": [
                {
                  "internalType": "address payable",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "numSold",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "quantity",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "royaltyBPS",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "permissionedQuantity",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "baseURI",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "grantRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "hasRole",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "ownersOfTokenIds",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "revokeRole",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_salePrice",
                  "type": "uint256"
                }
              ],
              "name": "royaltyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "fundingRecipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "royaltyAmount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "_baseURI",
                  "type": "string"
                }
              ],
              "name": "setEditionBaseURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_endTime",
                  "type": "uint32"
                }
              ],
              "name": "setEndTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "setOwnerOverride",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_permissionedQuantity",
                  "type": "uint32"
                }
              ],
              "name": "setPermissionedQuantity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_newSignerAddress",
                  "type": "address"
                }
              ],
              "name": "setSignerAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_someNumber",
                  "type": "uint256"
                }
              ],
              "name": "setSomeNumber",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_startTime",
                  "type": "uint32"
                }
              ],
              "name": "setStartTime",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "someNumber",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "soundRecoveryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenToEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_editionId",
                  "type": "uint256"
                }
              ],
              "name": "withdrawFunds",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdrawnForEdition",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "SoundXYZ - @gigamesh & @vigneshka",
            "details": "Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "details": "See {IERC721-approve}."
              },
              "balanceOf(address)": {
                "details": "See {IERC721-balanceOf}."
              },
              "buyEdition(uint256,bytes,uint256)": {
                "params": {
                  "_editionId": "The id of the edition to purchase",
                  "_signature": "A signed message for authorizing permissioned purchases",
                  "_ticketNumber": "Ticket number required for validating this buyer hasn't already bought."
                }
              },
              "checkTicketNumbers(uint256,uint256[])": {
                "params": {
                  "_editionId": "Edition id",
                  "_ticketNumbers": "List of ticket numbers (indexes)"
                }
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": {
                "params": {
                  "_baseURI": "The base URI for the edition",
                  "_editionId": "The expected edition ID",
                  "_endTime": "The end time of the auction, in seconds since unix epoch.",
                  "_fundingRecipient": "The account that will receive sales revenue.",
                  "_permissionedQuantity": "The quantity of tokens that require a signature to buy.",
                  "_price": "The price at which each token will be sold, in ETH.",
                  "_quantity": "The maximum number of tokens that can be sold.",
                  "_royaltyBPS": "The royalty amount in bps.",
                  "_signerAddress": "signer address.",
                  "_startTime": "The start time of the auction, in seconds since unix epoch."
                }
              },
              "getApproved(uint256)": {
                "details": "See {IERC721-getApproved}."
              },
              "grantRole(bytes32,address)": {
                "params": {
                  "account": "The account to register",
                  "role": "The role to grant to the given account"
                }
              },
              "hasRole(bytes32,address)": {
                "params": {
                  "account": "The account to check",
                  "role": "The role to check"
                }
              },
              "initialize(address,string,string,string)": {
                "params": {
                  "_baseURI": "Default base URI for all editions",
                  "_name": "Name of artist",
                  "_owner": "Owner of edition",
                  "_symbol": "Symbol for the artist"
                }
              },
              "isApprovedForAll(address,address)": {
                "details": "See {IERC721-isApprovedForAll}."
              },
              "name()": {
                "details": "See {IERC721Metadata-name}."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "ownerOf(uint256)": {
                "details": "See {IERC721-ownerOf}."
              },
              "ownersOfTokenIds(uint256[])": {
                "params": {
                  "_tokenIds": "List of token ids"
                }
              },
              "revokeRole(bytes32,address)": {
                "params": {
                  "account": "The account to revoke the role from",
                  "role": "The role to revoke"
                }
              },
              "royaltyInfo(uint256,uint256)": {
                "params": {
                  "_salePrice": "Sale price for the token",
                  "_tokenId": "token id"
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "details": "See {IERC721-safeTransferFrom}."
              },
              "setApprovalForAll(address,bool)": {
                "details": "See {IERC721-setApprovalForAll}."
              },
              "setEditionBaseURI(uint256,string)": {
                "params": {
                  "_baseURI": "The new base URI",
                  "_editionId": "The target edition's id"
                }
              },
              "setEndTime(uint256,uint32)": {
                "params": {
                  "_editionId": "The id of the edition to set the end time for",
                  "_endTime": "The end time to set (in seconds since unix epoch)"
                }
              },
              "setOwnerOverride(address)": {
                "params": {
                  "_newOwner": "The new owner of the contract"
                }
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "params": {
                  "_editionId": "The edition id to set the permissioned quantity for",
                  "_permissionedQuantity": "The new permissiond quantity"
                }
              },
              "setSignerAddress(uint256,address)": {
                "params": {
                  "_editionId": "The edition id to set the signature address for",
                  "_newSignerAddress": "The address that will be used to sign purchases"
                }
              },
              "setStartTime(uint256,uint32)": {
                "params": {
                  "_editionId": "The id of the edition to set the start time for",
                  "_startTime": "The start time to set (in seconds since unix epoch)"
                }
              },
              "supportsInterface(bytes4)": {
                "details": "https://eips.ethereum.org/EIPS/eip-165",
                "params": {
                  "_interfaceId": "The interface id to check"
                }
              },
              "symbol()": {
                "details": "See {IERC721Metadata-symbol}."
              },
              "tokenToEdition(uint256)": {
                "params": {
                  "_tokenId": "token id"
                }
              },
              "tokenURI(uint256)": {
                "details": "Concatenate the baseURI and tokenId, to create URI."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC721-transferFrom}."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawFunds(uint256)": {
                "params": {
                  "_editionId": "The id of the edition to withdraw from"
                }
              }
            },
            "title": "Artist",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_12377": {
                  "entryPoint": null,
                  "id": 12377,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:264:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "143:119:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "153:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "165:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "176:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "161:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "161:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "153:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "195:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "206:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "188:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "188:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "188:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "233:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "244:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "229:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "229:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "249:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "222:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "222:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "222:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "115:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "123:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "134:4:46",
                            "type": ""
                          }
                        ],
                        "src": "14:248:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604080517fc49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e34656020820152469181019190915260600160408051601f19818403018152919052805160209091012060805260805161442f610083600039600081816104be0152612dcc015261442f6000f3fe6080604052600436106102885760003560e01c80636352211e1161015a578063a22cb465116100c1578063e1a3d5731161007a578063e1a3d57314610835578063e8a3d48514610862578063e985e9c514610877578063f2fde38b146108c0578063f71e54fb146108e0578063fbab9e04146108f357600080fd5b8063a22cb46514610768578063b88d4fde14610788578063bb314ca1146107a8578063c87b56dd146107c8578063d3bb0528146107e8578063d547741f1461081557600080fd5b80638da5cb5b116101135780638da5cb5b146106c85780638e116aea146106e657806391d1485414610706578063931c9b991461072657806395d89b411461073c5780639725d92e1461075157600080fd5b80636352211e1461060657806370a082311461062657806375a8f08f1461064657806375b238fc14610666578063796726921461068857806379b236d2146106a857600080fd5b80632a55205a116101fe5780635076a64d116101b75780635076a64d1461052c57806352e25bf21461055957806352f5c2e41461057957806356dee996146105a65780635f1e6f6d146105c6578063602787ed146105e657600080fd5b80632a55205a1461044d5780632f2ff15d1461048c5780633644e515146104ac5780633ef2dbc2146104e057806342842e0e146104f75780634bf440261461051757600080fd5b80630bcca831116102505780630bcca8311461036b578063155dd5ee1461038057806318160ddd146103a057806323b872dd146103c357806327399d36146103e3578063279c806e1461041757600080fd5b806301ffc9a71461028d578063065d5b85146102c257806306fdde03146102ef578063081812fc14610311578063095ea7b314610349575b600080fd5b34801561029957600080fd5b506102ad6102a836600461376b565b610913565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b506102e26102dd3660046137cc565b61093e565b6040516102b99190613817565b3480156102fb57600080fd5b50610304610a2a565b6040516102b991906138b5565b34801561031d57600080fd5b5061033161032c3660046138c8565b610abc565b6040516001600160a01b0390911681526020016102b9565b34801561035557600080fd5b506103696103643660046138f6565b610ae3565b005b34801561037757600080fd5b50610331610bfd565b34801561038c57600080fd5b5061036961039b3660046138c8565b610c7d565b3480156103ac57600080fd5b506103b5610cdd565b6040519081526020016102b9565b3480156103cf57600080fd5b506103696103de366004613922565b610d29565b3480156103ef57600080fd5b506103b57fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e881565b34801561042357600080fd5b506104376104323660046138c8565b610d5a565b6040516102b99a99989796959493929190613963565b34801561045957600080fd5b5061046d6104683660046139de565b610e5a565b604080516001600160a01b0390931683526020830191909152016102b9565b34801561049857600080fd5b506103696104a7366004613a00565b610ffc565b3480156104b857600080fd5b506103b57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ec57600080fd5b5060ca546103b59081565b34801561050357600080fd5b50610369610512366004613922565b6110ac565b34801561052357600080fd5b506103b56110c7565b34801561053857600080fd5b506103b56105473660046138c8565b60cd6020526000908152604090205481565b34801561056557600080fd5b50610369610574366004613a49565b6110e3565b34801561058557600080fd5b50610599610594366004613a75565b61121b565b6040516102b99190613ab6565b3480156105b257600080fd5b506103696105c1366004613a00565b6112d3565b3480156105d257600080fd5b506103696105e1366004613ba2565b6113f1565b3480156105f257600080fd5b506103b56106013660046138c8565b611544565b34801561061257600080fd5b506103316106213660046138c8565b611566565b34801561063257600080fd5b506103b5610641366004613c3c565b6115c6565b34801561065257600080fd5b50610369610661366004613c3c565b61164c565b34801561067257600080fd5b506103b56000805160206143da83398151915281565b34801561069457600080fd5b506103696106a3366004613c9a565b6116a5565b3480156106b457600080fd5b506103696106c33660046138c8565b60d155565b3480156106d457600080fd5b506097546001600160a01b0316610331565b3480156106f257600080fd5b50610369610701366004613cd8565b6117f0565b34801561071257600080fd5b506102ad610721366004613a00565b611c52565b34801561073257600080fd5b506103b560d15481565b34801561074857600080fd5b50610304611c7d565b34801561075d57600080fd5b5060cb546103b59081565b34801561077457600080fd5b50610369610783366004613da2565b611c8c565b34801561079457600080fd5b506103696107a3366004613dd5565b611c97565b3480156107b457600080fd5b506103696107c3366004613a49565b611ccf565b3480156107d457600080fd5b506103046107e33660046138c8565b611d97565b3480156107f457600080fd5b506103b56108033660046138c8565b60cf6020526000908152604090205481565b34801561082157600080fd5b50610369610830366004613a00565b611f21565b34801561084157600080fd5b506103b56108503660046138c8565b60ce6020526000908152604090205481565b34801561086e57600080fd5b50610304611fb2565b34801561088357600080fd5b506102ad610892366004613e48565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156108cc57600080fd5b506103696108db366004613c3c565b611fe0565b6103696108ee366004613e76565b61206f565b3480156108ff57600080fd5b5061036961090e366004613a49565b612442565b600063152a902d60e11b6001600160e01b031983161480610938575061093882612509565b92915050565b60606000826001600160401b0381111561095a5761095a613af7565b604051908082528060200260200182016040528015610983578160200160208202803683370190505b50905060005b83811015610a215760006109e3878787858181106109a9576109a9613ec8565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106109fe576109fe613ec8565b911515602092830291909101909101525080610a1981613ef4565b915050610989565b50949350505050565b606060658054610a3990613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6590613f0d565b8015610ab25780601f10610a8757610100808354040283529160200191610ab2565b820191906000526020600020905b815481529060010190602001808311610a9557829003601f168201915b5050505050905090565b6000610ac782612559565b506000908152606960205260409020546001600160a01b031690565b6000610aee82611566565b9050806001600160a01b0316836001600160a01b031603610b605760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b7c5750610b7c8133610892565b610bee5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610b57565b610bf883836125b8565b505050565b600046600103610c20575073858a92511485715cfb754f397a7894b7724c7abd90565b46600403610c41575073ee35e946dd73ef78d352454c3f915e2ca0a09d8790565b60405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b21031b430b4b760791b6044820152606401610b57565b600081815260cf602090815260408083205460ce909252822054610ca19190613f41565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610cd9906001600160a01b031682612626565b5050565b60008060015b60cb54811015610d2357600081815260cc6020526040902060020154610d0f9063ffffffff1683613f58565b915080610d1b81613ef4565b915050610ce3565b50919050565b610d333382612733565b610d4f5760405162461bcd60e51b8152600401610b5790613f70565b610bf88383836127b2565b60cc60205260009081526040902080546001820154600283015460038401546004850180546001600160a01b0395861696949563ffffffff808616966401000000008704821696600160401b8104831696600160601b8204841696600160801b8304851696600160a01b90930490941694169290610dd790613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0390613f0d565b8015610e505780601f10610e2557610100808354040283529160200191610e50565b820191906000526020600020905b815481529060010190602001808311610e3357829003601f168201915b505050505090508a565b6000806000610e6885611544565b600081815260cc6020908152604080832081516101408101835281546001600160a01b039081168252600183015494820194909452600282015463ffffffff80821694830194909452640100000000810484166060830152600160401b810484166080830152600160601b8104841660a0830152600160801b8104841660c0830152600160a01b900490921660e0830152600381015490921661010082015260048201805494955092939092610120840191610f2390613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4f90613f0d565b8015610f9c5780601f10610f7157610100808354040283529160200191610f9c565b820191906000526020600020905b815481529060010190602001808311610f7f57829003601f168201915b5050509190925250508151919250506001600160a01b0316610fc65751925060009150610ff59050565b6080810151815163ffffffff90911690612710610fe38389613fbe565b610fed9190613ff3565b945094505050505b9250929050565b6097546001600160a01b031633146110265760405162461bcd60e51b8152600401610b5790614007565b6110308282611c52565b610cd95760008281526098602090815260408083206001600160a01b03851684529091529020805460ff191660011790556110683390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610bf883838360405180602001604052806000815250611c97565b600060016110d460cb5490565b6110de9190613f41565b905090565b6000805160206143da8339815191526111046097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061112857506111288133611c52565b6111445760405162461bcd60e51b8152600401610b579061403c565b600083815260cc60205260409020600301546001600160a01b03166111ab5760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610b57565b600083815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8716908102919091179091558251868152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a1505050565b60606000826001600160401b0381111561123757611237613af7565b604051908082528060200260200182016040528015611260578160200160208202803683370190505b50905060005b838110156112cb5761128f85858381811061128357611283613ec8565b90506020020135611566565b8282815181106112a1576112a1613ec8565b6001600160a01b0390921660209283029190910190910152806112c381613ef4565b915050611266565b509392505050565b6000805160206143da8339815191526112f46097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061131857506113188133611c52565b6113345760405162461bcd60e51b8152600401610b579061403c565b6001600160a01b03821661138a5760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b57565b600083815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03861690811790915591518581527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a2505050565b600054610100900460ff16158080156114115750600054600160ff909116105b8061142b5750303b15801561142b575060005460ff166001145b61148e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b57565b6000805460ff1916600117905580156114b1576000805461ff0019166101001790555b6114bb848461294e565b6114c361297f565b6114cc85611fe0565b466001146114e95781516114e79060c990602085019061364c565b505b6114f760cb80546001019055565b801561153d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000608082901c808203610938575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806109385760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b57565b60006001600160a01b0382166116305760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b57565b506001600160a01b031660009081526068602052604090205490565b611654610bfd565b6001600160a01b0316336001600160a01b0316148061167d57506097546001600160a01b031633145b6116995760405162461bcd60e51b8152600401610b579061403c565b6116a2816129b8565b50565b6000805160206143da8339815191526116c66097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806116ea57506116ea8133611c52565b6117065760405162461bcd60e51b8152600401610b579061403c565b600084815260cc6020526040902060020154640100000000900463ffffffff161515806117505750600084815260cc6020526040902060020154600160a01b900463ffffffff1615155b6117925760405162461bcd60e51b81526020600482015260136024820152722737b732bc34b9ba32b73a1032b234ba34b7b760691b6044820152606401610b57565b600084815260cc602052604090206117ae9060040184846136cc565b507f1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd4125898484846040516117e293929190614062565b60405180910390a150505050565b6000805160206143da8339815191526118116097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061183557506118358133611c52565b6118515760405162461bcd60e51b8152600401610b579061403c565b60008963ffffffff161161189b5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610b57565b6001600160a01b038b166118f15760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610b57565b8663ffffffff168663ffffffff161161195d5760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610b57565b60cb5483146119a15760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c819591a5d1a5bdb88125160821b6044820152606401610b57565b63ffffffff851615611a03576001600160a01b038416611a035760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b57565b6040518061014001604052808c6001600160a01b031681526020018b8152602001600063ffffffff1681526020018a63ffffffff1681526020018963ffffffff1681526020018863ffffffff1681526020018763ffffffff1681526020018663ffffffff168152602001856001600160a01b031681526020018381525060cc6000611a8d60cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355858501516001840155928501516002830180546060880151608089015160a08a015160c08b015160e08c015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b939091169290920291909117905561010085015160038301805490941691161790915561012083015180519192611bb79260048501929091019061364c565b505060cb54604080516001600160a01b038f81168252602082018f905263ffffffff8e8116838501528d811660608401528c811660808401528b811660a08401528a1660c0830152881660e082015290519192507fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f391908190036101000190a2611c4560cb80546001019055565b5050505050505050505050565b60009182526098602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060668054610a3990613f0d565b610cd9338383612a0a565b611ca13383612733565b611cbd5760405162461bcd60e51b8152600401610b5790613f70565b611cc984848484612ad8565b50505050565b6000805160206143da833981519152611cf06097546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611d145750611d148133611c52565b611d305760405162461bcd60e51b8152600401610b579061403c565b600083815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff86169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c906113e49060019087906140ae565b6000818152606760205260409020546060906001600160a01b0316611e165760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b57565b6000611e2183611544565b600081815260cc6020526040812060040180549293509091611e4290613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6e90613f0d565b8015611ebb5780601f10611e9057610100808354040283529160200191611ebb565b820191906000526020600020905b815481529060010190602001808311611e9e57829003601f168201915b50505050509050600381511115611eff5780611ed685612b0b565b604051602001611ee79291906140f6565b60405160208183030381529060405292505050919050565b611f07612c0b565b611f1085612b0b565b604051602001611ee792919061413e565b6097546001600160a01b03163314611f4b5760405162461bcd60e51b8152600401610b5790614007565b611f558282611c52565b15610cd95760008281526098602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060611fbc612c0b565b604051602001611fcc919061416d565b604051602081830303815290604052905090565b6097546001600160a01b0316331461200a5760405162461bcd60e51b8152600401610b5790614007565b6001600160a01b0381166116995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b57565b600084815260cc60205260408120600180820154600290920154919263ffffffff640100000000840481169316916120a890839061419b565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166121285760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610b57565b8634101561218a5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610b57565b428263ffffffff16116121d35760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610b57565b428363ffffffff1611156122d5578063ffffffff168563ffffffff16106122625760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610b57565b60008b815260cc60205260409020600301546001600160a01b03166122898b8b8e8c612c62565b6001600160a01b0316146122d05760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610b57565b61233a565b8563ffffffff168563ffffffff161061233a5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610b57565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b176123796097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b039182169116036123c35760008c815260ce6020526040812080543492906123b8908490613f58565b909155506123e59050565b60008c815260cc60205260409020546123e5906001600160a01b031634612626565b6123ef3382612e62565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b6000805160206143da8339815191526124636097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061248757506124878133611c52565b6124a35760405162461bcd60e51b8152600401610b579061403c565b600083815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff871690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c916113e4919087906140ae565b60006001600160e01b031982166380ac58cd60e01b148061253a57506001600160e01b03198216635b5e139f60e01b145b8061093857506301ffc9a760e01b6001600160e01b0319831614610938565b6000818152606760205260409020546001600160a01b03166116a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b57565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125ed82611566565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156126765760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610b57565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b5050905080610bf85760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610b57565b60008061273f83611566565b9050806001600160a01b0316846001600160a01b0316148061278657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806127aa5750836001600160a01b031661279f84610abc565b6001600160a01b0316145b949350505050565b826001600160a01b03166127c582611566565b6001600160a01b0316146128295760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b57565b6001600160a01b03821661288b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b57565b6128966000826125b8565b6001600160a01b03831660009081526068602052604081208054600192906128bf908490613f41565b90915550506001600160a01b03821660009081526068602052604081208054600192906128ed908490613f58565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff166129755760405162461bcd60e51b8152600401610b57906141ba565b610cd98282612fa4565b600054610100900460ff166129a65760405162461bcd60e51b8152600401610b57906141ba565b6129ae612ff2565b6129b6613019565b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603612a6b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b57565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612ae38484846127b2565b612aef84848484613049565b611cc95760405162461bcd60e51b8152600401610b5790614205565b606081600003612b325750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612b5c5780612b4681613ef4565b9150612b559050600a83613ff3565b9150612b36565b6000816001600160401b03811115612b7657612b76613af7565b6040519080825280601f01601f191660200182016040528015612ba0576020820181803683370190505b5090505b84156127aa57612bb5600183613f41565b9150612bc2600a86614257565b612bcd906030613f58565b60f81b818381518110612be257612be2613ec8565b60200101906001600160f81b031916908160001a905350612c04600a86613ff3565b9450612ba4565b60606000612c1a306014613147565b905046600103612c4a5780604051602001612c35919061426b565b60405160208183030381529060405291505090565b60c981604051602001612c359291906142bb565b5090565b60006401000000008210612cb85760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d6178000000000000006044820152606401610b57565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c600116928315612d455760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b6064820152608401610b57565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e283015261010282015261012201604051602081830303815290604052805190602001209050612e548a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085939250506132e99050565b9a9950505050505050505050565b6001600160a01b038216612eb85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b57565b6000818152606760205260409020546001600160a01b031615612f1d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b57565b6001600160a01b0382166000908152606860205260408120805460019290612f46908490613f58565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16612fcb5760405162461bcd60e51b8152600401610b57906141ba565b8151612fde90606590602085019061364c565b508051610bf890606690602084019061364c565b600054610100900460ff166129b65760405162461bcd60e51b8152600401610b57906141ba565b600054610100900460ff166130405760405162461bcd60e51b8152600401610b57906141ba565b6129b6336129b8565b60006001600160a01b0384163b1561313f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061308d903390899088908890600401614368565b6020604051808303816000875af19250505080156130c8575060408051601f3d908101601f191682019092526130c5918101906143a5565b60015b613125573d8080156130f6576040519150601f19603f3d011682016040523d82523d6000602084013e6130fb565b606091505b50805160000361311d5760405162461bcd60e51b8152600401610b5790614205565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127aa565b5060016127aa565b60606000613156836002613fbe565b613161906002613f58565b6001600160401b0381111561317857613178613af7565b6040519080825280601f01601f1916602001820160405280156131a2576020820181803683370190505b509050600360fc1b816000815181106131bd576131bd613ec8565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131ec576131ec613ec8565b60200101906001600160f81b031916908160001a9053506000613210846002613fbe565b61321b906001613f58565b90505b6001811115613293576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061324f5761324f613ec8565b1a60f81b82828151811061326557613265613ec8565b60200101906001600160f81b031916908160001a90535060049490941c9361328c816143c2565b905061321e565b5083156132e25760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b57565b9392505050565b60008060006132f88585613305565b915091506112cb81613370565b600080825160410361333b5760208301516040840151606085015160001a61332f87828585613526565b94509450505050610ff5565b82516040036133645760208301516040840151613359868383613613565b935093505050610ff5565b50600090506002610ff5565b600081600481111561338457613384614098565b0361338c5750565b60018160048111156133a0576133a0614098565b036133ed5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b57565b600281600481111561340157613401614098565b0361344e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b57565b600381600481111561346257613462614098565b036134ba5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b57565b60048160048111156134ce576134ce614098565b036116a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b57565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561355d575060009050600361360a565b8460ff16601b1415801561357557508460ff16601c14155b15613586575060009050600461360a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156135da573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166136035760006001925092505061360a565b9150600090505b94509492505050565b6000806001600160ff1b0383168161363060ff86901c601b613f58565b905061363e87828885613526565b935093505050935093915050565b82805461365890613f0d565b90600052602060002090601f01602090048101928261367a57600085556136c0565b82601f1061369357805160ff19168380011785556136c0565b828001600101855582156136c0579182015b828111156136c05782518255916020019190600101906136a5565b50612c5e929150613740565b8280546136d890613f0d565b90600052602060002090601f0160209004810192826136fa57600085556136c0565b82601f106137135782800160ff198235161785556136c0565b828001600101855582156136c0579182015b828111156136c0578235825591602001919060010190613725565b5b80821115612c5e5760008155600101613741565b6001600160e01b0319811681146116a257600080fd5b60006020828403121561377d57600080fd5b81356132e281613755565b60008083601f84011261379a57600080fd5b5081356001600160401b038111156137b157600080fd5b6020830191508360208260051b8501011115610ff557600080fd5b6000806000604084860312156137e157600080fd5b8335925060208401356001600160401b038111156137fe57600080fd5b61380a86828701613788565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015613851578351151583529284019291840191600101613833565b50909695505050505050565b60005b83811015613878578181015183820152602001613860565b83811115611cc95750506000910152565b600081518084526138a181602086016020860161385d565b601f01601f19169290920160200192915050565b6020815260006132e26020830184613889565b6000602082840312156138da57600080fd5b5035919050565b6001600160a01b03811681146116a257600080fd5b6000806040838503121561390957600080fd5b8235613914816138e1565b946020939093013593505050565b60008060006060848603121561393757600080fd5b8335613942816138e1565b92506020840135613952816138e1565b929592945050506040919091013590565b6001600160a01b038b81168252602082018b905263ffffffff8a811660408401528981166060840152888116608084015287811660a084015286811660c0840152851660e0830152831661010082015261014061012082018190526000906139cd83820185613889565b9d9c50505050505050505050505050565b600080604083850312156139f157600080fd5b50508035926020909101359150565b60008060408385031215613a1357600080fd5b823591506020830135613a25816138e1565b809150509250929050565b803563ffffffff81168114613a4457600080fd5b919050565b60008060408385031215613a5c57600080fd5b82359150613a6c60208401613a30565b90509250929050565b60008060208385031215613a8857600080fd5b82356001600160401b03811115613a9e57600080fd5b613aaa85828601613788565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156138515783516001600160a01b031683529284019291840191600101613ad2565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115613b2757613b27613af7565b604051601f8501601f19908116603f01168101908282118183101715613b4f57613b4f613af7565b81604052809350858152868686011115613b6857600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613b9357600080fd5b6132e283833560208501613b0d565b60008060008060808587031215613bb857600080fd5b8435613bc3816138e1565b935060208501356001600160401b0380821115613bdf57600080fd5b613beb88838901613b82565b94506040870135915080821115613c0157600080fd5b613c0d88838901613b82565b93506060870135915080821115613c2357600080fd5b50613c3087828801613b82565b91505092959194509250565b600060208284031215613c4e57600080fd5b81356132e2816138e1565b60008083601f840112613c6b57600080fd5b5081356001600160401b03811115613c8257600080fd5b602083019150836020828501011115610ff557600080fd5b600080600060408486031215613caf57600080fd5b8335925060208401356001600160401b03811115613ccc57600080fd5b61380a86828701613c59565b6000806000806000806000806000806101408b8d031215613cf857600080fd5b8a35613d03816138e1565b995060208b01359850613d1860408c01613a30565b9750613d2660608c01613a30565b9650613d3460808c01613a30565b9550613d4260a08c01613a30565b9450613d5060c08c01613a30565b935060e08b0135613d60816138e1565b92506101008b013591506101208b01356001600160401b03811115613d8457600080fd5b613d908d828e01613b82565b9150509295989b9194979a5092959850565b60008060408385031215613db557600080fd5b8235613dc0816138e1565b915060208301358015158114613a2557600080fd5b60008060008060808587031215613deb57600080fd5b8435613df6816138e1565b93506020850135613e06816138e1565b92506040850135915060608501356001600160401b03811115613e2857600080fd5b8501601f81018713613e3957600080fd5b613c3087823560208401613b0d565b60008060408385031215613e5b57600080fd5b8235613e66816138e1565b91506020830135613a25816138e1565b60008060008060608587031215613e8c57600080fd5b8435935060208501356001600160401b03811115613ea957600080fd5b613eb587828801613c59565b9598909750949560400135949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f0657613f06613ede565b5060010190565b600181811c90821680613f2157607f821691505b602082108103610d2357634e487b7160e01b600052602260045260246000fd5b600082821015613f5357613f53613ede565b500390565b60008219821115613f6b57613f6b613ede565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615613fd857613fd8613ede565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261400257614002613fdd565b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052602160045260246000fd5b60408101600284106140d057634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600081516140ec81856020860161385d565b9290920192915050565b6000835161410881846020880161385d565b83519083019061411c81836020880161385d565b6d17b6b2ba30b230ba30973539b7b760911b9101908152600e01949350505050565b6000835161415081846020880161385d565b83519083019061416481836020880161385d565b01949350505050565b6000825161417f81846020870161385d565b691cdd1bdc99599c9bdb9d60b21b920191825250600a01919050565b600063ffffffff80831681851680830382111561416457614164613ede565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261426657614266613fdd565b500690565b7f68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f00008152600082516142a381601e85016020870161385d565b602f60f81b601e939091019283015250601f01919050565b600080845481600182811c9150808316806142d757607f831692505b602080841082036142f657634e487b7160e01b86526022600452602486fd5b81801561430a576001811461431b57614348565b60ff19861689528489019650614348565b60008b81526020902060005b868110156143405781548b820152908501908301614327565b505084890196505b50505061435584886140da565b602f60f81b815201979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061439b90830184613889565b9695505050505050565b6000602082840312156143b757600080fd5b81516132e281613755565b6000816143d1576143d1613ede565b50600019019056fedf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42a26469706673582212203077d09b1cd9a751bb99b4b84677d38fba0617306c1c0d6bf3df3182be7b4cd364736f6c634300080e0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xC49A8E302E3E5D6753B2BB3DBC3C28DEBA5E16E2572A92AEF568063C963E3465 PUSH1 0x20 DUP3 ADD MSTORE CHAINID SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x442F PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4BE ADD MSTORE PUSH2 0x2DCC ADD MSTORE PUSH2 0x442F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x288 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x15A JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x835 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x862 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x877 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C0 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x8E0 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x7A8 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x7C8 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x7E8 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0x8E116AEA EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x706 JUMPI DUP1 PUSH4 0x931C9B99 EQ PUSH2 0x726 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0x9725D92E EQ PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x606 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0x75A8F08F EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x666 JUMPI DUP1 PUSH4 0x79672692 EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0x79B236D2 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x5076A64D GT PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x5076A64D EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x559 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x579 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0x5F1E6F6D EQ PUSH2 0x5C6 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x44D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x3EF2DBC2 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4F7 JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCCA831 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0xBCCA831 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3C3 JUMPI DUP1 PUSH4 0x27399D36 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x349 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x376B JUMP JUMPDEST PUSH2 0x913 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH2 0x2DD CALLDATASIZE PUSH1 0x4 PUSH2 0x37CC JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x3817 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0xA2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x38B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x331 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x364 CALLDATASIZE PUSH1 0x4 PUSH2 0x38F6 JUMP JUMPDEST PUSH2 0xAE3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x331 PUSH2 0xBFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x39B CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0xC7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x3DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3922 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x437 PUSH2 0x432 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0xD5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46D PUSH2 0x468 CALLDATASIZE PUSH1 0x4 PUSH2 0x39DE JUMP JUMPDEST PUSH2 0xE5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x4A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0xFFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH2 0x3B5 SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x512 CALLDATASIZE PUSH1 0x4 PUSH2 0x3922 JUMP JUMPDEST PUSH2 0x10AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x10C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x547 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x574 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A49 JUMP JUMPDEST PUSH2 0x10E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x599 PUSH2 0x594 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A75 JUMP JUMPDEST PUSH2 0x121B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x3AB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x5C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0x12D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BA2 JUMP JUMPDEST PUSH2 0x13F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x601 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0x1544 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x331 PUSH2 0x621 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0x1566 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x641 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C3C JUMP JUMPDEST PUSH2 0x15C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x661 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C3C JUMP JUMPDEST PUSH2 0x164C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x6A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C9A JUMP JUMPDEST PUSH2 0x16A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x6C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xD1 SSTORE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x331 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x701 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CD8 JUMP JUMPDEST PUSH2 0x17F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD PUSH2 0x721 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0x1C52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH1 0xD1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x1C7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCB SLOAD PUSH2 0x3B5 SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA2 JUMP JUMPDEST PUSH2 0x1C8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x7A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DD5 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x7C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A49 JUMP JUMPDEST PUSH2 0x1CCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x7E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0x1D97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x803 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x830 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0x1F21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x850 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x1FB2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD PUSH2 0x892 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x8DB CALLDATASIZE PUSH1 0x4 PUSH2 0x3C3C JUMP JUMPDEST PUSH2 0x1FE0 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x8EE CALLDATASIZE PUSH1 0x4 PUSH2 0x3E76 JUMP JUMPDEST PUSH2 0x206F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x90E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A49 JUMP JUMPDEST PUSH2 0x2442 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x938 JUMPI POP PUSH2 0x938 DUP3 PUSH2 0x2509 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x95A JUMPI PUSH2 0x95A PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x983 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA21 JUMPI PUSH1 0x0 PUSH2 0x9E3 DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x9A9 JUMPI PUSH2 0x9A9 PUSH2 0x3EC8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9FE JUMPI PUSH2 0x9FE PUSH2 0x3EC8 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0xA19 DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x989 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0xA39 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA65 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAB2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA87 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA95 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC7 DUP3 PUSH2 0x2559 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAEE DUP3 PUSH2 0x1566 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0xB7C JUMPI POP PUSH2 0xB7C DUP2 CALLER PUSH2 0x892 JUMP JUMPDEST PUSH2 0xBEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH2 0xBF8 DUP4 DUP4 PUSH2 0x25B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH1 0x1 SUB PUSH2 0xC20 JUMPI POP PUSH20 0x858A92511485715CFB754F397A7894B7724C7ABD SWAP1 JUMP JUMPDEST CHAINID PUSH1 0x4 SUB PUSH2 0xC41 JUMPI POP PUSH20 0xEE35E946DD73EF78D352454C3F915E2CA0A09D87 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x3AB739BAB83837B93A32B21031B430B4B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xCA1 SWAP2 SWAP1 PUSH2 0x3F41 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xCD9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x2626 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xD23 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xD0F SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x3F58 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xD1B DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCE3 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD33 CALLER DUP3 PUSH2 0x2733 JUMP JUMPDEST PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x3F70 JUMP JUMPDEST PUSH2 0xBF8 DUP4 DUP4 DUP4 PUSH2 0x27B2 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP7 SWAP5 SWAP6 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH5 0x100000000 DUP8 DIV DUP3 AND SWAP7 PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND SWAP7 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP5 AND SWAP7 PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP6 AND SWAP7 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV SWAP1 SWAP5 AND SWAP5 AND SWAP3 SWAP1 PUSH2 0xDD7 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE03 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE50 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE25 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE50 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE33 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE68 DUP6 PUSH2 0x1544 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH5 0x100000000 DUP2 DIV DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP5 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP3 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD DUP1 SLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP1 SWAP3 PUSH2 0x120 DUP5 ADD SWAP2 PUSH2 0xF23 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF4F SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF9C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF71 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF9C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF7F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 SWAP1 SWAP3 MSTORE POP POP DUP2 MLOAD SWAP2 SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFC6 JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xFF5 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xFE3 DUP4 DUP10 PUSH2 0x3FBE JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x3FF3 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1026 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4007 JUMP JUMPDEST PUSH2 0x1030 DUP3 DUP3 PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1068 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0xBF8 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1C97 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x10D4 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x10DE SWAP2 SWAP1 PUSH2 0x3F41 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1104 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1128 JUMPI POP PUSH2 0x1128 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1144 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1260 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12CB JUMPI PUSH2 0x128F DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1283 JUMPI PUSH2 0x1283 PUSH2 0x3EC8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1566 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12A1 JUMPI PUSH2 0x12A1 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x12C3 DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1266 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x12F4 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1318 JUMPI POP PUSH2 0x1318 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1334 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x138A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP6 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1411 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x142B JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x148E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x14B1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x14BB DUP5 DUP5 PUSH2 0x294E JUMP JUMPDEST PUSH2 0x14C3 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x14CC DUP6 PUSH2 0x1FE0 JUMP JUMPDEST CHAINID PUSH1 0x1 EQ PUSH2 0x14E9 JUMPI DUP2 MLOAD PUSH2 0x14E7 SWAP1 PUSH1 0xC9 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST POP JUMPDEST PUSH2 0x14F7 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x153D JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x938 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1630 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1654 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x167D JUMPI POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1699 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH2 0x16A2 DUP2 PUSH2 0x29B8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x16C6 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x16EA JUMPI POP PUSH2 0x16EA DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1706 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x1750 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x1792 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x2737B732BC34B9BA32B73A1032B234BA34B7B7 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x17AE SWAP1 PUSH1 0x4 ADD DUP5 DUP5 PUSH2 0x36CC JUMP JUMPDEST POP PUSH32 0x1A7FCE8987747A468A9FD9D320891F1519376DAB1BAEB8E72E8D4447FD412589 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x17E2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1811 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1835 JUMPI POP PUSH2 0x1835 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1851 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH4 0xFFFFFFFF AND GT PUSH2 0x189B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH2 0x18F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST DUP7 PUSH4 0xFFFFFFFF AND DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x195D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0xCB SLOAD DUP4 EQ PUSH2 0x19A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x15DC9BDB99C819591A5D1A5BDB881251 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND ISZERO PUSH2 0x1A03 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1A03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x1A8D PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0xC0 DUP12 ADD MLOAD PUSH1 0xE0 DUP13 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP1 MLOAD SWAP2 SWAP3 PUSH2 0x1BB7 SWAP3 PUSH1 0x4 DUP6 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST POP POP PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP15 DUP2 AND DUP4 DUP6 ADD MSTORE DUP14 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP13 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP12 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP11 AND PUSH1 0xC0 DUP4 ADD MSTORE DUP9 AND PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 LOG2 PUSH2 0x1C45 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0xA39 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST PUSH2 0xCD9 CALLER DUP4 DUP4 PUSH2 0x2A0A JUMP JUMPDEST PUSH2 0x1CA1 CALLER DUP4 PUSH2 0x2733 JUMP JUMPDEST PUSH2 0x1CBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x3F70 JUMP JUMPDEST PUSH2 0x1CC9 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2AD8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1CF0 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1D14 JUMPI POP PUSH2 0x1D14 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1D30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x13E4 SWAP1 PUSH1 0x1 SWAP1 DUP8 SWAP1 PUSH2 0x40AE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E16 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E21 DUP4 PUSH2 0x1544 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x1E42 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E6E SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1EBB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E90 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1EBB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E9E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x3 DUP2 MLOAD GT ISZERO PUSH2 0x1EFF JUMPI DUP1 PUSH2 0x1ED6 DUP6 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EE7 SWAP3 SWAP2 SWAP1 PUSH2 0x40F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F07 PUSH2 0x2C0B JUMP JUMPDEST PUSH2 0x1F10 DUP6 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EE7 SWAP3 SWAP2 SWAP1 PUSH2 0x413E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1F4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4007 JUMP JUMPDEST PUSH2 0x1F55 DUP3 DUP3 PUSH2 0x1C52 JUMP JUMPDEST ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FBC PUSH2 0x2C0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1FCC SWAP2 SWAP1 PUSH2 0x416D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x200A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1699 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x20A8 SWAP1 DUP4 SWAP1 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x2128 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x218A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x21D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x22D5 JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x2262 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2289 DUP12 DUP12 DUP15 DUP13 PUSH2 0x2C62 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x22D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH2 0x233A JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x233A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x2379 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x23C3 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x23B8 SWAP1 DUP5 SWAP1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x23E5 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x23E5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x23EF CALLER DUP3 PUSH2 0x2E62 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2463 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2487 JUMPI POP PUSH2 0x2487 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x24A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x13E4 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0x40AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x253A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x938 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x938 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x25ED DUP3 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2676 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26C3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26C8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x273F DUP4 PUSH2 0x1566 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2786 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x27AA JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x279F DUP5 PUSH2 0xABC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C5 DUP3 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2829 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x288B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH2 0x2896 PUSH1 0x0 DUP3 PUSH2 0x25B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28BF SWAP1 DUP5 SWAP1 PUSH2 0x3F41 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28ED SWAP1 DUP5 SWAP1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2975 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH2 0xCD9 DUP3 DUP3 PUSH2 0x2FA4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x29A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH2 0x29AE PUSH2 0x2FF2 JUMP JUMPDEST PUSH2 0x29B6 PUSH2 0x3019 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2AE3 DUP5 DUP5 DUP5 PUSH2 0x27B2 JUMP JUMPDEST PUSH2 0x2AEF DUP5 DUP5 DUP5 DUP5 PUSH2 0x3049 JUMP JUMPDEST PUSH2 0x1CC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4205 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2B32 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B5C JUMPI DUP1 PUSH2 0x2B46 DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B55 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x3FF3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B36 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B76 JUMPI PUSH2 0x2B76 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2BA0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x27AA JUMPI PUSH2 0x2BB5 PUSH1 0x1 DUP4 PUSH2 0x3F41 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BC2 PUSH1 0xA DUP7 PUSH2 0x4257 JUMP JUMPDEST PUSH2 0x2BCD SWAP1 PUSH1 0x30 PUSH2 0x3F58 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2BE2 JUMPI PUSH2 0x2BE2 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2C04 PUSH1 0xA DUP7 PUSH2 0x3FF3 JUMP JUMPDEST SWAP5 POP PUSH2 0x2BA4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2C1A ADDRESS PUSH1 0x14 PUSH2 0x3147 JUMP JUMPDEST SWAP1 POP CHAINID PUSH1 0x1 SUB PUSH2 0x2C4A JUMPI DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2C35 SWAP2 SWAP1 PUSH2 0x426B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0xC9 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2C35 SWAP3 SWAP2 SWAP1 PUSH2 0x42BB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2CB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x2D45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x2E54 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x32E9 SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2EB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2F1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2F46 SWAP1 DUP5 SWAP1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FCB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2FDE SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xBF8 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x29B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3040 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH2 0x29B6 CALLER PUSH2 0x29B8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x313F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x308D SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4368 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x30C8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x30C5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x43A5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3125 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x30F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x311D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4205 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x27AA JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x27AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3156 DUP4 PUSH1 0x2 PUSH2 0x3FBE JUMP JUMPDEST PUSH2 0x3161 SWAP1 PUSH1 0x2 PUSH2 0x3F58 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3178 JUMPI PUSH2 0x3178 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x31A2 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x31BD JUMPI PUSH2 0x31BD PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x31EC JUMPI PUSH2 0x31EC PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x3210 DUP5 PUSH1 0x2 PUSH2 0x3FBE JUMP JUMPDEST PUSH2 0x321B SWAP1 PUSH1 0x1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3293 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x324F JUMPI PUSH2 0x324F PUSH2 0x3EC8 JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3265 JUMPI PUSH2 0x3265 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x328C DUP2 PUSH2 0x43C2 JUMP JUMPDEST SWAP1 POP PUSH2 0x321E JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x32E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32F8 DUP6 DUP6 PUSH2 0x3305 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x12CB DUP2 PUSH2 0x3370 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x333B JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x332F DUP8 DUP3 DUP6 DUP6 PUSH2 0x3526 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xFF5 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x3364 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x3359 DUP7 DUP4 DUP4 PUSH2 0x3613 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xFF5 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xFF5 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3384 JUMPI PUSH2 0x3384 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x338C JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x33A0 JUMPI PUSH2 0x33A0 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x33ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3401 JUMPI PUSH2 0x3401 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x344E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3462 JUMPI PUSH2 0x3462 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x34BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x34CE JUMPI PUSH2 0x34CE PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x16A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x355D JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x360A JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3575 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x3586 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x360A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3603 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x360A JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x3630 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3F58 JUMP JUMPDEST SWAP1 POP PUSH2 0x363E DUP8 DUP3 DUP9 DUP6 PUSH2 0x3526 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x3658 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x367A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3693 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x36C0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36C0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36A5 JUMP JUMPDEST POP PUSH2 0x2C5E SWAP3 SWAP2 POP PUSH2 0x3740 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x36D8 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36FA JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3713 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x36C0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36C0 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3725 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2C5E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3741 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x16A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x377D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x32E2 DUP2 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x379A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x37E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x380A DUP7 DUP3 DUP8 ADD PUSH2 0x3788 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3851 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3833 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3878 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3860 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1CC9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x38A1 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x385D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x32E2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3889 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x16A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3914 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3942 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3952 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP11 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE DUP10 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP9 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP8 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0xC0 DUP5 ADD MSTORE DUP6 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP4 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x39CD DUP4 DUP3 ADD DUP6 PUSH2 0x3889 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3A25 DUP2 PUSH2 0x38E1 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3A44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3A6C PUSH1 0x20 DUP5 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3AAA DUP6 DUP3 DUP7 ADD PUSH2 0x3788 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3851 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3AD2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x3B27 JUMPI PUSH2 0x3B27 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3B4F JUMPI PUSH2 0x3B4F PUSH2 0x3AF7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x3B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32E2 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3BB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3BC3 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3BDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BEB DUP9 DUP4 DUP10 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C0D DUP9 DUP4 DUP10 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3C23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C30 DUP8 DUP3 DUP9 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x32E2 DUP2 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x380A DUP7 DUP3 DUP8 ADD PUSH2 0x3C59 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x3CF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x3D03 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x3D18 PUSH1 0x40 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP8 POP PUSH2 0x3D26 PUSH1 0x60 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP7 POP PUSH2 0x3D34 PUSH1 0x80 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP6 POP PUSH2 0x3D42 PUSH1 0xA0 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP5 POP PUSH2 0x3D50 PUSH1 0xC0 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP4 POP PUSH1 0xE0 DUP12 ADD CALLDATALOAD PUSH2 0x3D60 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3D84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D90 DUP14 DUP3 DUP15 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DC0 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3A25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3DEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3DF6 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3E06 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3E28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x3E39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C30 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E66 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3A25 DUP2 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3EA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EB5 DUP8 DUP3 DUP9 ADD PUSH2 0x3C59 JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3F06 JUMPI PUSH2 0x3F06 PUSH2 0x3EDE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3F21 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xD23 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3F53 JUMPI PUSH2 0x3F53 PUSH2 0x3EDE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F6B JUMPI PUSH2 0x3F6B PUSH2 0x3EDE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3FD8 JUMPI PUSH2 0x3FD8 PUSH2 0x3EDE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4002 JUMPI PUSH2 0x4002 PUSH2 0x3FDD JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x40D0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH2 0x40EC DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x385D JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4108 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x411C DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST PUSH14 0x17B6B2BA30B230BA30973539B7B7 PUSH1 0x91 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0xE ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4150 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4164 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x417F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x385D JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0xA ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4164 JUMPI PUSH2 0x4164 PUSH2 0x3EDE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4266 JUMPI PUSH2 0x4266 PUSH2 0x3FDD JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x68747470733A2F2F6D657461646174612E736F756E642E78797A2F76312F0000 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x42A3 DUP2 PUSH1 0x1E DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x385D JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL PUSH1 0x1E SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x1F ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x42D7 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x42F6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP7 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP7 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x430A JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x431B JUMPI PUSH2 0x4348 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x4348 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x4340 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x4327 JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP PUSH2 0x4355 DUP5 DUP9 PUSH2 0x40DA JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL DUP2 MSTORE ADD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x439B SWAP1 DUP4 ADD DUP5 PUSH2 0x3889 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x32E2 DUP2 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x43D1 JUMPI PUSH2 0x43D1 PUSH2 0x3EDE JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP INVALID 0xDF DUP12 0x4C MSTORE 0xF INVALID NOT PUSH29 0x5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42A264697066 PUSH20 0x582212203077D09B1CD9A751BB99B4B84677D38F 0xBA MOD OR ADDRESS PUSH13 0x1C0D6BF3DF3182BE7B4CD36473 PUSH16 0x6C634300080E00330000000000000000 ",
              "sourceMap": "2224:22469:44:-:0;;;5920:130;;;;;;;;;-1:-1:-1;5973:69:44;;;5984:42;5973:69;;;188:25:46;6028:13:44;229:18:46;;;222:34;;;;161:18;;5973:69:44;;;-1:-1:-1;;5973:69:44;;;;;;;;;5963:80;;5973:69;5963:80;;;;5944:99;;2224:22469;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@ADMIN_ROLE_11699": {
                  "entryPoint": null,
                  "id": 11699,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@DOMAIN_SEPARATOR_12236": {
                  "entryPoint": null,
                  "id": 12236,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@PERMISSIONED_SALE_TYPEHASH_12234": {
                  "entryPoint": null,
                  "id": 12234,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__AccessManager_init_11742": {
                  "entryPoint": 10623,
                  "id": 11742,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__AccessManager_init_unchained_11753": {
                  "entryPoint": 12313,
                  "id": 11753,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__Context_init_unchained_2140": {
                  "entryPoint": 12274,
                  "id": 2140,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__ERC721_init_891": {
                  "entryPoint": 10574,
                  "id": 891,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@__ERC721_init_unchained_909": {
                  "entryPoint": 12196,
                  "id": 909,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_1712": {
                  "entryPoint": null,
                  "id": 1712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1582": {
                  "entryPoint": 9656,
                  "id": 1582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1701": {
                  "entryPoint": null,
                  "id": 1701,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_checkOnERC721Received_1690": {
                  "entryPoint": 12361,
                  "id": 1690,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_contractBaseURI_13536": {
                  "entryPoint": 11275,
                  "id": 13536,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_exists_1279": {
                  "entryPoint": null,
                  "id": 1279,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getBitForTicketNumber_13490": {
                  "entryPoint": null,
                  "id": 13490,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "@_isApprovedOrOwner_1313": {
                  "entryPoint": 10035,
                  "id": 1313,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_1423": {
                  "entryPoint": 11874,
                  "id": 1423,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_2149": {
                  "entryPoint": null,
                  "id": 2149,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_requireMinted_1628": {
                  "entryPoint": 9561,
                  "id": 1628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_safeTransfer_1261": {
                  "entryPoint": 10968,
                  "id": 1261,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_sendFunds_13335": {
                  "entryPoint": 9766,
                  "id": 13335,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setApprovalForAll_1614": {
                  "entryPoint": 10762,
                  "id": 1614,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_throwError_4335": {
                  "entryPoint": 13168,
                  "id": 4335,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_tokenToEdition_12253": {
                  "entryPoint": null,
                  "id": 12253,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_transferOwnership_11819": {
                  "entryPoint": 10680,
                  "id": 11819,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_1558": {
                  "entryPoint": 10162,
                  "id": 1558,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_1103": {
                  "entryPoint": 2787,
                  "id": 1103,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@atEditionId_12244": {
                  "entryPoint": null,
                  "id": 12244,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@atTokenId_12241": {
                  "entryPoint": null,
                  "id": 12241,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@balanceOf_964": {
                  "entryPoint": 5574,
                  "id": 964,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@buyEdition_12711": {
                  "entryPoint": 8303,
                  "id": 12711,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@checkTicketNumbers_13273": {
                  "entryPoint": 2366,
                  "id": 13273,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@contractURI_13012": {
                  "entryPoint": 8114,
                  "id": 13012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@createEdition_12533": {
                  "entryPoint": 6128,
                  "id": 12533,
                  "parameterSlots": 10,
                  "returnSlots": 0
                },
                "@current_2182": {
                  "entryPoint": null,
                  "id": 2182,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@depositedForEdition_12257": {
                  "entryPoint": null,
                  "id": 12257,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@editionCount_13142": {
                  "entryPoint": 4295,
                  "id": 13142,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@editions_12249": {
                  "entryPoint": 3418,
                  "id": 12249,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_1121": {
                  "entryPoint": 2748,
                  "id": 1121,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSigner_13422": {
                  "entryPoint": 11362,
                  "id": 13422,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@grantRole_11852": {
                  "entryPoint": 4092,
                  "id": 11852,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@hasRole_11901": {
                  "entryPoint": 7250,
                  "id": 11901,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increment_2196": {
                  "entryPoint": null,
                  "id": 2196,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@initialize_12419": {
                  "entryPoint": 5105,
                  "id": 12419,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@isApprovedForAll_1156": {
                  "entryPoint": null,
                  "id": 1156,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isContract_1897": {
                  "entryPoint": null,
                  "id": 1897,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@name_1002": {
                  "entryPoint": 2602,
                  "id": 1002,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownerOf_992": {
                  "entryPoint": 5478,
                  "id": 992,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_11762": {
                  "entryPoint": null,
                  "id": 11762,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ownersOfTokenIds_13216": {
                  "entryPoint": 4635,
                  "id": 13216,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@recover_4427": {
                  "entryPoint": 13033,
                  "id": 4427,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@revokeRole_11884": {
                  "entryPoint": 7969,
                  "id": 11884,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@royaltyInfo_13071": {
                  "entryPoint": 3674,
                  "id": 13071,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@safeTransferFrom_1202": {
                  "entryPoint": 4268,
                  "id": 1202,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_1232": {
                  "entryPoint": 7319,
                  "id": 1232,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_1138": {
                  "entryPoint": 7308,
                  "id": 1138,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setEditionBaseURI_12936": {
                  "entryPoint": 5797,
                  "id": 12936,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@setEndTime_12796": {
                  "entryPoint": 7375,
                  "id": 12796,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setOwnerOverride_12895": {
                  "entryPoint": 5708,
                  "id": 12895,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setPermissionedQuantity_12867": {
                  "entryPoint": 4323,
                  "id": 12867,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSignerAddress_12830": {
                  "entryPoint": 4819,
                  "id": 12830,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSomeNumber_13546": {
                  "entryPoint": null,
                  "id": 13546,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setStartTime_12770": {
                  "entryPoint": 9282,
                  "id": 12770,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@someNumber_12269": {
                  "entryPoint": null,
                  "id": 12269,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@soundRecoveryAddress_13301": {
                  "entryPoint": 3069,
                  "id": 13301,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@supportsInterface_13129": {
                  "entryPoint": 2323,
                  "id": 13129,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_2969": {
                  "entryPoint": null,
                  "id": 2969,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@supportsInterface_940": {
                  "entryPoint": 9481,
                  "id": 940,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_1012": {
                  "entryPoint": 7293,
                  "id": 1012,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toHexString_4250": {
                  "entryPoint": 12615,
                  "id": 4250,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@toString_4133": {
                  "entryPoint": 11019,
                  "id": 4133,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenToEdition_13168": {
                  "entryPoint": 5444,
                  "id": 13168,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@tokenURI_12997": {
                  "entryPoint": 7575,
                  "id": 12997,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalSupply_13105": {
                  "entryPoint": 3293,
                  "id": 13105,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_1183": {
                  "entryPoint": 3369,
                  "id": 1183,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transferOwnership_11799": {
                  "entryPoint": 8160,
                  "id": 11799,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@tryRecover_4400": {
                  "entryPoint": 13061,
                  "id": 4400,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@tryRecover_4474": {
                  "entryPoint": 13843,
                  "id": 4474,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@tryRecover_4585": {
                  "entryPoint": 13606,
                  "id": 4585,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@withdrawFunds_12744": {
                  "entryPoint": 3197,
                  "id": 12744,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@withdrawnForEdition_12261": {
                  "entryPoint": null,
                  "id": 12261,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_array_uint256_dyn_calldata": {
                  "entryPoint": 14216,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_available_length_string": {
                  "entryPoint": 15117,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_string": {
                  "entryPoint": 15234,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_string_calldata": {
                  "entryPoint": 15449,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 15420,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr": {
                  "entryPoint": 15576,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 10
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 15944,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 14626,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 15829,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 15778,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr": {
                  "entryPoint": 15266,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 14582,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 14965,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 14848,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 14187,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 17317,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 14536,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 14284,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256": {
                  "entryPoint": 15990,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_string_calldata_ptr": {
                  "entryPoint": 15514,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 14814,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint32": {
                  "entryPoint": 14921,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint32": {
                  "entryPoint": 14896,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 16602,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_memory_ptr": {
                  "entryPoint": 14473,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_fba9": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16702,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16630,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 16749,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 17083,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 17003,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14691,
                  "id": null,
                  "parameterSlots": 11,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 17256,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 15030,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14359,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_enum$_TimeType_$12300_t_uint256__to_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": 16558,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14517,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16901,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16444,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16391,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16826,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16240,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16482,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 16216,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint32": {
                  "entryPoint": 16795,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 16371,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 16318,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 16193,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 14429,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "decrement_t_uint256": {
                  "entryPoint": 17346,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 16141,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 16116,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 16983,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 16094,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 16349,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 16536,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 16072,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 15095,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 14561,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 14165,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:40504:46",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:46",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:46",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:46",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:46"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:46"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:46",
                            "type": ""
                          }
                        ],
                        "src": "14:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:46",
                            "type": ""
                          }
                        ],
                        "src": "150:245:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:46",
                            "type": ""
                          }
                        ],
                        "src": "400:187:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "676:283:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "725:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "734:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "737:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "727:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "727:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "727:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "704:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "712:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "700:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "700:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "696:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "696:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "689:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "689:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "686:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "750:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "773:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "760:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "760:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "823:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "832:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "835:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "825:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "825:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "825:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "795:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "803:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "789:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "864:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "872:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "860:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "946:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "949:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "900:6:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "912:1:46",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "915:6:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "908:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "908:14:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "896:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "896:27:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "925:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "892:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "892:38:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "932:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "889:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "889:47:46"
                              },
                              "nodeType": "YulIf",
                              "src": "886:67:46"
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint256_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "639:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "647:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "655:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "665:6:46",
                            "type": ""
                          }
                        ],
                        "src": "592:367:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1086:383:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1132:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1141:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1144:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1134:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1134:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1134:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1116:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1103:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1103:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1128:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1099:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1099:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1096:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1157:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1180:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1167:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1167:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1157:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1199:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1230:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1241:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1226:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1226:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1213:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1213:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1203:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1288:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1297:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1300:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1290:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1290:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1290:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1260:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1268:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1257:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "1254:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1313:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1392:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1377:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1377:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1401:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1339:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1339:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1317:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1327:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1418:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "1428:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1418:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1445:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "1455:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1036:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1047:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1059:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1067:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1075:6:46",
                            "type": ""
                          }
                        ],
                        "src": "964:505:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1619:497:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1629:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1639:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1633:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1650:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1668:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1679:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1664:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1664:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1654:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1709:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1691:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1691:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1691:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1721:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "1732:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "1725:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1747:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1767:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1761:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1761:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1751:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1790:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1798:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1783:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1783:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1783:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1814:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1825:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1836:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1821:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1821:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1814:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1848:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1866:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1874:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1862:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1862:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1852:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1886:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1895:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1890:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:136:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "1975:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "srcPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2000:6:46"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1994:5:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1994:13:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "1987:6:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1987:21:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "1980:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1980:29:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1968:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1968:42:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1968:42:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2023:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2034:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2030:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2030:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2023:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2055:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2069:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2077:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2065:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2065:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2055:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1916:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1919:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1913:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1913:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1927:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1929:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1938:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1941:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1934:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1934:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1909:3:46",
                                "statements": []
                              },
                              "src": "1905:185:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2099:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "2107:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2099:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1588:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1599:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1610:4:46",
                            "type": ""
                          }
                        ],
                        "src": "1474:642:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2174:205:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2184:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2193:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2188:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2253:63:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2278:3:46"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2283:1:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2274:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2274:11:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2297:3:46"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2302:1:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2293:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2293:11:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2287:5:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2287:18:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2267:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2267:39:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2267:39:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2214:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2217:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2211:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2211:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2225:19:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2227:15:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2236:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2239:2:46",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2232:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2232:10:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2227:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2207:3:46",
                                "statements": []
                              },
                              "src": "2203:113:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2342:31:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "2355:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "2360:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2351:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2351:16:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2369:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2344:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2344:27:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2344:27:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2331:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2334:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2328:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2328:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2325:48:46"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "2152:3:46",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "2157:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2162:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2121:258:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2445:208:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2455:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2475:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2469:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2469:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2459:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2497:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2502:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2490:19:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2490:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2544:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2551:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2540:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2540:16:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2562:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2567:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2558:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2558:14:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2574:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2518:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2518:63:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2518:63:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2590:57:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2605:3:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2618:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2626:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2614:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2614:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2635:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2631:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2631:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2610:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2610:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2601:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2601:39:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2642:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2597:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2597:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2590:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2422:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2429:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2437:3:46",
                            "type": ""
                          }
                        ],
                        "src": "2384:269:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2779:110:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2796:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2807:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2789:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2789:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2789:21:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2819:64:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2856:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2868:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2879:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2864:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2864:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2827:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2827:56:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2819:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2748:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2759:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2770:4:46",
                            "type": ""
                          }
                        ],
                        "src": "2658:231:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2964:110:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3010:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3019:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3022:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3012:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3012:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3012:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2985:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2994:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2981:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2981:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3006:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2977:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2977:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "2974:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3035:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3058:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3045:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3045:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3035:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2930:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2941:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2953:6:46",
                            "type": ""
                          }
                        ],
                        "src": "2894:180:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3180:102:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3190:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3202:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3213:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3198:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3198:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3190:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3232:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3247:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3263:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3268:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3259:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3259:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3272:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3255:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3255:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3243:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3243:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3225:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3225:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3225:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3149:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3160:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3171:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3079:203:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3332:86:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3396:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3405:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3408:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3398:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3398:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3398:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3355:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3366:5:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3381:3:46",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3386:1:46",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3377:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3377:11:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3390:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "3373:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3373:19:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3362:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3362:31:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3352:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3352:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3345:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3345:50:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3342:70:46"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3321:5:46",
                            "type": ""
                          }
                        ],
                        "src": "3287:131:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3510:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3556:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3565:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3568:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3558:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3558:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3558:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3531:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3540:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3527:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3527:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3552:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3523:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3523:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "3520:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3581:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3607:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3594:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3594:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3585:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3651:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3626:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3626:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3626:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3666:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3676:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3690:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3717:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3728:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3713:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3713:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3700:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3700:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3690:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3468:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3479:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3491:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3499:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3423:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3844:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3854:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3866:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3877:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3862:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3862:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3854:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3896:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3907:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3889:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3889:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3889:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3813:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3824:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3835:4:46",
                            "type": ""
                          }
                        ],
                        "src": "3743:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4029:352:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4075:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4084:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4087:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4077:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4077:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4077:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4050:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4059:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4046:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4046:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4071:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4042:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4042:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "4039:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4100:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4126:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4113:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4113:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4104:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4170:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4145:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4145:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4185:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4195:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4185:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4209:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4241:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4252:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4237:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4237:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4224:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4224:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4213:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4290:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4265:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4265:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4265:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4307:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4317:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4307:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4333:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4360:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4371:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4356:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4356:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4343:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4343:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4333:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3979:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3990:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4002:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4010:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4018:6:46",
                            "type": ""
                          }
                        ],
                        "src": "3925:456:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4487:76:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4497:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4509:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4520:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4505:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4505:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4497:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4539:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4550:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4532:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4532:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4532:25:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4456:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4467:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4478:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4386:177:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4945:664:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4955:13:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4965:3:46",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4959:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4977:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4995:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5000:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4991:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4991:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5004:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4987:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4987:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4981:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5022:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5037:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5045:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5033:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5033:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5015:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5015:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5015:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5069:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5080:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5065:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5065:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5085:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5058:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5058:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5058:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5101:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5111:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5105:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5141:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5152:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5137:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5137:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5161:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5169:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5157:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5157:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5130:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5130:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5130:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5193:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5204:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5189:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5189:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5213:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5221:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5209:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5209:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5182:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5182:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5182:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5245:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5256:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5241:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5241:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "5266:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5274:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5262:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5262:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5234:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5234:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5234:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5298:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5309:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5294:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "5319:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5327:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5315:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5315:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5287:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5287:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5287:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5351:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5362:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5372:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5380:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5368:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5368:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5340:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5404:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5415:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5400:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5400:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5425:6:46"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5433:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5421:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5421:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5393:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5393:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5393:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5457:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5468:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5453:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5453:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "5478:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5486:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5474:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5474:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5446:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5446:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5446:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5510:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5521:3:46",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5506:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5506:19:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5527:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5499:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5499:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5499:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5539:64:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value9",
                                    "nodeType": "YulIdentifier",
                                    "src": "5576:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5588:9:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5599:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5584:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5584:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5547:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5547:56:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5539:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4842:9:46",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "4853:6:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "4861:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "4869:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4877:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4885:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4893:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4901:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4909:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4917:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4925:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4936:4:46",
                            "type": ""
                          }
                        ],
                        "src": "4568:1041:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5701:161:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5747:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5756:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5759:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5749:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5749:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5749:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5722:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5731:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5718:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5718:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5743:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5714:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5714:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "5711:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5772:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5795:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5782:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5782:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5772:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5814:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5841:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5852:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5837:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5837:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5824:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5824:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5814:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5659:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5670:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5682:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5690:6:46",
                            "type": ""
                          }
                        ],
                        "src": "5614:248:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5996:145:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6006:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6018:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6029:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6014:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6014:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6006:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6048:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6063:6:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6079:3:46",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6084:1:46",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6075:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6075:11:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6088:1:46",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6071:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6071:19:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6059:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6059:32:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6041:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6041:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6041:51:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6112:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6123:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6108:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6108:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6128:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6101:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6101:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6101:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5957:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5968:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5976:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5987:4:46",
                            "type": ""
                          }
                        ],
                        "src": "5867:274:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6233:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6279:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6288:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6291:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6281:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6281:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6281:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6254:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6250:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6250:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6275:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6246:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6246:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6243:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6304:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6327:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6314:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6304:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6346:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6376:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6387:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6372:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6372:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6359:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6359:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6350:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6425:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6400:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6400:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6400:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6440:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6450:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6440:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6191:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6202:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6214:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6222:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6146:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6514:115:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6524:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6546:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6533:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6533:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "6524:5:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6607:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6616:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6619:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6609:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6609:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6609:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6575:5:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6586:5:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6593:10:46",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6582:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6582:22:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6572:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6572:33:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6565:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6565:41:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6562:61:46"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "6493:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6504:5:46",
                            "type": ""
                          }
                        ],
                        "src": "6466:163:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6720:166:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6766:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6775:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6778:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6768:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6768:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6768:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6741:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6750:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6737:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6762:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6733:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6733:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "6730:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6791:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6814:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6801:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6801:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6791:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6833:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6865:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6876:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6861:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6861:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "6843:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6843:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6833:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6678:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6689:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6701:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6709:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6634:252:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6996:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7042:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7051:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7054:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7044:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7044:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7044:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7017:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7026:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7013:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7013:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7038:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7009:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7009:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7006:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7067:37:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7094:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7081:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7081:23:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7071:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7147:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7156:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7159:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7149:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7149:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7149:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7119:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7127:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7116:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7116:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "7113:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7172:96:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7240:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7251:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7236:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7236:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7260:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint256_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7198:37:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7198:70:46"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7176:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7186:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7277:18:46",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "7287:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7277:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7304:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "7314:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7304:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6954:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6965:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6977:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6985:6:46",
                            "type": ""
                          }
                        ],
                        "src": "6891:437:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7484:507:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7494:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7504:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7498:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7515:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7533:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7544:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7529:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7529:18:46"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7519:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7563:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7574:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7556:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7556:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7556:21:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7586:17:46",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "7597:6:46"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "7590:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7612:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7632:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7626:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7626:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7616:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7655:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7663:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7648:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7648:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7648:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7679:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7690:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7701:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7686:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7686:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "7679:3:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7713:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7731:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7739:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7727:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7727:15:46"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7717:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7751:10:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7760:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7755:1:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7819:146:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7840:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7855:6:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "7849:5:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7849:13:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7872:3:46",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "7877:1:46",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7868:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7868:11:46"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "7881:1:46",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "7864:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7864:19:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "7845:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7845:39:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7833:52:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7833:52:46"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7898:19:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7909:3:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7914:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7905:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7905:12:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7898:3:46"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7930:25:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "7944:6:46"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7952:2:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7940:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7940:15:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7930:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7781:1:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7784:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7778:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7778:13:46"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7792:18:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7794:14:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7803:1:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7806:1:46",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7799:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7799:9:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7794:1:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7774:3:46",
                                "statements": []
                              },
                              "src": "7770:195:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7974:11:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "7982:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7974:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7453:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7464:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7475:4:46",
                            "type": ""
                          }
                        ],
                        "src": "7333:658:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8083:228:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8129:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8138:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8141:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8131:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8131:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8131:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8104:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8113:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8100:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8100:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8125:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8096:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8096:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8093:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8154:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8177:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8164:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8164:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8154:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8196:45:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8226:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8222:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8209:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8209:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8200:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8275:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8250:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8250:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8250:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8290:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8300:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8290:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8041:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8052:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8064:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8072:6:46",
                            "type": ""
                          }
                        ],
                        "src": "7996:315:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8348:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8365:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8372:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8377:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8368:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8368:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8358:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8358:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8358:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8405:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8408:4:46",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8398:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8398:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8429:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8432:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8422:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8422:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8422:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8316:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8523:557:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8533:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8543:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8537:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8588:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8590:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8590:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8590:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8576:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8584:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8573:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8573:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8570:40:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8619:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8633:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "8629:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8629:7:46"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8623:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8645:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8665:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8659:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8659:9:46"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8649:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8677:73:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8699:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8723:6:46"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8731:2:46",
                                                    "type": "",
                                                    "value": "31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8719:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8719:15:46"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "8736:2:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "8715:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8715:24:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8741:2:46",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8711:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8711:33:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8746:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8707:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8707:42:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8695:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8695:55:46"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8681:10:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8809:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8811:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8811:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8811:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8768:10:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8780:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8765:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8765:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8788:10:46"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8800:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8785:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8785:22:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "8762:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8762:46:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8759:72:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8847:2:46",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8851:10:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8840:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8840:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8840:22:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8871:15:46",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "8880:6:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8871:5:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8902:6:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8910:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8895:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8895:22:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8895:22:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8955:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8964:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8967:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8957:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8957:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8957:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "8936:3:46"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "8941:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8932:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8932:16:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8950:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8929:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8929:25:46"
                              },
                              "nodeType": "YulIf",
                              "src": "8926:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8997:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9005:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8993:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8993:17:46"
                                  },
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9012:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9017:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8980:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8980:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8980:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "9048:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "9056:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9044:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9044:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9065:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9040:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9040:30:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9072:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9033:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9033:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9033:41:46"
                            }
                          ]
                        },
                        "name": "abi_decode_available_length_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "8492:3:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8497:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8505:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "8513:5:46",
                            "type": ""
                          }
                        ],
                        "src": "8448:632:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9138:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9187:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9196:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9199:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9189:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9189:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9189:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "9166:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9174:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9162:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9162:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9181:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9158:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9158:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9151:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9151:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9148:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9212:89:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9260:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9268:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9256:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9256:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9288:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "9275:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9275:20:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9297:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9221:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9221:80:46"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "9212:5:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "9112:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9120:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9128:5:46",
                            "type": ""
                          }
                        ],
                        "src": "9085:222:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9463:728:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9510:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9519:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9522:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9512:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9512:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9512:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9484:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9493:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9480:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9480:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9505:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9476:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9476:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9473:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9535:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9561:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9548:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9548:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9539:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9605:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9580:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9580:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9580:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9620:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9630:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9620:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9644:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9675:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9686:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9671:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9671:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9658:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9658:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9648:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9699:28:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9709:18:46",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9703:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9754:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9763:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9766:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9756:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9756:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9756:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9742:6:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9750:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9739:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9739:14:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9736:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9779:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9811:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9822:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9807:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9807:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9831:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9789:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9789:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9779:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9848:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9881:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9892:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9877:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9877:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9864:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9864:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9852:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9925:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9934:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9937:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9927:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9927:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9927:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9911:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9921:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9908:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9908:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "9905:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9950:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9982:9:46"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9993:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9978:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9978:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10004:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "9960:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9960:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9950:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10021:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10054:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10065:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10050:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10050:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10037:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10037:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10025:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10098:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10107:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10110:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10100:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10100:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10100:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10084:8:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10094:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10081:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10081:16:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10078:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10123:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10155:9:46"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10166:8:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10151:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10151:24:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10177:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "10133:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10133:52:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10123:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9405:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9416:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9428:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9436:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9444:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9452:6:46",
                            "type": ""
                          }
                        ],
                        "src": "9312:879:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10266:177:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10312:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10321:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10324:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10314:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10314:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10314:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10287:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10296:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10283:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10283:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10308:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10279:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10279:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10276:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10337:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10363:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10350:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10350:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10341:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10407:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10382:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10382:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10382:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10422:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10432:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10422:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10232:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10243:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10255:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10196:247:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10521:275:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10570:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10579:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10582:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10572:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10572:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10572:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10549:6:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10557:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10545:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10545:17:46"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "10564:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10541:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10541:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10534:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10531:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10595:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10618:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10605:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10605:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10595:6:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10668:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10677:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10680:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10670:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10670:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10670:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10640:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10648:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10637:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10637:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10634:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10693:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10709:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10717:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10705:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10705:17:46"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10693:8:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10774:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10783:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10786:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10776:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10776:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10776:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10745:6:46"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "10753:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10741:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10741:19:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10762:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10737:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10737:30:46"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "10769:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10734:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10734:39:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10731:59:46"
                            }
                          ]
                        },
                        "name": "abi_decode_string_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "10484:6:46",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10492:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "10500:8:46",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10510:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10448:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10908:372:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10954:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10963:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10966:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10956:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10956:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10956:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10929:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10938:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10925:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10925:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10950:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10921:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10921:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "10918:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10979:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11002:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10989:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10989:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11021:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11052:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11063:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11048:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11048:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11035:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11035:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11025:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11110:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11119:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11122:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11112:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11112:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11112:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11082:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11090:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11079:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11079:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11076:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11135:85:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11192:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11203:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11188:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11161:26:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11161:59:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11139:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11149:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11229:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "11239:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11256:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "11266:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11256:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10858:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10869:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10881:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10889:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10897:6:46",
                            "type": ""
                          }
                        ],
                        "src": "10801:479:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11521:873:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11568:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11577:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11580:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11570:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11570:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11570:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11542:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11551:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11538:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11538:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11563:3:46",
                                    "type": "",
                                    "value": "320"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11534:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11534:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "11531:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11593:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11619:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11606:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11606:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11597:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11663:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11638:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11638:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11638:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11678:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11688:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11678:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11702:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11729:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11740:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11725:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11725:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11712:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11712:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11702:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11753:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11785:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11796:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11781:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11781:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11763:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11763:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11753:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11809:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11841:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11852:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11837:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11837:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11819:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11819:37:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11809:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11865:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11897:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11908:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11893:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11893:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11875:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11875:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11865:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11922:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11954:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11965:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11950:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11950:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11932:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11932:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "11922:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11979:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12011:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12022:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12007:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12007:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11989:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11989:38:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "11979:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12036:48:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12068:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12079:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12064:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12064:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12051:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12051:33:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12040:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12118:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12093:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12093:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12093:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12135:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12145:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "12135:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12161:43:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12188:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12199:3:46",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12184:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12184:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12171:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12171:33:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "12161:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12213:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12244:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12255:3:46",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12240:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12240:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12227:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12227:33:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12217:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12303:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12312:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12315:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12305:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12305:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12305:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12275:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12283:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12272:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12272:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12269:50:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12328:60:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12360:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12371:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12356:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12356:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12380:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "12338:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12338:50:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value9",
                                  "nodeType": "YulIdentifier",
                                  "src": "12328:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11415:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11426:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11438:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11446:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11454:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11462:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11470:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11478:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "11486:6:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "11494:6:46",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "11502:6:46",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "11510:6:46",
                            "type": ""
                          }
                        ],
                        "src": "11285:1109:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12483:332:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12529:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12538:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12541:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12531:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12531:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12531:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12504:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12513:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12500:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12500:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12525:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12496:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12496:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12493:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12554:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12580:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12567:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12567:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12558:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12624:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12599:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12599:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12599:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12639:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12649:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12639:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12663:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12695:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12706:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12691:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12691:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12678:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12678:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12667:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12767:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12776:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12779:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12769:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12769:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12769:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12732:7:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "12755:7:46"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "12748:6:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12748:15:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "12741:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12741:23:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "12729:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12729:36:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12722:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12722:44:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12719:64:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12792:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12802:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12792:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12441:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12452:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12464:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12472:6:46",
                            "type": ""
                          }
                        ],
                        "src": "12399:416:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12950:665:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12997:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13006:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13009:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12999:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12999:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12999:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12971:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12980:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12967:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12967:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12992:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12963:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12963:33:46"
                              },
                              "nodeType": "YulIf",
                              "src": "12960:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13022:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13048:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13035:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13035:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13026:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13092:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13067:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13067:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13067:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13107:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13117:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13107:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13131:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13163:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13174:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13159:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13159:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13146:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13146:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13135:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13212:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13187:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13187:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13187:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13229:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13239:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13229:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13255:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13282:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13293:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13278:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13278:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13265:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13265:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "13255:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13306:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13337:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13348:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13333:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13333:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13320:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13320:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13310:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13395:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13404:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13407:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13397:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13397:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13397:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13367:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13375:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13364:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13364:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13361:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13420:32:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13434:9:46"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13445:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13430:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13430:22:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13424:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13500:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13509:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13512:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13502:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13502:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13502:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "13479:2:46"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13483:4:46",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13475:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13475:13:46"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13490:7:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13471:27:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13464:35:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13461:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13525:84:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13574:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13578:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13570:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13570:11:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13596:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13583:12:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13583:16:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13601:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_available_length_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "13535:34:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13535:74:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "13525:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12892:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12903:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12915:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12923:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12931:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12939:6:46",
                            "type": ""
                          }
                        ],
                        "src": "12820:795:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13707:301:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13753:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13762:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13765:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13755:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13755:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13755:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13728:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13737:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13724:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13724:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13749:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13720:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13720:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "13717:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13778:36:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13804:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13791:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13791:23:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13782:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13848:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13823:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13823:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13823:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13863:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13873:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13863:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13887:47:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13919:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13930:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13915:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13915:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13902:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13902:32:46"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13891:7:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13968:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13943:24:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13943:33:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13943:33:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13985:17:46",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13995:7:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13985:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13665:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13676:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13688:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13696:6:46",
                            "type": ""
                          }
                        ],
                        "src": "13620:388:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14136:423:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14182:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14191:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14194:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14184:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14184:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14184:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14157:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14166:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14153:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14153:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14178:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14149:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14149:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14146:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14207:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14230:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14217:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14217:23:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14207:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14249:46:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14280:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14291:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14276:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14276:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14263:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14263:32:46"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "14253:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14338:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14347:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14350:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14340:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14340:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14340:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "14310:6:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14318:18:46",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14307:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14307:30:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14304:50:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14363:85:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14420:9:46"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "14431:6:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14416:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14416:22:46"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14440:7:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "14389:26:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14389:59:46"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14367:8:46",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14377:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14457:18:46",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "14467:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14457:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14484:18:46",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "14494:8:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "14484:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14511:42:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14538:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14549:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14534:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14534:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14521:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14521:32:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "14511:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14078:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14089:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14101:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14109:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14117:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14125:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14013:546:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14596:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14613:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14620:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14625:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14616:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14616:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14606:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14606:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14606:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14653:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14656:4:46",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14646:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14646:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14646:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14677:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14680:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14670:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14670:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14670:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14564:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14728:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14745:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14752:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14757:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14748:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14748:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14738:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14738:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14738:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14785:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14788:4:46",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14778:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14778:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14778:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14809:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14812:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14802:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14802:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14802:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14696:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14875:88:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14906:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "14908:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14908:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14908:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14891:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14902:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "14898:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14898:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "14888:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14888:17:46"
                              },
                              "nodeType": "YulIf",
                              "src": "14885:43:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14937:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14948:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14955:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14944:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14944:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "14937:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "14857:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "14867:3:46",
                            "type": ""
                          }
                        ],
                        "src": "14828:135:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15023:325:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15033:22:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15047:1:46",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15050:4:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "15043:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15043:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "15033:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15064:38:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "15094:4:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15100:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "15090:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15090:12:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "15068:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15141:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15143:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "15157:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15165:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "15153:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15153:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "15143:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "15121:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15114:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15114:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15111:61:46"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15231:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15252:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15259:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15264:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "15255:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15255:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15245:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15245:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15245:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15296:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15299:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15289:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15289:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15289:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15324:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15327:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15317:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15317:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15317:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "15187:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "15210:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15218:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "15207:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15207:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "15184:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15184:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "15181:161:46"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "15003:4:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "15012:6:46",
                            "type": ""
                          }
                        ],
                        "src": "14968:380:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15527:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15544:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15555:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15537:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15537:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15537:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15578:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15589:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15574:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15574:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15594:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15567:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15567:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15567:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15617:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15628:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15613:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15613:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15633:34:46",
                                    "type": "",
                                    "value": "ERC721: approval to current owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15606:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15606:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15606:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15688:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15699:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15684:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15684:18:46"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15704:3:46",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15677:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15677:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15677:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15717:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15729:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15740:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15725:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15725:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15717:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15504:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15518:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15353:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15929:252:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15946:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15957:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15939:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15939:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15939:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15980:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15991:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15976:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15976:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15996:2:46",
                                    "type": "",
                                    "value": "62"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15969:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15969:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15969:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16019:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16030:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16015:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16015:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16035:34:46",
                                    "type": "",
                                    "value": "ERC721: approve caller is not to"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16008:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16008:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16008:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16090:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16101:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16086:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16086:18:46"
                                  },
                                  {
                                    "hexValue": "6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16106:32:46",
                                    "type": "",
                                    "value": "ken owner nor approved for all"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16079:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16079:60:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16079:60:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16148:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16160:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16171:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16156:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16156:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16148:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15906:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15920:4:46",
                            "type": ""
                          }
                        ],
                        "src": "15755:426:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16360:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16377:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16388:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16370:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16370:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16370:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16411:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16422:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16407:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16407:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16427:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16400:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16400:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16400:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16450:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16461:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16446:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16446:18:46"
                                  },
                                  {
                                    "hexValue": "756e737570706f7274656420636861696e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16466:19:46",
                                    "type": "",
                                    "value": "unsupported chain"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16439:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16439:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16439:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16495:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16507:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16518:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16503:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16503:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16495:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16337:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16351:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16186:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16581:76:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16603:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16605:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16605:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16605:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16597:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16600:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16594:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16594:8:46"
                              },
                              "nodeType": "YulIf",
                              "src": "16591:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16634:17:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16646:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16649:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "16642:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16642:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "16634:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16563:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16566:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "16572:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16532:125:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16710:80:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16737:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16739:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16739:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16739:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16726:1:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "16733:1:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "16729:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16729:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16723:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16723:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "16720:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16768:16:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16779:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16782:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16775:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16775:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "16768:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16693:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16696:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "16702:3:46",
                            "type": ""
                          }
                        ],
                        "src": "16662:128:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16969:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16986:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16997:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16979:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16979:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16979:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17020:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17031:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17016:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17016:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17036:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17009:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17009:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17009:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17059:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17070:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17055:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17055:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17075:34:46",
                                    "type": "",
                                    "value": "ERC721: caller is not token owne"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17048:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17048:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17048:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17130:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17141:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17126:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17126:18:46"
                                  },
                                  {
                                    "hexValue": "72206e6f7220617070726f766564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17146:16:46",
                                    "type": "",
                                    "value": "r nor approved"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17119:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17119:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17119:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17172:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17184:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17195:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17180:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17180:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17172:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16946:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16960:4:46",
                            "type": ""
                          }
                        ],
                        "src": "16795:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17262:116:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17321:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17323:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17323:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17323:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17293:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "17286:6:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17286:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "17279:6:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17279:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17301:1:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "17312:1:46",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "17308:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "17308:6:46"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17316:1:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "17304:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17304:14:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17298:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17298:21:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17275:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17275:45:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17272:71:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17352:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17367:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17370:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "17363:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17363:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "17352:7:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17241:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17244:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "17250:7:46",
                            "type": ""
                          }
                        ],
                        "src": "17210:168:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17415:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17432:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17439:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17444:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "17435:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17435:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17425:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17425:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17472:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17475:4:46",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17465:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17465:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17465:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17496:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17499:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "17489:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17489:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17489:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "17383:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17561:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17584:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "17586:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17586:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17586:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17581:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17574:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "17571:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17615:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17624:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17627:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "17620:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17620:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "17615:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17546:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17549:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "17555:1:46",
                            "type": ""
                          }
                        ],
                        "src": "17515:120:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17814:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17831:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17842:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17824:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17824:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17824:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17865:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17876:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17861:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17861:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17881:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17854:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17854:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17854:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17904:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17915:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17900:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17900:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17920:34:46",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17893:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17893:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17893:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17964:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17976:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17987:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17972:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17972:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17964:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17791:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17805:4:46",
                            "type": ""
                          }
                        ],
                        "src": "17640:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18175:162:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18192:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18203:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18185:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18185:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18185:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18226:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18237:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18222:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18222:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18242:2:46",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18215:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18215:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18215:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18265:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18276:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18261:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18261:18:46"
                                  },
                                  {
                                    "hexValue": "756e617574686f72697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18281:14:46",
                                    "type": "",
                                    "value": "unauthorized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18254:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18254:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18254:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18305:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18317:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18328:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18313:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18313:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18305:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18152:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18166:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18001:336:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18516:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18533:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18544:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18526:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18526:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18526:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18567:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18578:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18563:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18563:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18583:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18556:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18556:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18556:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18606:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18617:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18602:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18602:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18622:28:46",
                                    "type": "",
                                    "value": "Edition must have a signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18595:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18595:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18595:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18660:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18672:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18683:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18668:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18668:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18660:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18493:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18507:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18342:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18824:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18834:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18846:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18857:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18842:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18842:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18834:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18876:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18887:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18869:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18869:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18869:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18914:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18925:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18910:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18910:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18934:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18942:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18930:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18930:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18903:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18903:51:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18903:51:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18785:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18796:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18804:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18815:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18697:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19139:176:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19156:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19167:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19149:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19149:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19149:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19190:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19201:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19186:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19186:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19206:2:46",
                                    "type": "",
                                    "value": "26"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19179:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19179:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19179:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19229:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19240:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19225:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19225:18:46"
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19245:28:46",
                                    "type": "",
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19218:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19218:56:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19218:56:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19283:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19295:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19306:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19291:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19291:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19283:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19116:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19130:4:46",
                            "type": ""
                          }
                        ],
                        "src": "18965:350:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19494:236:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19511:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19522:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19504:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19504:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19504:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19545:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19556:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19541:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19541:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19561:2:46",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19534:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19534:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19534:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19584:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19595:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19580:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19580:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19600:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19573:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19573:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19573:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19655:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19666:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19651:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19651:18:46"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19671:16:46",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19644:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19644:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19644:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19697:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19709:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19720:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19705:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19705:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19697:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19471:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19485:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19320:410:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19842:87:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19852:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19864:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19875:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19860:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19860:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19852:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19894:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19909:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19917:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19905:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19905:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19887:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19887:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19887:36:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19811:9:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19822:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19833:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19735:194:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20108:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20125:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20136:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20118:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20118:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20118:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20159:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20170:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20155:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20155:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20175:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20148:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20148:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20148:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20198:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20209:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20194:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20194:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20214:26:46",
                                    "type": "",
                                    "value": "ERC721: invalid token ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20187:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20187:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20187:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20250:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20262:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20273:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20258:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20258:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20250:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20085:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20099:4:46",
                            "type": ""
                          }
                        ],
                        "src": "19934:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20461:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20478:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20489:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20471:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20471:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20471:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20512:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20523:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20508:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20508:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20528:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20501:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20501:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20501:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20551:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20562:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20547:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20547:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20567:34:46",
                                    "type": "",
                                    "value": "ERC721: address zero is not a va"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20540:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20540:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20540:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20622:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20633:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20618:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20618:18:46"
                                  },
                                  {
                                    "hexValue": "6c6964206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20638:11:46",
                                    "type": "",
                                    "value": "lid owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20611:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20611:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20611:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20659:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20671:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20682:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20667:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20667:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20659:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20438:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20452:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20287:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20871:169:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20888:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20899:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20881:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20881:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20881:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20922:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20933:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20918:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20918:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20938:2:46",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20911:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20911:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20911:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20961:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20972:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20957:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20957:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f6e6578697374656e742065646974696f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20977:21:46",
                                    "type": "",
                                    "value": "Nonexistent edition"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20950:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20950:49:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20950:49:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21008:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21020:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21031:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21016:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21016:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21008:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20848:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20862:4:46",
                            "type": ""
                          }
                        ],
                        "src": "20697:343:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21204:302:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21221:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21232:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21214:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21214:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21214:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21259:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21270:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21255:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21255:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21275:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21248:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21248:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21248:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21298:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21309:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21294:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21294:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21314:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21287:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21287:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21287:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21347:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21358:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21343:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21343:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21363:6:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21371:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "21330:12:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21330:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21330:48:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "21402:9:46"
                                          },
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "21413:6:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "21398:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21398:22:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21422:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21394:31:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21427:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21387:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21387:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21438:62:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21454:9:46"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "21473:6:46"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21481:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "21469:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "21469:15:46"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "21490:2:46",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "21486:3:46"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "21486:7:46"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "21465:3:46"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21465:29:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21450:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21450:45:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21497:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21446:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21446:54:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21438:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21157:9:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21168:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21176:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21184:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21195:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21045:461:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21685:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21702:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21713:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21695:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21695:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21695:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21736:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21747:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21732:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21732:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21752:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21725:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21725:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21725:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21775:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21786:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21771:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21771:18:46"
                                  },
                                  {
                                    "hexValue": "4d75737420736574207175616e74697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21791:19:46",
                                    "type": "",
                                    "value": "Must set quantity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21764:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21764:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21764:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21820:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21832:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21843:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21828:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21828:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21820:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21662:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21676:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21511:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22031:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22048:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22059:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22041:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22041:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22041:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22082:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22093:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22078:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22078:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22098:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22071:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22071:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22071:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22121:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22132:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22117:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22117:18:46"
                                  },
                                  {
                                    "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22137:27:46",
                                    "type": "",
                                    "value": "Must set fundingRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22110:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22110:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22110:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22174:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22186:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22197:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22182:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22182:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22174:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22008:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22022:4:46",
                            "type": ""
                          }
                        ],
                        "src": "21857:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22385:230:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22402:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22413:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22395:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22395:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22395:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22436:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22447:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22432:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22432:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22452:2:46",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22425:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22425:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22475:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22486:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22471:18:46"
                                  },
                                  {
                                    "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e207374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22491:34:46",
                                    "type": "",
                                    "value": "End time must be greater than st"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22464:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22464:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22546:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22557:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22542:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22542:18:46"
                                  },
                                  {
                                    "hexValue": "6172742074696d65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22562:10:46",
                                    "type": "",
                                    "value": "art time"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22535:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22535:38:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22535:38:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22582:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22594:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22605:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22590:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22590:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22582:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22362:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22376:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22211:404:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22794:166:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22811:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22822:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22804:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22804:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22804:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22845:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22856:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22841:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22841:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22861:2:46",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22834:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22834:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22834:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22884:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22895:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22880:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22880:18:46"
                                  },
                                  {
                                    "hexValue": "57726f6e672065646974696f6e204944",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22900:18:46",
                                    "type": "",
                                    "value": "Wrong edition ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22873:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22873:46:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22873:46:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22928:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22940:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22951:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22936:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22936:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22928:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22771:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22785:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22620:340:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23260:512:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23270:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23282:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23293:3:46",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23278:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23278:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23270:4:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23306:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23324:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23329:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "23320:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23320:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23333:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "23316:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23316:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23310:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23351:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23366:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23374:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23362:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23362:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23344:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23344:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23344:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23398:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23409:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23394:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23414:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23387:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23387:34:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23430:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23440:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "23434:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23470:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23481:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23466:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23466:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23490:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23498:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23486:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23486:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23459:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23459:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23459:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23522:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23533:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23518:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23518:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "23542:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23550:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23538:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23538:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23511:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23511:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23511:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23574:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23585:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23570:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23570:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "23595:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23603:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23591:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23591:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23563:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23563:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23563:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23627:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23638:3:46",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23623:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23623:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "23648:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23656:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23644:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23644:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23616:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23616:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23616:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23680:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23691:3:46",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23676:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23676:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "23701:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23709:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23697:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23697:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23669:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23669:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23669:44:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23733:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23744:3:46",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23729:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23729:19:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "23754:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23762:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23750:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23750:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23722:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23722:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23722:44:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23173:9:46",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "23184:6:46",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "23192:6:46",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "23200:6:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "23208:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "23216:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23224:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23232:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23240:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23251:4:46",
                            "type": ""
                          }
                        ],
                        "src": "22965:807:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23809:95:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23826:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23833:3:46",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23838:10:46",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "23829:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23829:20:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23819:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23819:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23819:31:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23866:1:46",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23869:4:46",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23859:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23859:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23859:15:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23890:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23893:4:46",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "23883:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23883:15:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23883:15:46"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "23777:127:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24050:272:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "24060:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24072:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24083:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24068:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24068:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24060:4:46"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24128:111:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24149:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24156:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "24161:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "24152:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24152:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24142:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24142:31:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24142:31:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24193:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24196:4:46",
                                          "type": "",
                                          "value": "0x21"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24186:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24186:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24186:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24221:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24224:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24214:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24214:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24214:15:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "24108:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24116:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "24105:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24105:13:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "24098:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24098:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "24095:144:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24255:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24266:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24248:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24248:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24248:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24293:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24304:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24289:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24289:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24309:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24282:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24282:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24282:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_TimeType_$12300_t_uint256__to_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24011:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "24022:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24030:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24041:4:46",
                            "type": ""
                          }
                        ],
                        "src": "23909:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24501:237:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24518:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24529:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24511:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24511:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24511:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24552:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24563:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24548:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24548:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24568:2:46",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24541:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24541:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24541:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24591:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24602:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24587:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24587:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24607:34:46",
                                    "type": "",
                                    "value": "ERC721Metadata: URI query for no"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24580:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24580:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24580:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24662:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24673:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24658:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24658:18:46"
                                  },
                                  {
                                    "hexValue": "6e6578697374656e7420746f6b656e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24678:17:46",
                                    "type": "",
                                    "value": "nexistent token"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24651:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24651:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24651:45:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24705:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24717:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24728:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24713:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24713:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24705:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24478:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24492:4:46",
                            "type": ""
                          }
                        ],
                        "src": "24327:411:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24793:135:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24803:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "24823:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24817:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24817:12:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "24807:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "24864:5:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24871:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24860:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24860:16:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24878:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24883:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24838:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24838:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24838:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24899:23:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24910:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "24915:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24906:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24906:16:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "24899:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "24770:5:46",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "24777:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "24785:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24743:185:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25211:359:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25221:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25241:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25235:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25235:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25225:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25283:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25291:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25279:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25279:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25298:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25303:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25257:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25257:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25257:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25319:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25336:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25341:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25332:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25332:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25323:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25357:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25379:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25373:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25373:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25361:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25421:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25429:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25417:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25417:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25436:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25443:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25395:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25395:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25395:57:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25461:33:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25478:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25485:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25474:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25474:20:46"
                              },
                              "variables": [
                                {
                                  "name": "end_2",
                                  "nodeType": "YulTypedName",
                                  "src": "25465:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25510:5:46"
                                  },
                                  {
                                    "hexValue": "2f6d657461646174612e6a736f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25517:16:46",
                                    "type": "",
                                    "value": "/metadata.json"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25503:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25503:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25503:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25543:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "25554:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25561:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25550:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25550:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25543:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25179:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25184:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25192:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25203:3:46",
                            "type": ""
                          }
                        ],
                        "src": "24933:637:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25762:283:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25772:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25792:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25786:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25786:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25776:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25834:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25842:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25830:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25830:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25849:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25854:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25808:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25808:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25808:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25870:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25887:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25892:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25883:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25883:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25874:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25908:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25930:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25924:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25924:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25912:8:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25972:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25980:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25968:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25968:17:46"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25987:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25994:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25946:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25946:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25946:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26012:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26023:5:46"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26030:8:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26019:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26019:20:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "26012:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25730:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25735:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25743:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25754:3:46",
                            "type": ""
                          }
                        ],
                        "src": "25575:470:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26280:209:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26290:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26310:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "26304:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26304:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "26294:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "26352:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26360:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26348:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26348:17:46"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "26367:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26372:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "26326:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26326:53:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26326:53:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26388:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "26405:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26410:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26401:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26401:16:46"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26392:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26433:5:46"
                                  },
                                  {
                                    "hexValue": "73746f726566726f6e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26440:12:46",
                                    "type": "",
                                    "value": "storefront"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26426:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26426:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26426:27:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26462:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26473:5:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26480:2:46",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26469:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26469:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "26462:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "26256:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26261:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "26272:3:46",
                            "type": ""
                          }
                        ],
                        "src": "26050:439:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26668:228:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26685:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26696:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26678:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26678:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26678:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26719:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26730:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26715:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26715:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26735:2:46",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26708:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26708:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26708:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26758:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26769:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26754:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26754:18:46"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26774:34:46",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26747:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26747:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26747:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26829:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26840:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26825:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26825:18:46"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26845:8:46",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26818:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26818:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26818:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26863:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26875:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26886:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26871:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26871:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26863:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26645:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26659:4:46",
                            "type": ""
                          }
                        ],
                        "src": "26494:402:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26948:181:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26958:20:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "26968:10:46",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26962:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26987:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "27002:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27005:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "26998:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26998:10:46"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26991:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27017:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "27032:1:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27035:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "27028:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27028:10:46"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "27021:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27072:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "27074:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27074:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27074:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27053:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27062:2:46"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "27066:3:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "27058:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27058:12:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27050:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27050:21:46"
                              },
                              "nodeType": "YulIf",
                              "src": "27047:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27103:20:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27114:3:46"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27119:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27110:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27110:13:46"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "27103:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "26931:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "26934:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "26940:3:46",
                            "type": ""
                          }
                        ],
                        "src": "26901:228:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27308:172:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27325:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27336:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27318:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27318:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27318:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27359:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27370:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27355:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27355:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27375:2:46",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27348:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27348:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27348:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27398:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27409:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27394:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27394:18:46"
                                  },
                                  {
                                    "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27414:24:46",
                                    "type": "",
                                    "value": "Edition does not exist"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27387:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27387:52:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27387:52:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27448:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27460:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27471:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27456:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27456:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27448:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27285:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27299:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27134:346:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27659:231:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27676:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27687:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27669:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27669:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27669:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27710:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27721:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27706:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27706:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27726:2:46",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27699:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27699:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27699:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27749:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27760:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27745:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27745:18:46"
                                  },
                                  {
                                    "hexValue": "4d7573742073656e6420656e6f75676820746f20707572636861736520746865",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27765:34:46",
                                    "type": "",
                                    "value": "Must send enough to purchase the"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27738:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27738:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27738:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27820:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27831:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27816:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27816:18:46"
                                  },
                                  {
                                    "hexValue": "2065646974696f6e2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27836:11:46",
                                    "type": "",
                                    "value": " edition."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27809:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27809:39:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27809:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27857:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27869:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27880:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27865:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27865:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27857:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27636:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27650:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27485:405:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28069:167:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28086:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28097:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28079:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28079:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28079:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28120:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28131:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28116:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28116:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28136:2:46",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28109:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28109:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28109:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28159:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28170:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28155:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28155:18:46"
                                  },
                                  {
                                    "hexValue": "41756374696f6e2068617320656e646564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28175:19:46",
                                    "type": "",
                                    "value": "Auction has ended"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28148:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28148:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28148:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28204:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28216:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28227:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28212:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28212:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28204:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28046:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28060:4:46",
                            "type": ""
                          }
                        ],
                        "src": "27895:341:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28415:249:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28432:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28443:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28425:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28425:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28425:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28466:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28477:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28462:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28462:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28482:2:46",
                                    "type": "",
                                    "value": "59"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28455:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28455:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28455:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28505:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28516:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28501:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28501:18:46"
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28521:34:46",
                                    "type": "",
                                    "value": "No permissioned tokens available"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28494:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28494:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28494:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28576:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28587:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28572:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28572:18:46"
                                  },
                                  {
                                    "hexValue": "2026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28592:29:46",
                                    "type": "",
                                    "value": " & open auction not started"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28565:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28565:57:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28565:57:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28631:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28643:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28654:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28639:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28639:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28631:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28392:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28406:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28241:423:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28843:164:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28860:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28871:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28853:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28853:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28853:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28894:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28905:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28890:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28890:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28910:2:46",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28883:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28883:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28883:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28933:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28944:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28929:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28929:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28949:16:46",
                                    "type": "",
                                    "value": "Invalid signer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28922:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28922:44:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28922:44:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28975:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28987:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28998:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28983:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28983:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28975:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28820:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28834:4:46",
                            "type": ""
                          }
                        ],
                        "src": "28669:338:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29186:223:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29203:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29214:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29196:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29196:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29196:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29237:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29248:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29233:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29233:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29253:2:46",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29226:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29226:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29226:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29276:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29287:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29272:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29272:18:46"
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f7574",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29292:34:46",
                                    "type": "",
                                    "value": "This edition is already sold out"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29265:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29265:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29265:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29347:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29358:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29343:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29343:18:46"
                                  },
                                  {
                                    "hexValue": "2e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29363:3:46",
                                    "type": "",
                                    "value": "."
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29336:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29336:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29336:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29376:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29388:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29399:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29384:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29384:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29376:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29163:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29177:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29012:397:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29541:136:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "29551:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29563:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29574:2:46",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29559:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29559:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29551:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29593:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "29608:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29616:10:46",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29604:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29604:23:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29586:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29586:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29586:42:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29648:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29659:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29644:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29644:18:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29664:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29637:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29637:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29637:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29502:9:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "29513:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29521:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29532:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29414:263:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29856:179:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29873:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29884:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29866:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29866:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29866:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29907:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29918:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29903:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29903:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29923:2:46",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29896:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29896:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29896:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29946:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29957:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29942:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29942:18:46"
                                  },
                                  {
                                    "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29962:31:46",
                                    "type": "",
                                    "value": "Insufficient balance for send"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29935:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29935:59:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29935:59:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30003:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30015:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30026:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30011:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30011:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30003:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29833:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29847:4:46",
                            "type": ""
                          }
                        ],
                        "src": "29682:353:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30231:14:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30233:10:46",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "30240:3:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "30233:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "30215:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "30223:3:46",
                            "type": ""
                          }
                        ],
                        "src": "30040:205:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30424:239:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30441:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30452:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30434:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30434:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30434:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30475:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30486:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30471:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30471:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30491:2:46",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30464:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30464:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30464:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30514:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30525:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30510:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30510:18:46"
                                  },
                                  {
                                    "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e7420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30530:34:46",
                                    "type": "",
                                    "value": "Unable to send value: recipient "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30503:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30503:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30503:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30585:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30596:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30581:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30581:18:46"
                                  },
                                  {
                                    "hexValue": "6d61792068617665207265766572746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30601:19:46",
                                    "type": "",
                                    "value": "may have reverted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30574:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30574:47:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30574:47:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30630:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30642:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30653:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30638:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30638:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30630:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30401:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30415:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30250:413:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30842:227:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30859:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30870:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30852:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30852:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30852:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30893:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30904:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30889:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30889:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30909:2:46",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30882:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30882:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30882:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30932:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30943:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30928:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30928:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30948:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer from incorrect "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30921:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30921:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30921:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31003:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31014:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30999:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30999:18:46"
                                  },
                                  {
                                    "hexValue": "6f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31019:7:46",
                                    "type": "",
                                    "value": "owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30992:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30992:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30992:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31036:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31048:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31059:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31044:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31044:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31036:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30819:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30833:4:46",
                            "type": ""
                          }
                        ],
                        "src": "30668:401:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31248:226:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31265:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31276:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31258:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31258:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31258:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31299:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31310:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31295:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31295:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31315:2:46",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31288:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31288:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31288:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31338:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31349:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31334:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31334:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31354:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31327:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31327:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31327:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31409:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31420:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31405:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31405:18:46"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31425:6:46",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31398:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31398:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31398:34:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31441:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31453:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31464:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31449:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31449:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31441:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31225:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31239:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31074:400:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31653:233:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31670:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31681:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31663:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31663:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31663:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31704:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31715:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31700:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31700:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31720:2:46",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31693:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31693:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31693:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31743:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31754:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31739:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31739:18:46"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31759:34:46",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31732:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31732:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31732:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31814:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31825:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31810:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31810:18:46"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31830:13:46",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31803:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31803:41:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31803:41:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31853:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31865:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31876:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31861:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31861:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31853:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31630:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31644:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31479:407:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32065:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32082:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32093:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32075:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32075:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32075:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32116:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32127:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32112:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32112:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32132:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32105:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32105:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32105:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32155:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32166:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32151:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32151:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32171:27:46",
                                    "type": "",
                                    "value": "ERC721: approve to caller"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32144:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32144:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32144:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32208:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32220:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32231:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32216:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32216:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32208:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32042:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32056:4:46",
                            "type": ""
                          }
                        ],
                        "src": "31891:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32419:240:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32436:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32447:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32429:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32429:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32429:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32470:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32481:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32466:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32466:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32486:2:46",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32459:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32459:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32459:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32509:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32520:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32505:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32505:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32525:34:46",
                                    "type": "",
                                    "value": "ERC721: transfer to non ERC721Re"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32498:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32498:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32498:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32580:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32591:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32576:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32576:18:46"
                                  },
                                  {
                                    "hexValue": "63656976657220696d706c656d656e746572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32596:20:46",
                                    "type": "",
                                    "value": "ceiver implementer"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32569:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32569:48:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32569:48:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32626:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32638:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32649:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32634:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32634:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32626:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32396:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32410:4:46",
                            "type": ""
                          }
                        ],
                        "src": "32245:414:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32702:74:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32725:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "32727:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32727:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32727:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "32722:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32715:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32715:9:46"
                              },
                              "nodeType": "YulIf",
                              "src": "32712:35:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32756:14:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "32765:1:46"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "32768:1:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "32761:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32761:9:46"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "32756:1:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "32687:1:46",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "32690:1:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "32696:1:46",
                            "type": ""
                          }
                        ],
                        "src": "32664:112:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32829:20:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "32838:3:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32843:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32831:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32831:16:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32831:16:46"
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_fba9",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "32820:3:46",
                            "type": ""
                          }
                        ],
                        "src": "32781:68:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33174:263:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33191:3:46"
                                  },
                                  {
                                    "hexValue": "68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33196:32:46",
                                    "type": "",
                                    "value": "https://metadata.sound.xyz/v1/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33184:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33184:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33184:45:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33238:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33258:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33252:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33252:13:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33242:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "33300:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33308:4:46",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33296:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33296:17:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "33319:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33324:2:46",
                                        "type": "",
                                        "value": "30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33315:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33315:12:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33329:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "33274:21:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33274:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33274:62:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33345:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "33359:3:46"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33364:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33355:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33355:16:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33349:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "33391:2:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33395:2:46",
                                        "type": "",
                                        "value": "30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33387:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33387:11:46"
                                  },
                                  {
                                    "hexValue": "2f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "33400:3:46",
                                    "type": "",
                                    "value": "/"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33380:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33380:24:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33380:24:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33413:18:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33424:2:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33428:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33420:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33420:11:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "33413:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33150:3:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33155:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33166:3:46",
                            "type": ""
                          }
                        ],
                        "src": "32854:583:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33498:65:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33515:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33518:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33508:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33508:14:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33508:14:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33531:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33549:1:46",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33552:4:46",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "33539:9:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33539:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "33531:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "33481:3:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "33489:4:46",
                            "type": ""
                          }
                        ],
                        "src": "33442:121:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33842:1071:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33852:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33863:1:46",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulTypedName",
                                  "src": "33856:3:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33873:30:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "33896:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33890:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33890:13:46"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "33877:9:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33912:17:46",
                              "value": {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "33926:3:46"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33916:6:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33938:11:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33948:1:46",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33942:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33958:28:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33972:2:46"
                                  },
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "33976:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33968:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33968:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "33958:6:46"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33995:44:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "34025:9:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34036:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "34021:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34021:18:46"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "33999:18:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34078:31:46",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34080:27:46",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "34094:6:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34102:4:46",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "34090:3:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34090:17:46"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "34080:6:46"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "34058:18:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "34051:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34051:26:46"
                              },
                              "nodeType": "YulIf",
                              "src": "34048:61:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34118:12:46",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34128:2:46",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "34122:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34189:115:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "34210:3:46"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "34219:3:46",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "34224:10:46",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "34215:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34215:20:46"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34203:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34203:33:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34203:33:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34256:1:46",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34259:4:46",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34249:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34249:15:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34249:15:46"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "34284:3:46"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34289:4:46",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "34277:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34277:17:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34277:17:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "34145:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "34168:6:46"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "34176:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "34165:2:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34165:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "34142:2:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34142:38:46"
                              },
                              "nodeType": "YulIf",
                              "src": "34139:165:46"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "34354:97:46",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34375:3:46"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34384:9:46"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "34399:3:46",
                                                      "type": "",
                                                      "value": "255"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34395:3:46"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "34395:8:46"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "34380:3:46"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "34380:24:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "34368:6:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34368:37:46"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "34368:37:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "34418:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34429:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34434:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34425:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34425:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "34418:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "34347:104:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34352:1:46",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "34467:313:46",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "34481:52:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "value0",
                                              "nodeType": "YulIdentifier",
                                              "src": "34526:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "34496:29:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34496:37:46"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "34485:7:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "34546:10:46",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34555:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "34550:1:46",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "34623:111:46",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34652:3:46"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34657:1:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "34648:3:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "34648:11:46"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "34667:7:46"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "34661:5:46"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "34661:14:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34641:6:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34641:35:46"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "34641:35:46"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "34693:27:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34708:7:46"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34717:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34704:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34704:16:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34693:7:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "34580:1:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34583:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "34577:2:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34577:13:46"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "34591:19:46",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "34593:15:46",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34602:1:46"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "34605:2:46"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34598:3:46"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "34598:10:46"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "34593:1:46"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "34573:3:46",
                                          "statements": []
                                        },
                                        "src": "34569:165:46"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "34747:23:46",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "34758:3:46"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "34763:6:46"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34754:3:46"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34754:16:46"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "34747:3:46"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "34460:320:46",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34465:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "outOfPlaceEncoding",
                                "nodeType": "YulIdentifier",
                                "src": "34320:18:46"
                              },
                              "nodeType": "YulSwitch",
                              "src": "34313:467:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34789:43:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34820:6:46"
                                  },
                                  {
                                    "name": "ret",
                                    "nodeType": "YulIdentifier",
                                    "src": "34828:3:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "34802:17:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34802:30:46"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34793:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34871:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_fba9",
                                  "nodeType": "YulIdentifier",
                                  "src": "34841:29:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34841:36:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34841:36:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34886:21:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34897:5:46"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34904:2:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34893:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34893:14:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "34886:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33810:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "33815:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "33823:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33834:3:46",
                            "type": ""
                          }
                        ],
                        "src": "33568:1345:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35092:175:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35109:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35120:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35102:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35102:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35102:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35143:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35154:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35139:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35139:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35159:2:46",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35132:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35132:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35132:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35182:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35193:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35178:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35178:18:46"
                                  },
                                  {
                                    "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35198:27:46",
                                    "type": "",
                                    "value": "Ticket number exceeds max"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35171:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35171:55:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35171:55:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35235:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35247:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35258:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35243:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35243:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35235:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35069:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35083:4:46",
                            "type": ""
                          }
                        ],
                        "src": "34918:349:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35446:234:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35463:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35474:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35456:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35456:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35456:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35497:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35508:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35493:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35493:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35513:2:46",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35486:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35486:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35486:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35536:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35547:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35532:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35532:18:46"
                                  },
                                  {
                                    "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35552:34:46",
                                    "type": "",
                                    "value": "Invalid ticket number or NFT alr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35525:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35525:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35525:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35607:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35618:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35603:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35603:18:46"
                                  },
                                  {
                                    "hexValue": "6561647920636c61696d6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35623:14:46",
                                    "type": "",
                                    "value": "eady claimed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35596:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35596:42:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35596:42:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35647:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35659:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35670:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35655:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35655:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35647:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35423:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35437:4:46",
                            "type": ""
                          }
                        ],
                        "src": "35272:408:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35898:306:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35908:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35920:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35931:3:46",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35916:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35916:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35908:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35951:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "35962:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35944:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35944:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35944:25:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35978:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35996:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36001:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "35992:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35992:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36005:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "35988:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35988:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "35982:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36027:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36038:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36023:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36023:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36047:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36055:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36043:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36043:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36016:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36016:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36016:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36079:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36090:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36075:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36075:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "36099:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36107:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36095:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36095:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36068:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36068:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36068:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36131:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36142:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36127:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36127:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "36147:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36120:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36120:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36120:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36174:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36185:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36170:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36170:19:46"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "36191:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36163:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36163:35:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36163:35:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35835:9:46",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "35846:6:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "35854:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35862:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35870:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35878:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35889:4:46",
                            "type": ""
                          }
                        ],
                        "src": "35685:519:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36457:144:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "36474:3:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36483:3:46",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36488:4:46",
                                        "type": "",
                                        "value": "6401"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "36479:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36479:14:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36467:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36467:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36467:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "36514:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36519:1:46",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36510:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36510:11:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36523:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36503:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36503:27:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36503:27:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "36550:3:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36555:2:46",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36546:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36546:12:46"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36560:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36539:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36539:28:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36539:28:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36576:19:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "36587:3:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36592:2:46",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36583:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36583:12:46"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "36576:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "36425:3:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36430:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36438:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "36449:3:46",
                            "type": ""
                          }
                        ],
                        "src": "36209:392:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36780:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36797:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36808:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36790:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36790:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36790:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36831:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36842:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36827:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36827:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36847:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36820:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36820:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36820:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36870:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36881:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36866:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36866:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36886:34:46",
                                    "type": "",
                                    "value": "ERC721: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36859:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36859:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36859:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36930:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36942:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36953:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36938:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36938:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36930:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36757:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36771:4:46",
                            "type": ""
                          }
                        ],
                        "src": "36606:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37141:178:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37158:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37169:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37151:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37151:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37151:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37192:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37203:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37188:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37188:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37208:2:46",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37181:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37181:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37181:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37231:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37242:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37227:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37227:18:46"
                                  },
                                  {
                                    "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "37247:30:46",
                                    "type": "",
                                    "value": "ERC721: token already minted"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37220:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37220:58:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37220:58:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37287:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37299:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37310:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37295:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37295:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37287:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37118:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37132:4:46",
                            "type": ""
                          }
                        ],
                        "src": "36967:352:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37527:297:46",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37537:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37555:3:46",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37560:1:46",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "37551:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37551:11:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37564:1:46",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "37547:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37547:19:46"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37541:2:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37582:9:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "37597:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37605:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37593:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37593:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37575:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37575:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37575:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37629:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37640:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37625:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37625:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37649:6:46"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "37657:2:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37645:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37645:15:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37618:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37618:43:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37618:43:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37681:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37692:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37677:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37677:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "37697:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37670:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37670:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37670:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37724:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37735:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37720:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37720:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37740:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37713:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37713:31:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37713:31:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37753:65:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "37790:6:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37802:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37813:3:46",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37798:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37798:19:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string_memory_ptr",
                                  "nodeType": "YulIdentifier",
                                  "src": "37761:28:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37761:57:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37753:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37472:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "37483:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "37491:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "37499:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37507:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37518:4:46",
                            "type": ""
                          }
                        ],
                        "src": "37324:500:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37909:169:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37955:16:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37964:1:46",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37967:1:46",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "37957:6:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37957:12:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37957:12:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "37930:7:46"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37939:9:46"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "37926:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37926:23:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37951:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "37922:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37922:32:46"
                              },
                              "nodeType": "YulIf",
                              "src": "37919:52:46"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37980:29:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37999:9:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37993:5:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37993:16:46"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "37984:5:46",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38042:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "38018:23:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38018:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38018:30:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38057:15:46",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "38067:5:46"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "38057:6:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37875:9:46",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "37886:7:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37898:6:46",
                            "type": ""
                          }
                        ],
                        "src": "37829:249:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38130:89:46",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38157:22:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "38159:16:46"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38159:18:46"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38159:18:46"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38150:5:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "38143:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38143:13:46"
                              },
                              "nodeType": "YulIf",
                              "src": "38140:39:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38188:25:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38199:5:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38210:1:46",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "38206:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38206:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38195:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38195:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "38188:3:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "decrement_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "38112:5:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "38122:3:46",
                            "type": ""
                          }
                        ],
                        "src": "38083:136:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38398:182:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38415:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38426:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38408:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38408:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38408:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38449:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38460:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38445:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38445:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38465:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38438:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38438:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38438:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38488:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38499:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38484:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38484:18:46"
                                  },
                                  {
                                    "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38504:34:46",
                                    "type": "",
                                    "value": "Strings: hex length insufficient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38477:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38477:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38477:62:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38548:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38560:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38571:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38556:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38556:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "38548:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "38375:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "38389:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38224:356:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38759:174:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38776:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38787:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38769:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38769:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38769:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38810:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38821:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38806:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38806:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38826:2:46",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38799:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38799:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38799:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38849:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38860:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38845:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38845:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "38865:26:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38838:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38838:54:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38838:54:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38901:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38913:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38924:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38909:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38909:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "38901:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "38736:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "38750:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38585:348:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39112:181:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39129:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39140:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39122:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39122:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39122:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39163:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39174:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39159:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39159:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39179:2:46",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39152:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39152:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39152:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39202:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39213:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39198:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39198:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39218:33:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature length"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39191:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39191:61:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39191:61:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39261:26:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39273:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39284:2:46",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39269:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39269:18:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39261:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39089:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39103:4:46",
                            "type": ""
                          }
                        ],
                        "src": "38938:355:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39472:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39489:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39500:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39482:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39482:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39482:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39523:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39534:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39519:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39519:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39539:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39512:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39512:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39512:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39562:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39573:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39558:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39558:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39578:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 's' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39551:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39551:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39551:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39633:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39644:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39629:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39629:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39649:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39622:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39622:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39622:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39663:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39675:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39686:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39671:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39671:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39663:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39449:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39463:4:46",
                            "type": ""
                          }
                        ],
                        "src": "39298:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39875:224:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39892:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39903:2:46",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39885:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39885:21:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39885:21:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39926:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39937:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39922:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39922:18:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "39942:2:46",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39915:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39915:30:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39915:30:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39965:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39976:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39961:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39961:18:46"
                                  },
                                  {
                                    "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "39981:34:46",
                                    "type": "",
                                    "value": "ECDSA: invalid signature 'v' val"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39954:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39954:62:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39954:62:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40036:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40047:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40032:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40032:18:46"
                                  },
                                  {
                                    "hexValue": "7565",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "40052:4:46",
                                    "type": "",
                                    "value": "ue"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40025:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40025:32:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40025:32:46"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40066:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40078:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40089:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40074:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40074:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40066:4:46"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39852:9:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39866:4:46",
                            "type": ""
                          }
                        ],
                        "src": "39701:398:46"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40285:217:46",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "40295:27:46",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40307:9:46"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40318:3:46",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40303:3:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40303:19:46"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40295:4:46"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "40338:9:46"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "40349:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40331:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40331:25:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40331:25:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40376:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40387:2:46",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40372:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40372:18:46"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "40396:6:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40404:4:46",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "40392:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40392:17:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40365:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40365:45:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40365:45:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40430:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40441:2:46",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40426:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40426:18:46"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "40446:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40419:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40419:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40419:34:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "40473:9:46"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40484:2:46",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "40469:3:46"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40469:18:46"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "40489:6:46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "40462:6:46"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40462:34:46"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "40462:34:46"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "40230:9:46",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "40241:6:46",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "40249:6:46",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "40257:6:46",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "40265:6:46",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "40276:4:46",
                            "type": ""
                          }
                        ],
                        "src": "40104:398:46"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string_memory_ptr(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string_memory_ptr(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__to_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 320\n        let _2 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _2))\n        mstore(add(headStart, 32), value1)\n        let _3 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _3))\n        mstore(add(headStart, 96), and(value3, _3))\n        mstore(add(headStart, 128), and(value4, _3))\n        mstore(add(headStart, 160), and(value5, _3))\n        mstore(add(headStart, 192), and(value6, _3))\n        mstore(add(headStart, 224), and(value7, _3))\n        mstore(add(headStart, 256), and(value8, _2))\n        mstore(add(headStart, 288), _1)\n        tail := abi_encode_string_memory_ptr(value9, add(headStart, _1))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint32(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value1 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_address_payablet_uint256t_uint32t_uint32t_uint32t_uint32t_uint32t_addresst_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9\n    {\n        if slt(sub(dataEnd, headStart), 320) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_uint32(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        value4 := abi_decode_uint32(add(headStart, 128))\n        value5 := abi_decode_uint32(add(headStart, 160))\n        value6 := abi_decode_uint32(add(headStart, 192))\n        let value_1 := calldataload(add(headStart, 224))\n        validator_revert_address(value_1)\n        value7 := value_1\n        value8 := calldataload(add(headStart, 256))\n        let offset := calldataload(add(headStart, 288))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value9 := abi_decode_string(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        value3 := calldataload(add(headStart, 64))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"unsupported chain\")\n        tail := add(headStart, 96)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"unauthorized\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Edition must have a signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Signer address cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Nonexistent edition\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), value2)\n        calldatacopy(add(headStart, 96), value1, value2)\n        mstore(add(add(headStart, value2), 96), 0)\n        tail := add(add(headStart, and(add(value2, 31), not(31))), 96)\n    }\n    function abi_encode_tuple_t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Must set quantity\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Must set fundingRecipient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"End time must be greater than st\")\n        mstore(add(headStart, 96), \"art time\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Wrong edition ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__to_t_address_t_uint256_t_uint32_t_uint32_t_uint32_t_uint32_t_uint32_t_address__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _1))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_enum$_TimeType_$12300_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        if iszero(lt(value0, 2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes14__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        mstore(end_2, \"/metadata.json\")\n        end := add(end_2, 14)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7__to_t_string_memory_ptr_t_bytes10__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, \"storefront\")\n        end := add(end_1, 10)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Edition does not exist\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"Must send enough to purchase the\")\n        mstore(add(headStart, 96), \" edition.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Auction has ended\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 59)\n        mstore(add(headStart, 64), \"No permissioned tokens available\")\n        mstore(add(headStart, 96), \" & open auction not started\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"This edition is already sold out\")\n        mstore(add(headStart, 96), \".\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Insufficient balance for send\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Unable to send value: recipient \")\n        mstore(add(headStart, 96), \"may have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function abi_encode_stringliteral_fba9(pos)\n    { mstore(pos, \"/\") }\n    function abi_encode_tuple_packed_t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_bytes30_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, \"https://metadata.sound.xyz/v1/\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 30), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 30), \"/\")\n        end := add(_1, 31)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527__to_t_string_memory_ptr_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let ret := 0\n        let slotValue := sload(value0)\n        let length := ret\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        let _2 := 32\n        if eq(outOfPlaceEncoding, lt(length, _2))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(ret, 0x24)\n        }\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, length)\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value0)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n        let pos_1 := abi_encode_string(value1, ret)\n        abi_encode_stringliteral_fba9(pos_1)\n        end := add(pos_1, _1)\n    }\n    function abi_encode_tuple_t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Ticket number exceeds max\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Invalid ticket number or NFT alr\")\n        mstore(add(headStart, 96), \"eady claimed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, shl(240, 6401))\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string_memory_ptr(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\n    }\n    function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Strings: hex length insufficient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}",
                  "id": 46,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "12236": [
                  {
                    "length": 32,
                    "start": 1214
                  },
                  {
                    "length": 32,
                    "start": 11724
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106102885760003560e01c80636352211e1161015a578063a22cb465116100c1578063e1a3d5731161007a578063e1a3d57314610835578063e8a3d48514610862578063e985e9c514610877578063f2fde38b146108c0578063f71e54fb146108e0578063fbab9e04146108f357600080fd5b8063a22cb46514610768578063b88d4fde14610788578063bb314ca1146107a8578063c87b56dd146107c8578063d3bb0528146107e8578063d547741f1461081557600080fd5b80638da5cb5b116101135780638da5cb5b146106c85780638e116aea146106e657806391d1485414610706578063931c9b991461072657806395d89b411461073c5780639725d92e1461075157600080fd5b80636352211e1461060657806370a082311461062657806375a8f08f1461064657806375b238fc14610666578063796726921461068857806379b236d2146106a857600080fd5b80632a55205a116101fe5780635076a64d116101b75780635076a64d1461052c57806352e25bf21461055957806352f5c2e41461057957806356dee996146105a65780635f1e6f6d146105c6578063602787ed146105e657600080fd5b80632a55205a1461044d5780632f2ff15d1461048c5780633644e515146104ac5780633ef2dbc2146104e057806342842e0e146104f75780634bf440261461051757600080fd5b80630bcca831116102505780630bcca8311461036b578063155dd5ee1461038057806318160ddd146103a057806323b872dd146103c357806327399d36146103e3578063279c806e1461041757600080fd5b806301ffc9a71461028d578063065d5b85146102c257806306fdde03146102ef578063081812fc14610311578063095ea7b314610349575b600080fd5b34801561029957600080fd5b506102ad6102a836600461376b565b610913565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b506102e26102dd3660046137cc565b61093e565b6040516102b99190613817565b3480156102fb57600080fd5b50610304610a2a565b6040516102b991906138b5565b34801561031d57600080fd5b5061033161032c3660046138c8565b610abc565b6040516001600160a01b0390911681526020016102b9565b34801561035557600080fd5b506103696103643660046138f6565b610ae3565b005b34801561037757600080fd5b50610331610bfd565b34801561038c57600080fd5b5061036961039b3660046138c8565b610c7d565b3480156103ac57600080fd5b506103b5610cdd565b6040519081526020016102b9565b3480156103cf57600080fd5b506103696103de366004613922565b610d29565b3480156103ef57600080fd5b506103b57fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e881565b34801561042357600080fd5b506104376104323660046138c8565b610d5a565b6040516102b99a99989796959493929190613963565b34801561045957600080fd5b5061046d6104683660046139de565b610e5a565b604080516001600160a01b0390931683526020830191909152016102b9565b34801561049857600080fd5b506103696104a7366004613a00565b610ffc565b3480156104b857600080fd5b506103b57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ec57600080fd5b5060ca546103b59081565b34801561050357600080fd5b50610369610512366004613922565b6110ac565b34801561052357600080fd5b506103b56110c7565b34801561053857600080fd5b506103b56105473660046138c8565b60cd6020526000908152604090205481565b34801561056557600080fd5b50610369610574366004613a49565b6110e3565b34801561058557600080fd5b50610599610594366004613a75565b61121b565b6040516102b99190613ab6565b3480156105b257600080fd5b506103696105c1366004613a00565b6112d3565b3480156105d257600080fd5b506103696105e1366004613ba2565b6113f1565b3480156105f257600080fd5b506103b56106013660046138c8565b611544565b34801561061257600080fd5b506103316106213660046138c8565b611566565b34801561063257600080fd5b506103b5610641366004613c3c565b6115c6565b34801561065257600080fd5b50610369610661366004613c3c565b61164c565b34801561067257600080fd5b506103b56000805160206143da83398151915281565b34801561069457600080fd5b506103696106a3366004613c9a565b6116a5565b3480156106b457600080fd5b506103696106c33660046138c8565b60d155565b3480156106d457600080fd5b506097546001600160a01b0316610331565b3480156106f257600080fd5b50610369610701366004613cd8565b6117f0565b34801561071257600080fd5b506102ad610721366004613a00565b611c52565b34801561073257600080fd5b506103b560d15481565b34801561074857600080fd5b50610304611c7d565b34801561075d57600080fd5b5060cb546103b59081565b34801561077457600080fd5b50610369610783366004613da2565b611c8c565b34801561079457600080fd5b506103696107a3366004613dd5565b611c97565b3480156107b457600080fd5b506103696107c3366004613a49565b611ccf565b3480156107d457600080fd5b506103046107e33660046138c8565b611d97565b3480156107f457600080fd5b506103b56108033660046138c8565b60cf6020526000908152604090205481565b34801561082157600080fd5b50610369610830366004613a00565b611f21565b34801561084157600080fd5b506103b56108503660046138c8565b60ce6020526000908152604090205481565b34801561086e57600080fd5b50610304611fb2565b34801561088357600080fd5b506102ad610892366004613e48565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156108cc57600080fd5b506103696108db366004613c3c565b611fe0565b6103696108ee366004613e76565b61206f565b3480156108ff57600080fd5b5061036961090e366004613a49565b612442565b600063152a902d60e11b6001600160e01b031983161480610938575061093882612509565b92915050565b60606000826001600160401b0381111561095a5761095a613af7565b604051908082528060200260200182016040528015610983578160200160208202803683370190505b50905060005b83811015610a215760006109e3878787858181106109a9576109a9613ec8565b90506020020135600091825260d0602090815260408084206101008404808652925290922054600160ff90921681811c9290921693909290565b5050509050806001148383815181106109fe576109fe613ec8565b911515602092830291909101909101525080610a1981613ef4565b915050610989565b50949350505050565b606060658054610a3990613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6590613f0d565b8015610ab25780601f10610a8757610100808354040283529160200191610ab2565b820191906000526020600020905b815481529060010190602001808311610a9557829003601f168201915b5050505050905090565b6000610ac782612559565b506000908152606960205260409020546001600160a01b031690565b6000610aee82611566565b9050806001600160a01b0316836001600160a01b031603610b605760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b7c5750610b7c8133610892565b610bee5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610b57565b610bf883836125b8565b505050565b600046600103610c20575073858a92511485715cfb754f397a7894b7724c7abd90565b46600403610c41575073ee35e946dd73ef78d352454c3f915e2ca0a09d8790565b60405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b21031b430b4b760791b6044820152606401610b57565b600081815260cf602090815260408083205460ce909252822054610ca19190613f41565b600083815260ce602090815260408083205460cf83528184205560cc909152902054909150610cd9906001600160a01b031682612626565b5050565b60008060015b60cb54811015610d2357600081815260cc6020526040902060020154610d0f9063ffffffff1683613f58565b915080610d1b81613ef4565b915050610ce3565b50919050565b610d333382612733565b610d4f5760405162461bcd60e51b8152600401610b5790613f70565b610bf88383836127b2565b60cc60205260009081526040902080546001820154600283015460038401546004850180546001600160a01b0395861696949563ffffffff808616966401000000008704821696600160401b8104831696600160601b8204841696600160801b8304851696600160a01b90930490941694169290610dd790613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0390613f0d565b8015610e505780601f10610e2557610100808354040283529160200191610e50565b820191906000526020600020905b815481529060010190602001808311610e3357829003601f168201915b505050505090508a565b6000806000610e6885611544565b600081815260cc6020908152604080832081516101408101835281546001600160a01b039081168252600183015494820194909452600282015463ffffffff80821694830194909452640100000000810484166060830152600160401b810484166080830152600160601b8104841660a0830152600160801b8104841660c0830152600160a01b900490921660e0830152600381015490921661010082015260048201805494955092939092610120840191610f2390613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4f90613f0d565b8015610f9c5780601f10610f7157610100808354040283529160200191610f9c565b820191906000526020600020905b815481529060010190602001808311610f7f57829003601f168201915b5050509190925250508151919250506001600160a01b0316610fc65751925060009150610ff59050565b6080810151815163ffffffff90911690612710610fe38389613fbe565b610fed9190613ff3565b945094505050505b9250929050565b6097546001600160a01b031633146110265760405162461bcd60e51b8152600401610b5790614007565b6110308282611c52565b610cd95760008281526098602090815260408083206001600160a01b03851684529091529020805460ff191660011790556110683390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610bf883838360405180602001604052806000815250611c97565b600060016110d460cb5490565b6110de9190613f41565b905090565b6000805160206143da8339815191526111046097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061112857506111288133611c52565b6111445760405162461bcd60e51b8152600401610b579061403c565b600083815260cc60205260409020600301546001600160a01b03166111ab5760405162461bcd60e51b815260206004820152601a60248201527f45646974696f6e206d75737420686176652061207369676e65720000000000006044820152606401610b57565b600083815260cc6020908152604091829020600201805463ffffffff60a01b1916600160a01b63ffffffff8716908102919091179091558251868152918201527f1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae910160405180910390a1505050565b60606000826001600160401b0381111561123757611237613af7565b604051908082528060200260200182016040528015611260578160200160208202803683370190505b50905060005b838110156112cb5761128f85858381811061128357611283613ec8565b90506020020135611566565b8282815181106112a1576112a1613ec8565b6001600160a01b0390921660209283029190910190910152806112c381613ef4565b915050611266565b509392505050565b6000805160206143da8339815191526112f46097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061131857506113188133611c52565b6113345760405162461bcd60e51b8152600401610b579061403c565b6001600160a01b03821661138a5760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b57565b600083815260cc602090815260409182902060030180546001600160a01b0319166001600160a01b03861690811790915591518581527f73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a53491015b60405180910390a2505050565b600054610100900460ff16158080156114115750600054600160ff909116105b8061142b5750303b15801561142b575060005460ff166001145b61148e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b57565b6000805460ff1916600117905580156114b1576000805461ff0019166101001790555b6114bb848461294e565b6114c361297f565b6114cc85611fe0565b466001146114e95781516114e79060c990602085019061364c565b505b6114f760cb80546001019055565b801561153d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000608082901c808203610938575050600090815260cd602052604090205490565b6000818152606760205260408120546001600160a01b0316806109385760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b57565b60006001600160a01b0382166116305760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b57565b506001600160a01b031660009081526068602052604090205490565b611654610bfd565b6001600160a01b0316336001600160a01b0316148061167d57506097546001600160a01b031633145b6116995760405162461bcd60e51b8152600401610b579061403c565b6116a2816129b8565b50565b6000805160206143da8339815191526116c66097546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806116ea57506116ea8133611c52565b6117065760405162461bcd60e51b8152600401610b579061403c565b600084815260cc6020526040902060020154640100000000900463ffffffff161515806117505750600084815260cc6020526040902060020154600160a01b900463ffffffff1615155b6117925760405162461bcd60e51b81526020600482015260136024820152722737b732bc34b9ba32b73a1032b234ba34b7b760691b6044820152606401610b57565b600084815260cc602052604090206117ae9060040184846136cc565b507f1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd4125898484846040516117e293929190614062565b60405180910390a150505050565b6000805160206143da8339815191526118116097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061183557506118358133611c52565b6118515760405162461bcd60e51b8152600401610b579061403c565b60008963ffffffff161161189b5760405162461bcd60e51b81526020600482015260116024820152704d75737420736574207175616e7469747960781b6044820152606401610b57565b6001600160a01b038b166118f15760405162461bcd60e51b815260206004820152601960248201527f4d757374207365742066756e64696e67526563697069656e74000000000000006044820152606401610b57565b8663ffffffff168663ffffffff161161195d5760405162461bcd60e51b815260206004820152602860248201527f456e642074696d65206d7573742062652067726561746572207468616e2073746044820152676172742074696d6560c01b6064820152608401610b57565b60cb5483146119a15760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c819591a5d1a5bdb88125160821b6044820152606401610b57565b63ffffffff851615611a03576001600160a01b038416611a035760405162461bcd60e51b815260206004820152601a60248201527f5369676e657220616464726573732063616e6e6f7420626520300000000000006044820152606401610b57565b6040518061014001604052808c6001600160a01b031681526020018b8152602001600063ffffffff1681526020018a63ffffffff1681526020018963ffffffff1681526020018863ffffffff1681526020018763ffffffff1681526020018663ffffffff168152602001856001600160a01b031681526020018381525060cc6000611a8d60cb5490565b81526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b03928316178355858501516001840155928501516002830180546060880151608089015160a08a015160c08b015160e08c015163ffffffff97881667ffffffffffffffff199096169590951764010000000094881694909402939093176fffffffffffffffff00000000000000001916600160401b9287169290920263ffffffff60601b191691909117600160601b918616919091021767ffffffffffffffff60801b1916600160801b9185169190910263ffffffff60a01b191617600160a01b939091169290920291909117905561010085015160038301805490941691161790915561012083015180519192611bb79260048501929091019061364c565b505060cb54604080516001600160a01b038f81168252602082018f905263ffffffff8e8116838501528d811660608401528c811660808401528b811660a08401528a1660c0830152881660e082015290519192507fb56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f391908190036101000190a2611c4560cb80546001019055565b5050505050505050505050565b60009182526098602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060668054610a3990613f0d565b610cd9338383612a0a565b611ca13383612733565b611cbd5760405162461bcd60e51b8152600401610b5790613f70565b611cc984848484612ad8565b50505050565b6000805160206143da833981519152611cf06097546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611d145750611d148133611c52565b611d305760405162461bcd60e51b8152600401610b579061403c565b600083815260cc602052604090819020600201805463ffffffff60801b1916600160801b63ffffffff86169081029190911790915590517f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c906113e49060019087906140ae565b6000818152606760205260409020546060906001600160a01b0316611e165760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b57565b6000611e2183611544565b600081815260cc6020526040812060040180549293509091611e4290613f0d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6e90613f0d565b8015611ebb5780601f10611e9057610100808354040283529160200191611ebb565b820191906000526020600020905b815481529060010190602001808311611e9e57829003601f168201915b50505050509050600381511115611eff5780611ed685612b0b565b604051602001611ee79291906140f6565b60405160208183030381529060405292505050919050565b611f07612c0b565b611f1085612b0b565b604051602001611ee792919061413e565b6097546001600160a01b03163314611f4b5760405162461bcd60e51b8152600401610b5790614007565b611f558282611c52565b15610cd95760008281526098602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060611fbc612c0b565b604051602001611fcc919061416d565b604051602081830303815290604052905090565b6097546001600160a01b0316331461200a5760405162461bcd60e51b8152600401610b5790614007565b6001600160a01b0381166116995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b57565b600084815260cc60205260408120600180820154600290920154919263ffffffff640100000000840481169316916120a890839061419b565b600089815260cc602052604090206002015490915063ffffffff600160601b8204811691600160801b8104821691600160a01b90910481169086166121285760405162461bcd60e51b815260206004820152601660248201527511591a5d1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610b57565b8634101561218a5760405162461bcd60e51b815260206004820152602960248201527f4d7573742073656e6420656e6f75676820746f207075726368617365207468656044820152681032b234ba34b7b71760b91b6064820152608401610b57565b428263ffffffff16116121d35760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401610b57565b428363ffffffff1611156122d5578063ffffffff168563ffffffff16106122625760405162461bcd60e51b815260206004820152603b60248201527f4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c6560448201527f2026206f70656e2061756374696f6e206e6f74207374617274656400000000006064820152608401610b57565b60008b815260cc60205260409020600301546001600160a01b03166122898b8b8e8c612c62565b6001600160a01b0316146122d05760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b6044820152606401610b57565b61233a565b8563ffffffff168563ffffffff161061233a5760405162461bcd60e51b815260206004820152602160248201527f546869732065646974696f6e20697320616c726561647920736f6c64206f75746044820152601760f91b6064820152608401610b57565b60008b815260cc60205260409020600201805463ffffffff191663ffffffff861690811790915560808c901b176123796097546001600160a01b031690565b60008d815260cc60205260409020546001600160a01b039182169116036123c35760008c815260ce6020526040812080543492906123b8908490613f58565b909155506123e59050565b60008c815260cc60205260409020546123e5906001600160a01b031634612626565b6123ef3382612e62565b6040805163ffffffff87168152602081018b9052339183918f917fc3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251910160405180910390a4505050505050505050505050565b6000805160206143da8339815191526124636097546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061248757506124878133611c52565b6124a35760405162461bcd60e51b8152600401610b579061403c565b600083815260cc6020526040808220600201805463ffffffff60601b1916600160601b63ffffffff871690810291909117909155905190917f494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c916113e4919087906140ae565b60006001600160e01b031982166380ac58cd60e01b148061253a57506001600160e01b03198216635b5e139f60e01b145b8061093857506301ffc9a760e01b6001600160e01b0319831614610938565b6000818152606760205260409020546001600160a01b03166116a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b57565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125ed82611566565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156126765760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e640000006044820152606401610b57565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b5050905080610bf85760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e74206044820152701b585e481a185d99481c995d995c9d1959607a1b6064820152608401610b57565b60008061273f83611566565b9050806001600160a01b0316846001600160a01b0316148061278657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806127aa5750836001600160a01b031661279f84610abc565b6001600160a01b0316145b949350505050565b826001600160a01b03166127c582611566565b6001600160a01b0316146128295760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b57565b6001600160a01b03821661288b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b57565b6128966000826125b8565b6001600160a01b03831660009081526068602052604081208054600192906128bf908490613f41565b90915550506001600160a01b03821660009081526068602052604081208054600192906128ed908490613f58565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff166129755760405162461bcd60e51b8152600401610b57906141ba565b610cd98282612fa4565b600054610100900460ff166129a65760405162461bcd60e51b8152600401610b57906141ba565b6129ae612ff2565b6129b6613019565b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603612a6b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b57565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612ae38484846127b2565b612aef84848484613049565b611cc95760405162461bcd60e51b8152600401610b5790614205565b606081600003612b325750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612b5c5780612b4681613ef4565b9150612b559050600a83613ff3565b9150612b36565b6000816001600160401b03811115612b7657612b76613af7565b6040519080825280601f01601f191660200182016040528015612ba0576020820181803683370190505b5090505b84156127aa57612bb5600183613f41565b9150612bc2600a86614257565b612bcd906030613f58565b60f81b818381518110612be257612be2613ec8565b60200101906001600160f81b031916908160001a905350612c04600a86613ff3565b9450612ba4565b60606000612c1a306014613147565b905046600103612c4a5780604051602001612c35919061426b565b60405160208183030381529060405291505090565b60c981604051602001612c359291906142bb565b5090565b60006401000000008210612cb85760405162461bcd60e51b815260206004820152601960248201527f5469636b6574206e756d6265722065786365656473206d6178000000000000006044820152606401610b57565b600083815260d060209081526040808320610100860480855292529091205460ff841681811c600116928315612d455760405162461bcd60e51b815260206004820152602c60248201527f496e76616c6964207469636b6574206e756d626572206f72204e465420616c7260448201526b1958591e4818db185a5b595960a21b6064820152608401610b57565b600087815260d06020908152604080832084845282528083206001861b8717905580517fd90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8818401523081830152336060820152608081018b905260a08082018b90528251808303909101815260c082019092528151919092012061190160f01b60e08301527f000000000000000000000000000000000000000000000000000000000000000060e283015261010282015261012201604051602081830303815290604052805190602001209050612e548a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085939250506132e99050565b9a9950505050505050505050565b6001600160a01b038216612eb85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b57565b6000818152606760205260409020546001600160a01b031615612f1d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b57565b6001600160a01b0382166000908152606860205260408120805460019290612f46908490613f58565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600054610100900460ff16612fcb5760405162461bcd60e51b8152600401610b57906141ba565b8151612fde90606590602085019061364c565b508051610bf890606690602084019061364c565b600054610100900460ff166129b65760405162461bcd60e51b8152600401610b57906141ba565b600054610100900460ff166130405760405162461bcd60e51b8152600401610b57906141ba565b6129b6336129b8565b60006001600160a01b0384163b1561313f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061308d903390899088908890600401614368565b6020604051808303816000875af19250505080156130c8575060408051601f3d908101601f191682019092526130c5918101906143a5565b60015b613125573d8080156130f6576040519150601f19603f3d011682016040523d82523d6000602084013e6130fb565b606091505b50805160000361311d5760405162461bcd60e51b8152600401610b5790614205565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127aa565b5060016127aa565b60606000613156836002613fbe565b613161906002613f58565b6001600160401b0381111561317857613178613af7565b6040519080825280601f01601f1916602001820160405280156131a2576020820181803683370190505b509050600360fc1b816000815181106131bd576131bd613ec8565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131ec576131ec613ec8565b60200101906001600160f81b031916908160001a9053506000613210846002613fbe565b61321b906001613f58565b90505b6001811115613293576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061324f5761324f613ec8565b1a60f81b82828151811061326557613265613ec8565b60200101906001600160f81b031916908160001a90535060049490941c9361328c816143c2565b905061321e565b5083156132e25760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b57565b9392505050565b60008060006132f88585613305565b915091506112cb81613370565b600080825160410361333b5760208301516040840151606085015160001a61332f87828585613526565b94509450505050610ff5565b82516040036133645760208301516040840151613359868383613613565b935093505050610ff5565b50600090506002610ff5565b600081600481111561338457613384614098565b0361338c5750565b60018160048111156133a0576133a0614098565b036133ed5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b57565b600281600481111561340157613401614098565b0361344e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b57565b600381600481111561346257613462614098565b036134ba5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b57565b60048160048111156134ce576134ce614098565b036116a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b57565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561355d575060009050600361360a565b8460ff16601b1415801561357557508460ff16601c14155b15613586575060009050600461360a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156135da573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166136035760006001925092505061360a565b9150600090505b94509492505050565b6000806001600160ff1b0383168161363060ff86901c601b613f58565b905061363e87828885613526565b935093505050935093915050565b82805461365890613f0d565b90600052602060002090601f01602090048101928261367a57600085556136c0565b82601f1061369357805160ff19168380011785556136c0565b828001600101855582156136c0579182015b828111156136c05782518255916020019190600101906136a5565b50612c5e929150613740565b8280546136d890613f0d565b90600052602060002090601f0160209004810192826136fa57600085556136c0565b82601f106137135782800160ff198235161785556136c0565b828001600101855582156136c0579182015b828111156136c0578235825591602001919060010190613725565b5b80821115612c5e5760008155600101613741565b6001600160e01b0319811681146116a257600080fd5b60006020828403121561377d57600080fd5b81356132e281613755565b60008083601f84011261379a57600080fd5b5081356001600160401b038111156137b157600080fd5b6020830191508360208260051b8501011115610ff557600080fd5b6000806000604084860312156137e157600080fd5b8335925060208401356001600160401b038111156137fe57600080fd5b61380a86828701613788565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015613851578351151583529284019291840191600101613833565b50909695505050505050565b60005b83811015613878578181015183820152602001613860565b83811115611cc95750506000910152565b600081518084526138a181602086016020860161385d565b601f01601f19169290920160200192915050565b6020815260006132e26020830184613889565b6000602082840312156138da57600080fd5b5035919050565b6001600160a01b03811681146116a257600080fd5b6000806040838503121561390957600080fd5b8235613914816138e1565b946020939093013593505050565b60008060006060848603121561393757600080fd5b8335613942816138e1565b92506020840135613952816138e1565b929592945050506040919091013590565b6001600160a01b038b81168252602082018b905263ffffffff8a811660408401528981166060840152888116608084015287811660a084015286811660c0840152851660e0830152831661010082015261014061012082018190526000906139cd83820185613889565b9d9c50505050505050505050505050565b600080604083850312156139f157600080fd5b50508035926020909101359150565b60008060408385031215613a1357600080fd5b823591506020830135613a25816138e1565b809150509250929050565b803563ffffffff81168114613a4457600080fd5b919050565b60008060408385031215613a5c57600080fd5b82359150613a6c60208401613a30565b90509250929050565b60008060208385031215613a8857600080fd5b82356001600160401b03811115613a9e57600080fd5b613aaa85828601613788565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156138515783516001600160a01b031683529284019291840191600101613ad2565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115613b2757613b27613af7565b604051601f8501601f19908116603f01168101908282118183101715613b4f57613b4f613af7565b81604052809350858152868686011115613b6857600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613b9357600080fd5b6132e283833560208501613b0d565b60008060008060808587031215613bb857600080fd5b8435613bc3816138e1565b935060208501356001600160401b0380821115613bdf57600080fd5b613beb88838901613b82565b94506040870135915080821115613c0157600080fd5b613c0d88838901613b82565b93506060870135915080821115613c2357600080fd5b50613c3087828801613b82565b91505092959194509250565b600060208284031215613c4e57600080fd5b81356132e2816138e1565b60008083601f840112613c6b57600080fd5b5081356001600160401b03811115613c8257600080fd5b602083019150836020828501011115610ff557600080fd5b600080600060408486031215613caf57600080fd5b8335925060208401356001600160401b03811115613ccc57600080fd5b61380a86828701613c59565b6000806000806000806000806000806101408b8d031215613cf857600080fd5b8a35613d03816138e1565b995060208b01359850613d1860408c01613a30565b9750613d2660608c01613a30565b9650613d3460808c01613a30565b9550613d4260a08c01613a30565b9450613d5060c08c01613a30565b935060e08b0135613d60816138e1565b92506101008b013591506101208b01356001600160401b03811115613d8457600080fd5b613d908d828e01613b82565b9150509295989b9194979a5092959850565b60008060408385031215613db557600080fd5b8235613dc0816138e1565b915060208301358015158114613a2557600080fd5b60008060008060808587031215613deb57600080fd5b8435613df6816138e1565b93506020850135613e06816138e1565b92506040850135915060608501356001600160401b03811115613e2857600080fd5b8501601f81018713613e3957600080fd5b613c3087823560208401613b0d565b60008060408385031215613e5b57600080fd5b8235613e66816138e1565b91506020830135613a25816138e1565b60008060008060608587031215613e8c57600080fd5b8435935060208501356001600160401b03811115613ea957600080fd5b613eb587828801613c59565b9598909750949560400135949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f0657613f06613ede565b5060010190565b600181811c90821680613f2157607f821691505b602082108103610d2357634e487b7160e01b600052602260045260246000fd5b600082821015613f5357613f53613ede565b500390565b60008219821115613f6b57613f6b613ede565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000816000190483118215151615613fd857613fd8613ede565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261400257614002613fdd565b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052602160045260246000fd5b60408101600284106140d057634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600081516140ec81856020860161385d565b9290920192915050565b6000835161410881846020880161385d565b83519083019061411c81836020880161385d565b6d17b6b2ba30b230ba30973539b7b760911b9101908152600e01949350505050565b6000835161415081846020880161385d565b83519083019061416481836020880161385d565b01949350505050565b6000825161417f81846020870161385d565b691cdd1bdc99599c9bdb9d60b21b920191825250600a01919050565b600063ffffffff80831681851680830382111561416457614164613ede565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261426657614266613fdd565b500690565b7f68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f00008152600082516142a381601e85016020870161385d565b602f60f81b601e939091019283015250601f01919050565b600080845481600182811c9150808316806142d757607f831692505b602080841082036142f657634e487b7160e01b86526022600452602486fd5b81801561430a576001811461431b57614348565b60ff19861689528489019650614348565b60008b81526020902060005b868110156143405781548b820152908501908301614327565b505084890196505b50505061435584886140da565b602f60f81b815201979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061439b90830184613889565b9695505050505050565b6000602082840312156143b757600080fd5b81516132e281613755565b6000816143d1576143d1613ede565b50600019019056fedf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42a26469706673582212203077d09b1cd9a751bb99b4b84677d38fba0617306c1c0d6bf3df3182be7b4cd364736f6c634300080e0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x288 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x15A JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE1A3D573 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE1A3D573 EQ PUSH2 0x835 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x862 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x877 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C0 JUMPI DUP1 PUSH4 0xF71E54FB EQ PUSH2 0x8E0 JUMPI DUP1 PUSH4 0xFBAB9E04 EQ PUSH2 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0xBB314CA1 EQ PUSH2 0x7A8 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x7C8 JUMPI DUP1 PUSH4 0xD3BB0528 EQ PUSH2 0x7E8 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0x8E116AEA EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x706 JUMPI DUP1 PUSH4 0x931C9B99 EQ PUSH2 0x726 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0x9725D92E EQ PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x606 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0x75A8F08F EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x666 JUMPI DUP1 PUSH4 0x79672692 EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0x79B236D2 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x5076A64D GT PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x5076A64D EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0x52E25BF2 EQ PUSH2 0x559 JUMPI DUP1 PUSH4 0x52F5C2E4 EQ PUSH2 0x579 JUMPI DUP1 PUSH4 0x56DEE996 EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0x5F1E6F6D EQ PUSH2 0x5C6 JUMPI DUP1 PUSH4 0x602787ED EQ PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A55205A EQ PUSH2 0x44D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x3EF2DBC2 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4F7 JUMPI DUP1 PUSH4 0x4BF44026 EQ PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCCA831 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0xBCCA831 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3C3 JUMPI DUP1 PUSH4 0x27399D36 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x279C806E EQ PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x65D5B85 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x349 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x376B JUMP JUMPDEST PUSH2 0x913 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH2 0x2DD CALLDATASIZE PUSH1 0x4 PUSH2 0x37CC JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x3817 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0xA2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x38B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x331 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x364 CALLDATASIZE PUSH1 0x4 PUSH2 0x38F6 JUMP JUMPDEST PUSH2 0xAE3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x331 PUSH2 0xBFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x39B CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0xC7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x3DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3922 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x437 PUSH2 0x432 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0xD5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46D PUSH2 0x468 CALLDATASIZE PUSH1 0x4 PUSH2 0x39DE JUMP JUMPDEST PUSH2 0xE5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x4A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0xFFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA SLOAD PUSH2 0x3B5 SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x512 CALLDATASIZE PUSH1 0x4 PUSH2 0x3922 JUMP JUMPDEST PUSH2 0x10AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x10C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x547 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x574 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A49 JUMP JUMPDEST PUSH2 0x10E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x599 PUSH2 0x594 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A75 JUMP JUMPDEST PUSH2 0x121B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x3AB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x5C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0x12D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BA2 JUMP JUMPDEST PUSH2 0x13F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x601 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0x1544 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x331 PUSH2 0x621 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0x1566 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x641 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C3C JUMP JUMPDEST PUSH2 0x15C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x661 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C3C JUMP JUMPDEST PUSH2 0x164C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x6A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C9A JUMP JUMPDEST PUSH2 0x16A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x6C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xD1 SSTORE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x331 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x701 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CD8 JUMP JUMPDEST PUSH2 0x17F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD PUSH2 0x721 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0x1C52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH1 0xD1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x1C7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCB SLOAD PUSH2 0x3B5 SWAP1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA2 JUMP JUMPDEST PUSH2 0x1C8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x7A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DD5 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x7C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A49 JUMP JUMPDEST PUSH2 0x1CCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x7E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH2 0x1D97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x803 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xCF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x830 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A00 JUMP JUMPDEST PUSH2 0x1F21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B5 PUSH2 0x850 CALLDATASIZE PUSH1 0x4 PUSH2 0x38C8 JUMP JUMPDEST PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x1FB2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD PUSH2 0x892 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x8DB CALLDATASIZE PUSH1 0x4 PUSH2 0x3C3C JUMP JUMPDEST PUSH2 0x1FE0 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x8EE CALLDATASIZE PUSH1 0x4 PUSH2 0x3E76 JUMP JUMPDEST PUSH2 0x206F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0x90E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A49 JUMP JUMPDEST PUSH2 0x2442 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x152A902D PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x938 JUMPI POP PUSH2 0x938 DUP3 PUSH2 0x2509 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x95A JUMPI PUSH2 0x95A PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x983 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA21 JUMPI PUSH1 0x0 PUSH2 0x9E3 DUP8 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x9A9 JUMPI PUSH2 0x9A9 PUSH2 0x3EC8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH2 0x100 DUP5 DIV DUP1 DUP7 MSTORE SWAP3 MSTORE SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP3 AND DUP2 DUP2 SHR SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP3 SWAP1 JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x1 EQ DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9FE JUMPI PUSH2 0x9FE PUSH2 0x3EC8 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP1 PUSH2 0xA19 DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x989 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x65 DUP1 SLOAD PUSH2 0xA39 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA65 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAB2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA87 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA95 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC7 DUP3 PUSH2 0x2559 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAEE DUP3 PUSH2 0x1566 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0xB7C JUMPI POP PUSH2 0xB7C DUP2 CALLER PUSH2 0x892 JUMP JUMPDEST PUSH2 0xBEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH2 0xBF8 DUP4 DUP4 PUSH2 0x25B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH1 0x1 SUB PUSH2 0xC20 JUMPI POP PUSH20 0x858A92511485715CFB754F397A7894B7724C7ABD SWAP1 JUMP JUMPDEST CHAINID PUSH1 0x4 SUB PUSH2 0xC41 JUMPI POP PUSH20 0xEE35E946DD73EF78D352454C3F915E2CA0A09D87 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x3AB739BAB83837B93A32B21031B430B4B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0xCA1 SWAP2 SWAP1 PUSH2 0x3F41 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xCF DUP4 MSTORE DUP2 DUP5 KECCAK256 SSTORE PUSH1 0xCC SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xCD9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x2626 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST PUSH1 0xCB SLOAD DUP2 LT ISZERO PUSH2 0xD23 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xD0F SWAP1 PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x3F58 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xD1B DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCE3 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD33 CALLER DUP3 PUSH2 0x2733 JUMP JUMPDEST PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x3F70 JUMP JUMPDEST PUSH2 0xBF8 DUP4 DUP4 DUP4 PUSH2 0x27B2 JUMP JUMPDEST PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP7 SWAP5 SWAP6 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH5 0x100000000 DUP8 DIV DUP3 AND SWAP7 PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP4 AND SWAP7 PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP5 AND SWAP7 PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP6 AND SWAP7 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV SWAP1 SWAP5 AND SWAP5 AND SWAP3 SWAP1 PUSH2 0xDD7 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE03 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE50 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE25 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE50 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE33 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE68 DUP6 PUSH2 0x1544 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH2 0x140 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH5 0x100000000 DUP2 DIV DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV DUP5 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV DUP5 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP5 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV SWAP1 SWAP3 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD DUP1 SLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP1 SWAP3 PUSH2 0x120 DUP5 ADD SWAP2 PUSH2 0xF23 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF4F SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF9C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF71 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF9C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF7F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 SWAP1 SWAP3 MSTORE POP POP DUP2 MLOAD SWAP2 SWAP3 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFC6 JUMPI MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0xFF5 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD DUP2 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x2710 PUSH2 0xFE3 DUP4 DUP10 PUSH2 0x3FBE JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x3FF3 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1026 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4007 JUMP JUMPDEST PUSH2 0x1030 DUP3 DUP3 PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1068 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0xBF8 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1C97 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x10D4 PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x10DE SWAP2 SWAP1 PUSH2 0x3F41 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1104 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1128 JUMPI POP PUSH2 0x1128 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1144 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45646974696F6E206D75737420686176652061207369676E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1DE856603E1E748B6F6726E7A51520FE7C63E9B801B8E4B2F8DE1A02AE0A8DAE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1260 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12CB JUMPI PUSH2 0x128F DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1283 JUMPI PUSH2 0x1283 PUSH2 0x3EC8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1566 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12A1 JUMPI PUSH2 0x12A1 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x12C3 DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1266 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x12F4 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1318 JUMPI POP PUSH2 0x1318 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1334 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x138A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD DUP6 DUP2 MSTORE PUSH32 0x73B6AB337F7463563F035A0B9F885872E16AD1B5043B679CDF802CFCBAA3A534 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1411 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x142B JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x148E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x14B1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x14BB DUP5 DUP5 PUSH2 0x294E JUMP JUMPDEST PUSH2 0x14C3 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x14CC DUP6 PUSH2 0x1FE0 JUMP JUMPDEST CHAINID PUSH1 0x1 EQ PUSH2 0x14E9 JUMPI DUP2 MLOAD PUSH2 0x14E7 SWAP1 PUSH1 0xC9 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST POP JUMPDEST PUSH2 0x14F7 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x153D JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 SWAP1 SHR DUP1 DUP3 SUB PUSH2 0x938 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xCD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1630 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1654 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x167D JUMPI POP PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1699 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH2 0x16A2 DUP2 PUSH2 0x29B8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x16C6 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x16EA JUMPI POP PUSH2 0x16EA DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1706 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x1750 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x1792 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x2737B732BC34B9BA32B73A1032B234BA34B7B7 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x17AE SWAP1 PUSH1 0x4 ADD DUP5 DUP5 PUSH2 0x36CC JUMP JUMPDEST POP PUSH32 0x1A7FCE8987747A468A9FD9D320891F1519376DAB1BAEB8E72E8D4447FD412589 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x17E2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4062 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1811 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1835 JUMPI POP PUSH2 0x1835 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1851 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH4 0xFFFFFFFF AND GT PUSH2 0x189B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4D75737420736574207175616E74697479 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH2 0x18F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374207365742066756E64696E67526563697069656E7400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST DUP7 PUSH4 0xFFFFFFFF AND DUP7 PUSH4 0xFFFFFFFF AND GT PUSH2 0x195D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E642074696D65206D7573742062652067726561746572207468616E207374 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6172742074696D65 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0xCB SLOAD DUP4 EQ PUSH2 0x19A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x15DC9BDB99C819591A5D1A5BDB881251 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND ISZERO PUSH2 0x1A03 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1A03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5369676E657220616464726573732063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0xCC PUSH1 0x0 PUSH2 0x1A8D PUSH1 0xCB SLOAD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR DUP4 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP4 ADD DUP1 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0xC0 DUP12 ADD MLOAD PUSH1 0xE0 DUP13 ADD MLOAD PUSH4 0xFFFFFFFF SWAP8 DUP9 AND PUSH8 0xFFFFFFFFFFFFFFFF NOT SWAP1 SWAP7 AND SWAP6 SWAP1 SWAP6 OR PUSH5 0x100000000 SWAP5 DUP9 AND SWAP5 SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH16 0xFFFFFFFFFFFFFFFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x60 SHL SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 MUL OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP6 AND SWAP2 SWAP1 SWAP2 MUL PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND OR PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP1 MLOAD SWAP2 SWAP3 PUSH2 0x1BB7 SWAP3 PUSH1 0x4 DUP6 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST POP POP PUSH1 0xCB SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP15 DUP2 AND DUP4 DUP6 ADD MSTORE DUP14 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP13 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP12 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP11 AND PUSH1 0xC0 DUP4 ADD MSTORE DUP9 AND PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xB56F9BA6A8AF17A142F8AD372C6FC283E81D8C6193B86AFE7F6CA901ACD698F3 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 LOG2 PUSH2 0x1C45 PUSH1 0xCB DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x66 DUP1 SLOAD PUSH2 0xA39 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST PUSH2 0xCD9 CALLER DUP4 DUP4 PUSH2 0x2A0A JUMP JUMPDEST PUSH2 0x1CA1 CALLER DUP4 PUSH2 0x2733 JUMP JUMPDEST PUSH2 0x1CBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x3F70 JUMP JUMPDEST PUSH2 0x1CC9 DUP5 DUP5 DUP5 DUP5 PUSH2 0x2AD8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1CF0 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1D14 JUMPI POP PUSH2 0x1D14 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x1D30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP1 PUSH2 0x13E4 SWAP1 PUSH1 0x1 SWAP1 DUP8 SWAP1 PUSH2 0x40AE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E16 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E21 DUP4 PUSH2 0x1544 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x4 ADD DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0x1E42 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E6E SWAP1 PUSH2 0x3F0D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1EBB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1E90 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1EBB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E9E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x3 DUP2 MLOAD GT ISZERO PUSH2 0x1EFF JUMPI DUP1 PUSH2 0x1ED6 DUP6 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EE7 SWAP3 SWAP2 SWAP1 PUSH2 0x40F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F07 PUSH2 0x2C0B JUMP JUMPDEST PUSH2 0x1F10 DUP6 PUSH2 0x2B0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EE7 SWAP3 SWAP2 SWAP1 PUSH2 0x413E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1F4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4007 JUMP JUMPDEST PUSH2 0x1F55 DUP3 DUP3 PUSH2 0x1C52 JUMP JUMPDEST ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x98 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FBC PUSH2 0x2C0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1FCC SWAP2 SWAP1 PUSH2 0x416D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x200A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1699 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF PUSH5 0x100000000 DUP5 DIV DUP2 AND SWAP4 AND SWAP2 PUSH2 0x20A8 SWAP1 DUP4 SWAP1 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0x60 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH2 0x2128 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x11591A5D1A5BDB88191BD95CC81B9BDD08195E1A5CDD PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST DUP7 CALLVALUE LT ISZERO PUSH2 0x218A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742073656E6420656E6F75676820746F20707572636861736520746865 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x1032B234BA34B7B717 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST TIMESTAMP DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x21D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x105D58DD1A5BDB881A185CC8195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST TIMESTAMP DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x22D5 JUMPI DUP1 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x2262 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F207065726D697373696F6E656420746F6B656E7320617661696C61626C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2026206F70656E2061756374696F6E206E6F7420737461727465640000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2289 DUP12 DUP12 DUP15 DUP13 PUSH2 0x2C62 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x22D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH2 0x233A JUMP JUMPDEST DUP6 PUSH4 0xFFFFFFFF AND DUP6 PUSH4 0xFFFFFFFF AND LT PUSH2 0x233A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546869732065646974696F6E20697320616C726561647920736F6C64206F7574 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x80 DUP13 SWAP1 SHL OR PUSH2 0x2379 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND SUB PUSH2 0x23C3 JUMPI PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x23B8 SWAP1 DUP5 SWAP1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x23E5 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x23E5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x23EF CALLER DUP3 PUSH2 0x2E62 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE CALLER SWAP2 DUP4 SWAP2 DUP16 SWAP2 PUSH32 0xC3E4AD784E3889561B308DF24921CF08A47410A8ED63B8AFE80C50A002EFB251 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x43DA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2463 PUSH1 0x97 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2487 JUMPI POP PUSH2 0x2487 DUP2 CALLER PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x24A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x403C JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xCC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x60 SHL NOT AND PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x494264D1227744D2D86690C5355813B007A13955626B261C2E02901A73F6F90C SWAP2 PUSH2 0x13E4 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0x40AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x253A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x938 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x938 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x25ED DUP3 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2676 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742062616C616E636520666F722073656E64000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26C3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26C8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2073656E642076616C75653A20726563697069656E7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1B585E481A185D99481C995D995C9D1959 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x273F DUP4 PUSH2 0x1566 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2786 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x27AA JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x279F DUP5 PUSH2 0xABC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C5 DUP3 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2829 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x288B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH2 0x2896 PUSH1 0x0 DUP3 PUSH2 0x25B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28BF SWAP1 DUP5 SWAP1 PUSH2 0x3F41 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x28ED SWAP1 DUP5 SWAP1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2975 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH2 0xCD9 DUP3 DUP3 PUSH2 0x2FA4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x29A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH2 0x29AE PUSH2 0x2FF2 JUMP JUMPDEST PUSH2 0x29B6 PUSH2 0x3019 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2AE3 DUP5 DUP5 DUP5 PUSH2 0x27B2 JUMP JUMPDEST PUSH2 0x2AEF DUP5 DUP5 DUP5 DUP5 PUSH2 0x3049 JUMP JUMPDEST PUSH2 0x1CC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4205 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0x2B32 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2B5C JUMPI DUP1 PUSH2 0x2B46 DUP2 PUSH2 0x3EF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B55 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x3FF3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B36 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B76 JUMPI PUSH2 0x2B76 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2BA0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x27AA JUMPI PUSH2 0x2BB5 PUSH1 0x1 DUP4 PUSH2 0x3F41 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BC2 PUSH1 0xA DUP7 PUSH2 0x4257 JUMP JUMPDEST PUSH2 0x2BCD SWAP1 PUSH1 0x30 PUSH2 0x3F58 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2BE2 JUMPI PUSH2 0x2BE2 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x2C04 PUSH1 0xA DUP7 PUSH2 0x3FF3 JUMP JUMPDEST SWAP5 POP PUSH2 0x2BA4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2C1A ADDRESS PUSH1 0x14 PUSH2 0x3147 JUMP JUMPDEST SWAP1 POP CHAINID PUSH1 0x1 SUB PUSH2 0x2C4A JUMPI DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2C35 SWAP2 SWAP1 PUSH2 0x426B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0xC9 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2C35 SWAP3 SWAP2 SWAP1 PUSH2 0x42BB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x100000000 DUP3 LT PUSH2 0x2CB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5469636B6574206E756D6265722065786365656473206D617800000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x100 DUP7 DIV DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF DUP5 AND DUP2 DUP2 SHR PUSH1 0x1 AND SWAP3 DUP4 ISZERO PUSH2 0x2D45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964207469636B6574206E756D626572206F72204E465420616C72 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x1958591E4818DB185A5B5959 PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0xD0 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP7 SHL DUP8 OR SWAP1 SSTORE DUP1 MLOAD PUSH32 0xD90AAE4F290B877E033D457AE052DBE1FE53DFF32093981847F7D4C541EBF4E8 DUP2 DUP5 ADD MSTORE ADDRESS DUP2 DUP4 ADD MSTORE CALLER PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 SWAP1 SWAP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP4 ADD MSTORE PUSH32 0x0 PUSH1 0xE2 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD MSTORE PUSH2 0x122 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x2E54 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP6 SWAP4 SWAP3 POP POP PUSH2 0x32E9 SWAP1 POP JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2EB8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2F1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x2F46 SWAP1 DUP5 SWAP1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FCB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2FDE SWAP1 PUSH1 0x65 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xBF8 SWAP1 PUSH1 0x66 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x29B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3040 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x41BA JUMP JUMPDEST PUSH2 0x29B6 CALLER PUSH2 0x29B8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x313F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x308D SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4368 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x30C8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x30C5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x43A5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3125 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x30F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x311D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB57 SWAP1 PUSH2 0x4205 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x27AA JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x27AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3156 DUP4 PUSH1 0x2 PUSH2 0x3FBE JUMP JUMPDEST PUSH2 0x3161 SWAP1 PUSH1 0x2 PUSH2 0x3F58 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3178 JUMPI PUSH2 0x3178 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x31A2 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x31BD JUMPI PUSH2 0x31BD PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x31EC JUMPI PUSH2 0x31EC PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x3210 DUP5 PUSH1 0x2 PUSH2 0x3FBE JUMP JUMPDEST PUSH2 0x321B SWAP1 PUSH1 0x1 PUSH2 0x3F58 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3293 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x324F JUMPI PUSH2 0x324F PUSH2 0x3EC8 JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3265 JUMPI PUSH2 0x3265 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x328C DUP2 PUSH2 0x43C2 JUMP JUMPDEST SWAP1 POP PUSH2 0x321E JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x32E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32F8 DUP6 DUP6 PUSH2 0x3305 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x12CB DUP2 PUSH2 0x3370 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0x333B JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x332F DUP8 DUP3 DUP6 DUP6 PUSH2 0x3526 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xFF5 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x40 SUB PUSH2 0x3364 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x3359 DUP7 DUP4 DUP4 PUSH2 0x3613 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP PUSH2 0xFF5 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 PUSH2 0xFF5 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3384 JUMPI PUSH2 0x3384 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x338C JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x33A0 JUMPI PUSH2 0x33A0 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x33ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3401 JUMPI PUSH2 0x3401 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x344E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3462 JUMPI PUSH2 0x3462 PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x34BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x34CE JUMPI PUSH2 0x34CE PUSH2 0x4098 JUMP JUMPDEST SUB PUSH2 0x16A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x355D JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x360A JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x3575 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x3586 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x360A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3603 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x360A JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP4 AND DUP2 PUSH2 0x3630 PUSH1 0xFF DUP7 SWAP1 SHR PUSH1 0x1B PUSH2 0x3F58 JUMP JUMPDEST SWAP1 POP PUSH2 0x363E DUP8 DUP3 DUP9 DUP6 PUSH2 0x3526 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x3658 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x367A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3693 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x36C0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36C0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36A5 JUMP JUMPDEST POP PUSH2 0x2C5E SWAP3 SWAP2 POP PUSH2 0x3740 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x36D8 SWAP1 PUSH2 0x3F0D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x36FA JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3713 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x36C0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x36C0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36C0 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3725 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2C5E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3741 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x16A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x377D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x32E2 DUP2 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x379A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x37E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x37FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x380A DUP7 DUP3 DUP8 ADD PUSH2 0x3788 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3851 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3833 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3878 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3860 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1CC9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x38A1 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x385D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x32E2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3889 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x16A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3914 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3942 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3952 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP12 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP11 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE DUP10 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE DUP9 DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE DUP8 DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP7 DUP2 AND PUSH1 0xC0 DUP5 ADD MSTORE DUP6 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP4 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x39CD DUP4 DUP3 ADD DUP6 PUSH2 0x3889 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3A25 DUP2 PUSH2 0x38E1 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3A44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3A6C PUSH1 0x20 DUP5 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3AAA DUP6 DUP3 DUP7 ADD PUSH2 0x3788 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3851 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3AD2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x3B27 JUMPI PUSH2 0x3B27 PUSH2 0x3AF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3B4F JUMPI PUSH2 0x3B4F PUSH2 0x3AF7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x3B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32E2 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3BB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3BC3 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3BDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BEB DUP9 DUP4 DUP10 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C0D DUP9 DUP4 DUP10 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3C23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C30 DUP8 DUP3 DUP9 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x32E2 DUP2 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3C82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x380A DUP7 DUP3 DUP8 ADD PUSH2 0x3C59 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x3CF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x3D03 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x3D18 PUSH1 0x40 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP8 POP PUSH2 0x3D26 PUSH1 0x60 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP7 POP PUSH2 0x3D34 PUSH1 0x80 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP6 POP PUSH2 0x3D42 PUSH1 0xA0 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP5 POP PUSH2 0x3D50 PUSH1 0xC0 DUP13 ADD PUSH2 0x3A30 JUMP JUMPDEST SWAP4 POP PUSH1 0xE0 DUP12 ADD CALLDATALOAD PUSH2 0x3D60 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3D84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D90 DUP14 DUP3 DUP15 ADD PUSH2 0x3B82 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DC0 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3A25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3DEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3DF6 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3E06 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3E28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x3E39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C30 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E66 DUP2 PUSH2 0x38E1 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3A25 DUP2 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3EA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EB5 DUP8 DUP3 DUP9 ADD PUSH2 0x3C59 JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3F06 JUMPI PUSH2 0x3F06 PUSH2 0x3EDE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3F21 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xD23 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3F53 JUMPI PUSH2 0x3F53 PUSH2 0x3EDE JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F6B JUMPI PUSH2 0x3F6B PUSH2 0x3EDE JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3FD8 JUMPI PUSH2 0x3FD8 PUSH2 0x3EDE JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4002 JUMPI PUSH2 0x4002 PUSH2 0x3FDD JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x2 DUP5 LT PUSH2 0x40D0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH2 0x40EC DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x385D JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4108 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x411C DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST PUSH14 0x17B6B2BA30B230BA30973539B7B7 PUSH1 0x91 SHL SWAP2 ADD SWAP1 DUP2 MSTORE PUSH1 0xE ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x4150 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4164 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x385D JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x417F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x385D JUMP JUMPDEST PUSH10 0x1CDD1BDC99599C9BDB9D PUSH1 0xB2 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0xA ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4164 JUMPI PUSH2 0x4164 PUSH2 0x3EDE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4266 JUMPI PUSH2 0x4266 PUSH2 0x3FDD JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x68747470733A2F2F6D657461646174612E736F756E642E78797A2F76312F0000 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x42A3 DUP2 PUSH1 0x1E DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x385D JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL PUSH1 0x1E SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x1F ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x42D7 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 SUB PUSH2 0x42F6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP7 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP7 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x430A JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x431B JUMPI PUSH2 0x4348 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP10 MSTORE DUP5 DUP10 ADD SWAP7 POP PUSH2 0x4348 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x4340 JUMPI DUP2 SLOAD DUP12 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP4 ADD PUSH2 0x4327 JUMP JUMPDEST POP POP DUP5 DUP10 ADD SWAP7 POP JUMPDEST POP POP POP PUSH2 0x4355 DUP5 DUP9 PUSH2 0x40DA JUMP JUMPDEST PUSH1 0x2F PUSH1 0xF8 SHL DUP2 MSTORE ADD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x439B SWAP1 DUP4 ADD DUP5 PUSH2 0x3889 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x32E2 DUP2 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x43D1 JUMPI PUSH2 0x43D1 PUSH2 0x3EDE JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP INVALID 0xDF DUP12 0x4C MSTORE 0xF INVALID NOT PUSH29 0x5343C6F5AEC59570151EF9A492F2C624FD45DDDE6135EC42A264697066 PUSH20 0x582212203077D09B1CD9A751BB99B4B84677D38F 0xBA MOD OR ADDRESS PUSH13 0x1C0D6BF3DF3182BE7B4CD36473 PUSH16 0x6C634300080E00330000000000000000 ",
              "sourceMap": "2224:22469:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18362:301;;;;;;;;;;-1:-1:-1;18362:301:44;;;;;:::i;:::-;;:::i;:::-;;;565:14:46;;558:22;540:41;;528:2;513:18;18362:301:44;;;;;;;;20083:457;;;;;;;;;;-1:-1:-1;20083:457:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2931:98:7:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;;;;;-1:-1:-1;4407:167:7;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3243:32:46;;;3225:51;;3213:2;3198:18;4407:167:7;3079:203:46;3928:418:7;;;;;;;;;;-1:-1:-1;3928:418:7;;;;;:::i;:::-;;:::i;:::-;;20647:346:44;;;;;;;;;;;;;:::i;12400:546::-;;;;;;;;;;-1:-1:-1;12400:546:44;;;;;:::i;:::-;;:::i;17941:229::-;;;;;;;;;;;;;:::i;:::-;;;3889:25:46;;;3877:2;3862:18;17941:229:44;3743:177:46;5084:327:7;;;;;;;;;;-1:-1:-1;5084:327:7;;;;;:::i;:::-;;:::i;2478:170:44:-;;;;;;;;;;;;2539:109;2478:170;;3046:43;;;;;;;;;;-1:-1:-1;3046:43:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;17320:547::-;;;;;;;;;;-1:-1:-1;17320:547:44;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;6059:32:46;;;6041:51;;6123:2;6108:18;;6101:34;;;;6014:18;17320:547:44;5867:274:46;2754:226:42;;;;;;;;;;-1:-1:-1;2754:226:42;;;;;:::i;:::-;;:::i;2752:41:44:-;;;;;;;;;;;;;;;2873:44;;;;;;;;;;-1:-1:-1;2873:44:44;;;;;;5477:179:7;;;;;;;;;;-1:-1:-1;5477:179:7;;;;;:::i;:::-;;:::i;18732:173:44:-;;;;;;;;;;;;;:::i;3156:50::-;;;;;;;;;;-1:-1:-1;3156:50:44;;;;;:::i;:::-;;;;;;;;;;;;;;14552:477;;;;;;;;;;-1:-1:-1;14552:477:44;;;;;:::i;:::-;;:::i;19561:308::-;;;;;;;;;;-1:-1:-1;19561:308:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14016:324::-;;;;;;;;;;-1:-1:-1;14016:324:44;;;;;:::i;:::-;;:::i;6275:539::-;;;;;;;;;;-1:-1:-1;6275:539:44;;;;;:::i;:::-;;:::i;19004:428::-;;;;;;;;;;-1:-1:-1;19004:428:44;;;;;:::i;:::-;;:::i;2651:218:7:-;;;;;;;;;;-1:-1:-1;2651:218:7;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;;;;;-1:-1:-1;2390:204:7;;;;;:::i;:::-;;:::i;15201:207:44:-;;;;;;;;;;-1:-1:-1;15201:207:44;;;;;:::i;:::-;;:::i;569:55:42:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;569:55:42;;15554:373:44;;;;;;;;;;-1:-1:-1;15554:373:44;;;;;:::i;:::-;;:::i;24597:94::-;;;;;;;;;;-1:-1:-1;24597:94:44;;;;;:::i;:::-;24660:10;:24;24597:94;1559:77:42;;;;;;;;;;-1:-1:-1;1623:6:42;;-1:-1:-1;;;;;1623:6:42;1559:77;;7547:1547:44;;;;;;;;;;-1:-1:-1;7547:1547:44;;;;;:::i;:::-;;:::i;3492:120:42:-;;;;;;;;;;-1:-1:-1;3492:120:42;;;;;:::i;:::-;;:::i;3639:25:44:-;;;;;;;;;;;;;;;;3093:102:7;;;;;;;;;;;;;:::i;2943:46:44:-;;;;;;;;;;-1:-1:-1;2943:46:44;;;;;;4641:153:7;;;;;;;;;;-1:-1:-1;4641:153:7;;;;;:::i;:::-;;:::i;5722:315::-;;;;;;;;;;-1:-1:-1;5722:315:7;;;;;:::i;:::-;;:::i;13583:215:44:-;;;;;;;;;;-1:-1:-1;13583:215:44;;;;;:::i;:::-;;:::i;16229:696::-;;;;;;;;;;-1:-1:-1;16229:696:44;;;;;:::i;:::-;;:::i;3426:54::-;;;;;;;;;;-1:-1:-1;3426:54:44;;;;;:::i;:::-;;;;;;;;;;;;;;3130:227:42;;;;;;;;;;-1:-1:-1;3130:227:42;;;;;:::i;:::-;;:::i;3285:54:44:-;;;;;;;;;;-1:-1:-1;3285:54:44;;;;;:::i;:::-;;;;;;;;;;;;;;17050:130;;;;;;;;;;;;;:::i;4860:162:7:-;;;;;;;;;;-1:-1:-1;4860:162:7;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;1990:190:42;;;;;;;;;;-1:-1:-1;1990:190:42;;;;;:::i;:::-;;:::i;9430:2818:44:-;;;;;;:::i;:::-;;:::i;13155:227::-;;;;;;;;;;-1:-1:-1;13155:227:44;;;;;:::i;:::-;;:::i;18362:301::-;18511:4;-1:-1:-1;;;;;;;;;18550:53:44;;;;:106;;;18607:49;18643:12;18607:35;:49::i;:::-;18531:125;18362:301;-1:-1:-1;;18362:301:44:o;20083:457::-;20213:13;20242:21;20277:14;-1:-1:-1;;;;;20266:33:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20266:33:44;;20242:57;;20315:9;20310:199;20330:25;;;20310:199;;;20377:17;20404:53;20427:10;20439:14;;20454:1;20439:17;;;;;;;:::i;:::-;;;;;;;23351:7;23973:25;;;:13;:25;;;;;;;;23836:3;23820:19;;23973:43;;;;;;;;;24113:1;23872:19;;;;24071:30;;;24070:45;;;;;23973:43;;23820:19;23217:982;20404:53;20376:81;;;;;20484:9;20497:1;20484:14;20471:7;20479:1;20471:10;;;;;;;;:::i;:::-;:27;;;:10;;;;;;;;;;;:27;-1:-1:-1;20357:3:44;;;;:::i;:::-;;;;20310:199;;;-1:-1:-1;20526:7:44;20083:457;-1:-1:-1;;;;20083:457:44:o;2931:98:7:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:7;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:7;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:7;:2;-1:-1:-1;;;;;4076:11:7;;4068:57;;;;-1:-1:-1;;;4068:57:7;;15555:2:46;4068:57:7;;;15537:21:46;15594:2;15574:18;;;15567:30;15633:34;15613:18;;;15606:62;-1:-1:-1;;;15684:18:46;;;15677:31;15725:19;;4068:57:7;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:7;;;;:62;;-1:-1:-1;4182:37:7;4199:5;929:10:12;4860:162:7;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:7;;15957:2:46;4136:171:7;;;15939:21:46;15996:2;15976:18;;;15969:30;16035:34;16015:18;;;16008:62;16106:32;16086:18;;;16079:60;16156:19;;4136:171:7;15755:426:46;4136:171:7;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;20647:346:44:-;20708:7;20731:13;20748:1;20731:18;20727:260;;-1:-1:-1;20772:42:44;;20647:346::o;20727:260::-;20835:13;20852:1;20835:18;20831:156;;-1:-1:-1;20876:42:44;;20647:346::o;20831:156::-;20949:27;;-1:-1:-1;;;20949:27:44;;16388:2:46;20949:27:44;;;16370:21:46;16427:2;16407:18;;;16400:30;-1:-1:-1;;;16446:18:46;;;16439:47;16503:18;;20949:27:44;16186:341:46;12400:546:44;12537:27;12601:31;;;:19;:31;;;;;;;;;12567:19;:31;;;;;;:65;;12601:31;12567:65;:::i;:::-;12738:31;;;;:19;:31;;;;;;;;;12704:19;:31;;;;;:65;12880:8;:20;;;;;:37;12537:95;;-1:-1:-1;12869:70:44;;-1:-1:-1;;;;;12880:37:44;12537:95;12869:10;:70::i;:::-;12452:494;12400:546;:::o;17941:229::-;17987:7;;18051:1;18033:109;18059:11;929:14:13;18054:2:44;:26;18033:109;;;18111:12;;;;:8;:12;;;;;:20;;;18102:29;;18111:20;;18102:29;;:::i;:::-;;-1:-1:-1;18082:4:44;;;;:::i;:::-;;;;18033:109;;;-1:-1:-1;18158:5:44;17941:229;-1:-1:-1;17941:229:44:o;5084:327:7:-;5273:41;929:10:12;5306:7:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:7;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;3046:43:44:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3046:43:44;;;;;;;;;;;;;;;;;-1:-1:-1;;;3046:43:44;;;;;-1:-1:-1;;;3046:43:44;;;;;-1:-1:-1;;;3046:43:44;;;;;-1:-1:-1;;;3046:43:44;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17320:547::-;17443:24;17469:21;17506:17;17526:24;17541:8;17526:14;:24::i;:::-;17560:22;17585:19;;;:8;:19;;;;;;;;17560:44;;;;;;;;;-1:-1:-1;;;;;17560:44:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17560:44:44;;;;;;;;-1:-1:-1;;;17560:44:44;;;;;;;;-1:-1:-1;;;17560:44:44;;;;;;;;-1:-1:-1;;;17560:44:44;;;;;;;;;;;;;;;;;;;;;;;;;17506;;-1:-1:-1;17560:22:44;;:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17560:44:44;;;;-1:-1:-1;;17619:24:44;;17560:44;;-1:-1:-1;;;;;;;17619:40:44;17615:107;;17683:24;;-1:-1:-1;17683:24:44;;-1:-1:-1;17675:36:44;;-1:-1:-1;17675:36:44;17615:107;17761:18;;;;17799:24;;17753:27;;;;;17853:6;17826:23;17753:27;17826:10;:23;:::i;:::-;17825:34;;;;:::i;:::-;17791:69;;;;;;;17320:547;;;;;;:::o;2754:226:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;2838:22:::1;2846:4;2852:7;2838;:22::i;:::-;2833:141;;2876:12;::::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;2876:21:42;::::1;::::0;;;;;;;:28;;-1:-1:-1;;2876:28:42::1;2900:4;2876:28;::::0;;2950:12:::1;929:10:12::0;;850:96;2950:12:42::1;-1:-1:-1::0;;;;;2923:40:42::1;2941:7;-1:-1:-1::0;;;;;2923:40:42::1;2935:4;2923:40;;;;;;;;;;2754:226:::0;;:::o;5477:179:7:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;18732:173:44:-;18779:7;18829:1;18805:21;:11;929:14:13;;838:112;18805:21:44;:25;;;;:::i;:::-;18798:32;;18732:173;:::o;14552:477::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;14840:1:44::1;14794:20:::0;;;:8:::1;:20;::::0;;;;:34:::1;;::::0;-1:-1:-1;;;;;14794:34:44::1;14786:87;;;::::0;-1:-1:-1;;;14786:87:44;;18544:2:46;14786:87:44::1;::::0;::::1;18526:21:46::0;18583:2;18563:18;;;18556:30;18622:28;18602:18;;;18595:56;18668:18;;14786:87:44::1;18342:350:46::0;14786:87:44::1;14884:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:41:::1;;:65:::0;;-1:-1:-1;;;;14884:65:44::1;-1:-1:-1::0;;;14884:65:44::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;14964:58;;18869:25:46;;;18910:18;;;18903:51;14964:58:44::1;::::0;18842:18:46;14964:58:44::1;;;;;;;14552:477:::0;;;:::o;19561:308::-;19640:16;19668:23;19708:9;-1:-1:-1;;;;;19694:31:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19694:31:44;;19668:57;;19740:9;19735:105;19755:20;;;19735:105;;;19808:21;19816:9;;19826:1;19816:12;;;;;;;:::i;:::-;;;;;;;19808:7;:21::i;:::-;19796:6;19803:1;19796:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19796:33:44;;;:9;;;;;;;;;;;:33;19777:3;;;;:::i;:::-;;;;19735:105;;;-1:-1:-1;19856:6:44;19561:308;-1:-1:-1;;;19561:308:44:o;14016:324::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;14144:31:44;::::1;14136:70;;;::::0;-1:-1:-1;;;14136:70:44;;19167:2:46;14136:70:44::1;::::0;::::1;19149:21:46::0;19206:2;19186:18;;;19179:30;19245:28;19225:18;;;19218:56;19291:18;;14136:70:44::1;18965:350:46::0;14136:70:44::1;14217:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:34:::1;;:54:::0;;-1:-1:-1;;;;;;14217:54:44::1;-1:-1:-1::0;;;;;14217:54:44;::::1;::::0;;::::1;::::0;;;14286:47;;3889:25:46;;;14286:47:44::1;::::0;3862:18:46;14286:47:44::1;;;;;;;;14016:324:::0;;;:::o;6275:539::-;3111:19:5;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:5;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:5;1476:19:11;:23;;;3219:66:5;;-1:-1:-1;3268:12:5;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:5;;19522:2:46;3157:201:5;;;19504:21:46;19561:2;19541:18;;;19534:30;19600:34;19580:18;;;19573:62;-1:-1:-1;;;19651:18:46;;;19644:44;19705:19;;3157:201:5;19320:410:46;3157:201:5;3368:12;:16;;-1:-1:-1;;3368:16:5;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:5;;;;;3394:65;6446:29:44::1;6460:5;6467:7;6446:13;:29::i;:::-;6485:22;:20;:22::i;:::-;6579:25;6597:6;6579:17;:25::i;:::-;6665:13;6682:1;6665:18;6661:67;;6699:18:::0;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;6661:67;6784:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;6784:23:44::1;3483:14:5::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:5;;;3553:14;;-1:-1:-1;19887:36:46;;3553:14:5;;19875:2:46;19860:18;3553:14:5;;;;;;;3479:99;3101:483;6275:539:44;;;;:::o;19004:428::-;19067:7;19182:3;19170:15;;;19283:14;;;19279:120;;-1:-1:-1;;19363:25:44;;;;:15;:25;;;;;;;19004:428::o;2651:218:7:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:7;;2784:56;;;;-1:-1:-1;;;2784:56:7;;20136:2:46;2784:56:7;;;20118:21:46;20175:2;20155:18;;;20148:30;-1:-1:-1;;;20194:18:46;;;20187:54;20258:18;;2784:56:7;19934:348:46;2390:204:7;2462:7;-1:-1:-1;;;;;2489:19:7;;2481:73;;;;-1:-1:-1;;;2481:73:7;;20489:2:46;2481:73:7;;;20471:21:46;20528:2;20508:18;;;20501:30;20567:34;20547:18;;;20540:62;-1:-1:-1;;;20618:18:46;;;20611:39;20667:19;;2481:73:7;20287:405:46;2481:73:7;-1:-1:-1;;;;;;2571:16:7;;;;;:9;:16;;;;;;;2390:204::o;15201:207:44:-;15289:22;:20;:22::i;:::-;-1:-1:-1;;;;;15273:38:44;929:10:12;-1:-1:-1;;;;;15273:38:44;;:65;;;-1:-1:-1;1623:6:42;;-1:-1:-1;;;;;1623:6:42;929:10:12;15315:23:44;15273:65;15265:90;;;;-1:-1:-1;;;15265:90:44;;;;;;;:::i;:::-;15366:35;15391:9;15366:24;:35::i;:::-;15201:207;:::o;15554:373::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;15727:1:44::1;15695:20:::0;;;:8:::1;:20;::::0;;;;:29:::1;;::::0;;;::::1;;;:33:::0;;;:82:::1;;-1:-1:-1::0;15776:1:44::1;15732:20:::0;;;:8:::1;:20;::::0;;;;:41:::1;;::::0;-1:-1:-1;;;15732:41:44;::::1;;;:45:::0;;15695:82:::1;15674:148;;;::::0;-1:-1:-1;;;15674:148:44;;20899:2:46;15674:148:44::1;::::0;::::1;20881:21:46::0;20938:2;20918:18;;;20911:30;-1:-1:-1;;;20957:18:46;;;20950:49;21016:18;;15674:148:44::1;20697:343:46::0;15674:148:44::1;15833:20;::::0;;;:8:::1;:20;::::0;;;;:39:::1;::::0;:28:::1;;15864:8:::0;;15833:39:::1;:::i;:::-;;15888:32;15899:10;15911:8;;15888:32;;;;;;;;:::i;:::-;;;;;;;;15554:373:::0;;;;:::o;7547:1547::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;7946:1:44::1;7934:9;:13;;;7926:43;;;::::0;-1:-1:-1;;;7926:43:44;;21713:2:46;7926:43:44::1;::::0;::::1;21695:21:46::0;21752:2;21732:18;;;21725:30;-1:-1:-1;;;21771:18:46;;;21764:47;21828:18;;7926:43:44::1;21511:341:46::0;7926:43:44::1;-1:-1:-1::0;;;;;7987:31:44;::::1;7979:69;;;::::0;-1:-1:-1;;;7979:69:44;;22059:2:46;7979:69:44::1;::::0;::::1;22041:21:46::0;22098:2;22078:18;;;22071:30;22137:27;22117:18;;;22110:55;22182:18;;7979:69:44::1;21857:349:46::0;7979:69:44::1;8077:10;8066:21;;:8;:21;;;8058:74;;;::::0;-1:-1:-1;;;8058:74:44;;22413:2:46;8058:74:44::1;::::0;::::1;22395:21:46::0;22452:2;22432:18;;;22425:30;22491:34;22471:18;;;22464:62;-1:-1:-1;;;22542:18:46;;;22535:38;22590:19;;8058:74:44::1;22211:404:46::0;8058:74:44::1;8164:11;929:14:13::0;8150:10:44::1;:35;8142:64;;;::::0;-1:-1:-1;;;8142:64:44;;22822:2:46;8142:64:44::1;::::0;::::1;22804:21:46::0;22861:2;22841:18;;;22834:30;-1:-1:-1;;;22880:18:46;;;22873:46;22936:18;;8142:64:44::1;22620:340:46::0;8142:64:44::1;8221:25;::::0;::::1;::::0;8217:123:::1;;-1:-1:-1::0;;;;;8270:28:44;::::1;8262:67;;;::::0;-1:-1:-1;;;8262:67:44;;19167:2:46;8262:67:44::1;::::0;::::1;19149:21:46::0;19206:2;19186:18;;;19179:30;19245:28;19225:18;;;19218:56;19291:18;;8262:67:44::1;18965:350:46::0;8262:67:44::1;8384:386;;;;;;;;8424:17;-1:-1:-1::0;;;;;8384:386:44::1;;;;;8462:6;8384:386;;;;8491:1;8384:386;;;;;;8516:9;8384:386;;;;;;8551:11;8384:386;;;;;;8587:10;8384:386;;;;;;8620:8;8384:386;;;;;;8664:21;8384:386;;;;;;8714:14;-1:-1:-1::0;;;;;8384:386:44::1;;;;;8751:8;8384:386;;::::0;8350:8:::1;:31;8359:21;:11;929:14:13::0;;838:112;8359:21:44::1;8350:31:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;8350:31:44;:420;;;;-1:-1:-1;;;;;;8350:420:44;;::::1;-1:-1:-1::0;;;;;8350:420:44;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;8350:420:44;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;8350:420:44;;;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;8350:420:44;-1:-1:-1;;;8350:420:44;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8350:420:44;;;;;-1:-1:-1;;;8350:420:44;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;8350:420:44;-1:-1:-1;;;8350:420:44;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;8350:420:44;;-1:-1:-1;;;8350:420:44;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;:31;;:420:::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;8814:11:44::1;929:14:13::0;8786:267:44::1;::::0;;-1:-1:-1;;;;;23362:15:46;;;23344:34;;23409:2;23394:18;;23387:34;;;23440:10;23486:15;;;23466:18;;;23459:43;23538:15;;;23533:2;23518:18;;23511:43;23591:15;;;23585:3;23570:19;;23563:44;23644:15;;;23324:3;23623:19;;23616:44;23697:15;;23691:3;23676:19;;23669:44;23750:15;;23744:3;23729:19;;23722:44;8786:267:44;;929:14:13;;-1:-1:-1;8786:267:44::1;::::0;;;;;23293:3:46;8786:267:44;;::::1;9064:23;:11;1043:19:13::0;;1061:1;1043:19;;;956:123;9064:23:44::1;7547:1547:::0;;;;;;;;;;;:::o;3492:120:42:-;3561:4;3584:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3584:21:42;;;;;;;;;;;;;;;3492:120::o;3093:102:7:-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:7;4778;4735:18;:52::i;5722:315::-;5890:41;929:10:12;5923:7:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:7;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;13583:215:44:-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;13687:20:44::1;::::0;;;:8:::1;:20;::::0;;;;;;:28:::1;;:39:::0;;-1:-1:-1;;;;13687:39:44::1;-1:-1:-1::0;;;13687:39:44::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13741:50;;::::1;::::0;::::1;::::0;-1:-1:-1;;13687:20:44;;13741:50:::1;:::i;16229:696::-:0;7571:4:7;7594:16;;;:7;:16;;;;;;16295:13:44;;-1:-1:-1;;;;;7594:16:7;16320:77:44;;;;-1:-1:-1;;;16320:77:44;;24529:2:46;16320:77:44;;;24511:21:46;24568:2;24548:18;;;24541:30;24607:34;24587:18;;;24580:62;-1:-1:-1;;;24658:18:46;;;24651:45;24713:19;;16320:77:44;24327:411:46;16320:77:44;16408:17;16428:24;16443:8;16428:14;:24::i;:::-;16463:28;16494:19;;;:8;:19;;;;;:27;;16463:58;;16408:44;;-1:-1:-1;16463:28:44;;:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16730:1;16705:14;16699:28;:32;16695:145;;;16768:14;16784:26;16801:8;16784:16;:26::i;:::-;16754:75;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16747:82;;;;16229:696;;;:::o;16695:145::-;16871:18;:16;:18::i;:::-;16891:26;16908:8;16891:16;:26::i;:::-;16857:61;;;;;;;;;:::i;3130:227:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;3214:22:::1;3222:4;3228:7;3214;:22::i;:::-;3210:141;;;3276:5;3252:12:::0;;;:6:::1;:12;::::0;;;;;;;-1:-1:-1;;;;;3252:21:42;::::1;::::0;;;;;;;;:29;;-1:-1:-1;;3252:29:42::1;::::0;;3300:40;929:10:12;;3252:12:42;;3300:40:::1;::::0;3276:5;3300:40:::1;3130:227:::0;;:::o;17050:130:44:-;17094:13;17140:18;:16;:18::i;:::-;17126:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;17119:54;;17050:130;:::o;1990:190:42:-;1623:6;;-1:-1:-1;;;;;1623:6:42;929:10:12;1763:23:42;1755:68;;;;-1:-1:-1;;;1755:68:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;2070:22:42;::::1;2062:73;;;::::0;-1:-1:-1;;;2062:73:42;;26696:2:46;2062:73:42::1;::::0;::::1;26678:21:46::0;26735:2;26715:18;;;26708:30;26774:34;26754:18;;;26747:62;-1:-1:-1;;;26825:18:46;;;26818:36;26871:19;;2062:73:42::1;26494:402:46::0;9430:2818:44;9630:13;9646:20;;;:8;:20;;;;;:26;;;;;9700:29;;;;;9646:26;;9700:29;;;;;;;9756:28;;9814:11;;9756:28;;9814:11;:::i;:::-;9835:16;9854:20;;;:8;:20;;;;;:30;;;9794:31;;-1:-1:-1;9854:30:44;-1:-1:-1;;;9854:30:44;;;;;-1:-1:-1;;;9911:28:44;;;;;-1:-1:-1;;;9979:41:44;;;;;;10183:12;;10175:47;;;;-1:-1:-1;;;10175:47:44;;27336:2:46;10175:47:44;;;27318:21:46;27375:2;27355:18;;;27348:30;-1:-1:-1;;;27394:18:46;;;27387:52;27456:18;;10175:47:44;27134:346:46;10175:47:44;10316:5;10303:9;:18;;10295:72;;;;-1:-1:-1;;;10295:72:44;;27687:2:46;10295:72:44;;;27669:21:46;27726:2;27706:18;;;27699:30;27765:34;27745:18;;;27738:62;-1:-1:-1;;;27816:18:46;;;27809:39;27865:19;;10295:72:44;27485:405:46;10295:72:44;10447:15;10437:7;:25;;;10429:55;;;;-1:-1:-1;;;10429:55:44;;28097:2:46;10429:55:44;;;28079:21:46;28136:2;28116:18;;;28109:30;-1:-1:-1;;;28155:18:46;;;28148:47;28212:18;;10429:55:44;27895:341:46;10429:55:44;10562:15;10550:9;:27;;;10546:749;;;10677:20;10667:30;;:7;:30;;;10659:102;;;;-1:-1:-1;;;10659:102:44;;28443:2:46;10659:102:44;;;28425:21:46;28482:2;28462:18;;;28455:30;28521:34;28501:18;;;28494:62;28592:29;28572:18;;;28565:57;28639:19;;10659:102:44;28241:423:46;10659:102:44;10903:20;;;;:8;:20;;;;;:34;;;-1:-1:-1;;;;;10903:34:44;10851:48;10861:10;;10912;10885:13;10851:9;:48::i;:::-;-1:-1:-1;;;;;10851:86:44;;10826:159;;;;-1:-1:-1;;;10826:159:44;;28871:2:46;10826:159:44;;;28853:21:46;28910:2;28890:18;;;28883:30;-1:-1:-1;;;28929:18:46;;;28922:44;28983:18;;10826:159:44;28669:338:46;10826:159:44;10546:749;;;11238:8;11228:18;;:7;:18;;;11220:64;;;;-1:-1:-1;;;11220:64:44;;29214:2:46;11220:64:44;;;29196:21:46;29253:2;29233:18;;;29226:30;29292:34;29272:18;;;29265:62;-1:-1:-1;;;29343:18:46;;;29336:31;29384:19;;11220:64:44;29012:397:46;11220:64:44;11373:15;11547:20;;;:8;:20;;;;;:28;;:41;;-1:-1:-1;;11547:41:44;11432:32;;;11547:41;;;;;;11447:3;11433:17;;;11432:32;11769:7;1623:6:42;;-1:-1:-1;;;;;1623:6:42;;1559:77;11769:7:44;11728:20;;;;:8;:20;;;;;:37;-1:-1:-1;;;;;11728:48:44;;;:37;;:48;11724:324;;11850:31;;;;:19;:31;;;;;:44;;11885:9;;11850:31;:44;;11885:9;;11850:44;:::i;:::-;;;;-1:-1:-1;11724:324:44;;-1:-1:-1;11724:324:44;;11988:20;;;;:8;:20;;;;;:37;11977:60;;-1:-1:-1;;;;;11988:37:44;12027:9;11977:10;:60::i;:::-;12123:26;12129:10;12141:7;12123:5;:26::i;:::-;12165:76;;;29616:10:46;29604:23;;29586:42;;29659:2;29644:18;;29637:34;;;12215:10:44;;12194:7;;12182:10;;12165:76;;29559:18:46;12165:76:44;;;;;;;9567:2681;;;;;;;;9430:2818;;;;:::o;13155:227::-;-1:-1:-1;;;;;;;;;;;3813:7:42;1623:6;;-1:-1:-1;;;;;1623:6:42;;1559:77;3813:7;-1:-1:-1;;;;;3797:23:42;929:10:12;-1:-1:-1;;;;;3797:23:42;;:54;;;-1:-1:-1;3824:27:42;3832:4;929:10:12;3492:120:42;:::i;3824:27::-;3789:79;;;;-1:-1:-1;;;3789:79:42;;;;;;;:::i;:::-;13263:20:44::1;::::0;;;:8:::1;:20;::::0;;;;;:30:::1;;:43:::0;;-1:-1:-1;;;;13263:43:44::1;-1:-1:-1::0;;;13263:43:44::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13321:54;;13263:43;;13321:54:::1;::::0;::::1;::::0;13263:20;;;13321:54:::1;:::i;1987:344:7:-:0;2111:4;-1:-1:-1;;;;;;2146:51:7;;-1:-1:-1;;;2146:51:7;;:126;;-1:-1:-1;;;;;;;2213:59:7;;-1:-1:-1;;;2213:59:7;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:17;;;2288:36:7;1060:166:17;12173:133:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;12246:53;;;;-1:-1:-1;;;12246:53:7;;20136:2:46;12246:53:7;;;20118:21:46;20175:2;20155:18;;;20148:30;-1:-1:-1;;;20194:18:46;;;20187:54;20258:18;;12246:53:7;19934:348:46;11464:182:7;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:7;-1:-1:-1;;;;;11538:29:7;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:7;;;;;;;;;;;11464:182;;:::o;21253:308:44:-;21369:7;21344:21;:32;;21336:74;;;;-1:-1:-1;;;21336:74:44;;29884:2:46;21336:74:44;;;29866:21:46;29923:2;29903:18;;;29896:30;29962:31;29942:18;;;29935:59;30011:18;;21336:74:44;29682:353:46;21336:74:44;21422:12;21440:10;-1:-1:-1;;;;;21440:15:44;21463:7;21440:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21421:54;;;21493:7;21485:69;;;;-1:-1:-1;;;21485:69:44;;30452:2:46;21485:69:44;;;30434:21:46;30491:2;30471:18;;;30464:30;30530:34;30510:18;;;30503:62;-1:-1:-1;;;30581:18:46;;;30574:47;30638:19;;21485:69:44;30250:413:46;7789:272:7;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:7;:7;-1:-1:-1;;;;;7966:16:7;;:52;;;-1:-1:-1;;;;;;4980:25:7;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:7;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:7;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:7:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:7;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:7;;10855:92;;;;-1:-1:-1;;;10855:92:7;;30870:2:46;10855:92:7;;;30852:21:46;30909:2;30889:18;;;30882:30;30948:34;30928:18;;;30921:62;-1:-1:-1;;;30999:18:46;;;30992:35;31044:19;;10855:92:7;30668:401:46;10855:92:7;-1:-1:-1;;;;;10965:16:7;;10957:65;;;;-1:-1:-1;;;10957:65:7;;31276:2:46;10957:65:7;;;31258:21:46;31315:2;31295:18;;;31288:30;31354:34;31334:18;;;31327:62;-1:-1:-1;;;31405:18:46;;;31398:34;31449:19;;10957:65:7;31074:400:46;10957:65:7;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:7;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:7;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:7;-1:-1:-1;;;;;11232:21:7;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1605:149::-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1708:39:7::1;1732:5;1739:7;1708:23;:39::i;1217:143:42:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1285:26:42::1;:24;:26::i;:::-;1321:32;:30;:32::i;:::-;1217:143::o:0;2334:179::-;2418:6;;;-1:-1:-1;;;;;2434:17:42;;;-1:-1:-1;;;;;;2434:17:42;;;;;;;2466:40;;2418:6;;;2434:17;2418:6;;2466:40;;2399:16;;2466:40;2389:124;2334:179;:::o;11782:307:7:-;11932:8;-1:-1:-1;;;;;11923:17:7;:5;-1:-1:-1;;;;;11923:17:7;;11915:55;;;;-1:-1:-1;;;11915:55:7;;32093:2:46;11915:55:7;;;32075:21:46;32132:2;32112:18;;;32105:30;32171:27;32151:18;;;32144:55;32216:18;;11915:55:7;31891:349:46;11915:55:7;-1:-1:-1;;;;;11980:25:7;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:7;;;;;;;;;;12041:41;;540::46;;;12041::7;;513:18:46;12041:41:7;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:7;;;;;;;:::i;392:703:30:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:30;;;;;;;;;;;;-1:-1:-1;;;691:10:30;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:30;;-1:-1:-1;837:2:30;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;-1:-1:-1;;;;;881:17:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:30;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:30;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:30;;;;;;;;-1:-1:-1;1036:11:30;1045:2;1036:11;;:::i;:::-;;;908:150;;24205:386:44;24255:13;24280:29;24312:56;24356:4;24365:2;24312:19;:56::i;:::-;24280:88;;24382:13;24399:1;24382:18;24378:207;;24471:15;24423:69;;;;;;;;:::i;:::-;;;;;;;;;;;;;24416:76;;;24205:386;:::o;24378:207::-;24544:7;24553:15;24530:44;;;;;;;;;:::i;24378:207::-;24270:321;24205:386;:::o;21853:1207::-;21989:7;22200:5;22184:13;:21;22176:59;;;;-1:-1:-1;;;22176:59:44;;35120:2:46;22176:59:44;;;35102:21:46;35159:2;35139:18;;;35132:30;35198:27;35178:18;;;35171:55;35243:18;;22176:59:44;34918:349:46;22176:59:44;22291:17;23973:25;;;:13;:25;;;;;;;;23836:3;23820:19;;23973:43;;;;;;;;;23872:19;;;24071:30;;;24113:1;24070:45;;22497:14;;22489:71;;;;-1:-1:-1;;;22489:71:44;;35474:2:46;22489:71:44;;;35456:21:46;35513:2;35493:18;;;35486:30;35552:34;35532:18;;;35525:62;-1:-1:-1;;;35603:18:46;;;35596:42;35655:19;;22489:71:44;35272:408:46;22489:71:44;22645:25;;;;:13;:25;;;;;;;;:43;;;;;;;;22713:1;22705:30;;22691:45;;22645:91;;22893:92;;2539:109;22893:92;;;35944:25:46;22940:4:44;36023:18:46;;;36016:43;22947:10:44;36075:18:46;;;36068:43;36127:18;;;36120:34;;;36170:19;;;;36163:35;;;22893:92:44;;;;;;;;;;35916:19:46;;;22893:92:44;;;22883:103;;;;;;;-1:-1:-1;;;22787:213:44;;;36467:27:46;22849:16:44;36510:11:46;;;36503:27;36546:12;;;36539:28;36583:12;;22787:213:44;;;;;;;;;;;;22764:246;;;;;;22747:263;;23027:26;23042:10;;23027:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23027:6:44;;:26;-1:-1:-1;;23027:14:44;:26;-1:-1:-1;23027:26:44:i;:::-;23020:33;21853:1207;-1:-1:-1;;;;;;;;;;21853:1207:44:o;9351:427:7:-;-1:-1:-1;;;;;9430:16:7;;9422:61;;;;-1:-1:-1;;;9422:61:7;;36808:2:46;9422:61:7;;;36790:21:46;;;36827:18;;;36820:30;36886:34;36866:18;;;36859:62;36938:18;;9422:61:7;36606:356:46;9422:61:7;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:7;:30;9493:58;;;;-1:-1:-1;;;9493:58:7;;37169:2:46;9493:58:7;;;37151:21:46;37208:2;37188:18;;;37181:30;37247;37227:18;;;37220:58;37295:18;;9493:58:7;36967:352:46;9493:58:7;-1:-1:-1;;;;;9618:13:7;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:7;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:7;-1:-1:-1;;;;;9646:21:7;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;12452:494:44;12400:546;:::o;1760:160:7:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1873:13:7;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1896:17:7;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;776:69:12:-:0;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;1366:117:42:-;4910:13:5;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:5;;;;;;;:::i;:::-;1444:32:42::1;929:10:12::0;1444:18:42::1;:32::i;12858:853:7:-:0;13007:4;-1:-1:-1;;;;;13027:13:7;;1476:19:11;:23;13023:682:7;;13062:82;;-1:-1:-1;;;13062:82:7;;-1:-1:-1;;;;;13062:47:7;;;;;:82;;929:10:12;;13124:4:7;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:7;;;;;;;;-1:-1:-1;;13062:82:7;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:7;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:7;-1:-1:-1;;;13194:62:7;;-1:-1:-1;13187:69:7;;13023:682;-1:-1:-1;13690:4:7;13683:11;;1652:441:30;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;-1:-1:-1;;;;;1774:25:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:30;;1752:47;;-1:-1:-1;;;1809:6:30;1816:1;1809:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1809:15:30;;;;;;;;;-1:-1:-1;;;1834:6:30;1841:1;1834:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1834:15:30;;;;;;;;-1:-1:-1;1864:9:30;1876:10;1880:6;1876:1;:10;:::i;:::-;:14;;1889:1;1876:14;:::i;:::-;1864:26;;1859:132;1896:1;1892;:5;1859:132;;;-1:-1:-1;;;1943:5:30;1951:3;1943:11;1930:25;;;;;;;:::i;:::-;;;;1918:6;1925:1;1918:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;1918:37:30;;;;;;;;-1:-1:-1;1979:1:30;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:30;;2000:55;;;;-1:-1:-1;;;2000:55:30;;38426:2:46;2000:55:30;;;38408:21:46;;;38445:18;;;38438:30;38504:34;38484:18;;;38477:62;38556:18;;2000:55:30;38224:356:46;2000:55:30;2079:6;1652:441;-1:-1:-1;;;1652:441:30:o;4402:227:31:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:31;;-1:-1:-1;3563:35:31;3543:56;;548:631;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;766:34;;-1:-1:-1;;;766:34:31;;38787:2:46;766:34:31;;;38769:21:46;38826:2;38806:18;;;38799:30;38865:26;38845:18;;;38838:54;38909:18;;766:34:31;38585:348:46;708:465:31;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;881:41;;-1:-1:-1;;;881:41:31;;39140:2:46;881:41:31;;;39122:21:46;39179:2;39159:18;;;39152:30;39218:33;39198:18;;;39191:61;39269:18;;881:41:31;38938:355:46;817:356:31;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;998:44;;-1:-1:-1;;;998:44:31;;39500:2:46;998:44:31;;;39482:21:46;39539:2;39519:18;;;39512:30;39578:34;39558:18;;;39551:62;-1:-1:-1;;;39629:18:46;;;39622:32;39671:19;;998:44:31;39298:398:46;939:234:31;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;1118:44;;-1:-1:-1;;;1118:44:31;;39903:2:46;1118:44:31;;;39885:21:46;39942:2;39922:18;;;39915:30;39981:34;39961:18;;;39954:62;-1:-1:-1;;;40032:18:46;;;40025:32;40074:19;;1118:44:31;39701:398:46;5810:1603:31;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:31;;-1:-1:-1;6962:30:31;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:31;;-1:-1:-1;7071:30:31;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;40331:25:46;;;40404:4;40392:17;;40372:18;;;40365:45;;;;40426:18;;;40419:34;;;40469:18;;;40462:34;;;7224:24:31;;40303:19:46;;7224:24:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:31;;-1:-1:-1;;7224:24:31;;;-1:-1:-1;;;;;;;7262:20:31;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:31;;-1:-1:-1;5810:1603:31;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:31;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:46;-1:-1:-1;;;;;;88:32:46;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:367::-;655:8;665:6;719:3;712:4;704:6;700:17;696:27;686:55;;737:1;734;727:12;686:55;-1:-1:-1;760:20:46;;-1:-1:-1;;;;;792:30:46;;789:50;;;835:1;832;825:12;789:50;872:4;864:6;860:17;848:29;;932:3;925:4;915:6;912:1;908:14;900:6;896:27;892:38;889:47;886:67;;;949:1;946;939:12;964:505;1059:6;1067;1075;1128:2;1116:9;1107:7;1103:23;1099:32;1096:52;;;1144:1;1141;1134:12;1096:52;1180:9;1167:23;1157:33;;1241:2;1230:9;1226:18;1213:32;-1:-1:-1;;;;;1260:6:46;1257:30;1254:50;;;1300:1;1297;1290:12;1254:50;1339:70;1401:7;1392:6;1381:9;1377:22;1339:70;:::i;:::-;964:505;;1428:8;;-1:-1:-1;1313:96:46;;-1:-1:-1;;;;964:505:46:o;1474:642::-;1639:2;1691:21;;;1761:13;;1664:18;;;1783:22;;;1610:4;;1639:2;1862:15;;;;1836:2;1821:18;;;1610:4;1905:185;1919:6;1916:1;1913:13;1905:185;;;1994:13;;1987:21;1980:29;1968:42;;2065:15;;;;2030:12;;;;1941:1;1934:9;1905:185;;;-1:-1:-1;2107:3:46;;1474:642;-1:-1:-1;;;;;;1474:642:46:o;2121:258::-;2193:1;2203:113;2217:6;2214:1;2211:13;2203:113;;;2293:11;;;2287:18;2274:11;;;2267:39;2239:2;2232:10;2203:113;;;2334:6;2331:1;2328:13;2325:48;;;-1:-1:-1;;2369:1:46;2351:16;;2344:27;2121:258::o;2384:269::-;2437:3;2475:5;2469:12;2502:6;2497:3;2490:19;2518:63;2574:6;2567:4;2562:3;2558:14;2551:4;2544:5;2540:16;2518:63;:::i;:::-;2635:2;2614:15;-1:-1:-1;;2610:29:46;2601:39;;;;2642:4;2597:50;;2384:269;-1:-1:-1;;2384:269:46:o;2658:231::-;2807:2;2796:9;2789:21;2770:4;2827:56;2879:2;2868:9;2864:18;2856:6;2827:56;:::i;2894:180::-;2953:6;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;-1:-1:-1;3045:23:46;;2894:180;-1:-1:-1;2894:180:46:o;3287:131::-;-1:-1:-1;;;;;3362:31:46;;3352:42;;3342:70;;3408:1;3405;3398:12;3423:315;3491:6;3499;3552:2;3540:9;3531:7;3527:23;3523:32;3520:52;;;3568:1;3565;3558:12;3520:52;3607:9;3594:23;3626:31;3651:5;3626:31;:::i;:::-;3676:5;3728:2;3713:18;;;;3700:32;;-1:-1:-1;;;3423:315:46:o;3925:456::-;4002:6;4010;4018;4071:2;4059:9;4050:7;4046:23;4042:32;4039:52;;;4087:1;4084;4077:12;4039:52;4126:9;4113:23;4145:31;4170:5;4145:31;:::i;:::-;4195:5;-1:-1:-1;4252:2:46;4237:18;;4224:32;4265:33;4224:32;4265:33;:::i;:::-;3925:456;;4317:7;;-1:-1:-1;;;4371:2:46;4356:18;;;;4343:32;;3925:456::o;4568:1041::-;-1:-1:-1;;;;;5033:15:46;;;5015:34;;5080:2;5065:18;;5058:34;;;5111:10;5157:15;;;5152:2;5137:18;;5130:43;5209:15;;;5204:2;5189:18;;5182:43;5262:15;;;5256:3;5241:19;;5234:44;5315:15;;;4995:3;5294:19;;5287:44;5368:15;;;5362:3;5347:19;;5340:44;5421:15;;5415:3;5400:19;;5393:44;5474:15;;5468:3;5453:19;;5446:44;4965:3;5521;5506:19;;5499:31;;;4936:4;;5547:56;5584:18;;;5576:6;5547:56;:::i;:::-;5539:64;4568:1041;-1:-1:-1;;;;;;;;;;;;;4568:1041:46:o;5614:248::-;5682:6;5690;5743:2;5731:9;5722:7;5718:23;5714:32;5711:52;;;5759:1;5756;5749:12;5711:52;-1:-1:-1;;5782:23:46;;;5852:2;5837:18;;;5824:32;;-1:-1:-1;5614:248:46:o;6146:315::-;6214:6;6222;6275:2;6263:9;6254:7;6250:23;6246:32;6243:52;;;6291:1;6288;6281:12;6243:52;6327:9;6314:23;6304:33;;6387:2;6376:9;6372:18;6359:32;6400:31;6425:5;6400:31;:::i;:::-;6450:5;6440:15;;;6146:315;;;;;:::o;6466:163::-;6533:20;;6593:10;6582:22;;6572:33;;6562:61;;6619:1;6616;6609:12;6562:61;6466:163;;;:::o;6634:252::-;6701:6;6709;6762:2;6750:9;6741:7;6737:23;6733:32;6730:52;;;6778:1;6775;6768:12;6730:52;6814:9;6801:23;6791:33;;6843:37;6876:2;6865:9;6861:18;6843:37;:::i;:::-;6833:47;;6634:252;;;;;:::o;6891:437::-;6977:6;6985;7038:2;7026:9;7017:7;7013:23;7009:32;7006:52;;;7054:1;7051;7044:12;7006:52;7094:9;7081:23;-1:-1:-1;;;;;7119:6:46;7116:30;7113:50;;;7159:1;7156;7149:12;7113:50;7198:70;7260:7;7251:6;7240:9;7236:22;7198:70;:::i;:::-;7287:8;;7172:96;;-1:-1:-1;6891:437:46;-1:-1:-1;;;;6891:437:46:o;7333:658::-;7504:2;7556:21;;;7626:13;;7529:18;;;7648:22;;;7475:4;;7504:2;7727:15;;;;7701:2;7686:18;;;7475:4;7770:195;7784:6;7781:1;7778:13;7770:195;;;7849:13;;-1:-1:-1;;;;;7845:39:46;7833:52;;7940:15;;;;7905:12;;;;7881:1;7799:9;7770:195;;8316:127;8377:10;8372:3;8368:20;8365:1;8358:31;8408:4;8405:1;8398:15;8432:4;8429:1;8422:15;8448:632;8513:5;-1:-1:-1;;;;;8584:2:46;8576:6;8573:14;8570:40;;;8590:18;;:::i;:::-;8665:2;8659:9;8633:2;8719:15;;-1:-1:-1;;8715:24:46;;;8741:2;8711:33;8707:42;8695:55;;;8765:18;;;8785:22;;;8762:46;8759:72;;;8811:18;;:::i;:::-;8851:10;8847:2;8840:22;8880:6;8871:15;;8910:6;8902;8895:22;8950:3;8941:6;8936:3;8932:16;8929:25;8926:45;;;8967:1;8964;8957:12;8926:45;9017:6;9012:3;9005:4;8997:6;8993:17;8980:44;9072:1;9065:4;9056:6;9048;9044:19;9040:30;9033:41;;;;8448:632;;;;;:::o;9085:222::-;9128:5;9181:3;9174:4;9166:6;9162:17;9158:27;9148:55;;9199:1;9196;9189:12;9148:55;9221:80;9297:3;9288:6;9275:20;9268:4;9260:6;9256:17;9221:80;:::i;9312:879::-;9428:6;9436;9444;9452;9505:3;9493:9;9484:7;9480:23;9476:33;9473:53;;;9522:1;9519;9512:12;9473:53;9561:9;9548:23;9580:31;9605:5;9580:31;:::i;:::-;9630:5;-1:-1:-1;9686:2:46;9671:18;;9658:32;-1:-1:-1;;;;;9739:14:46;;;9736:34;;;9766:1;9763;9756:12;9736:34;9789:50;9831:7;9822:6;9811:9;9807:22;9789:50;:::i;:::-;9779:60;;9892:2;9881:9;9877:18;9864:32;9848:48;;9921:2;9911:8;9908:16;9905:36;;;9937:1;9934;9927:12;9905:36;9960:52;10004:7;9993:8;9982:9;9978:24;9960:52;:::i;:::-;9950:62;;10065:2;10054:9;10050:18;10037:32;10021:48;;10094:2;10084:8;10081:16;10078:36;;;10110:1;10107;10100:12;10078:36;;10133:52;10177:7;10166:8;10155:9;10151:24;10133:52;:::i;:::-;10123:62;;;9312:879;;;;;;;:::o;10196:247::-;10255:6;10308:2;10296:9;10287:7;10283:23;10279:32;10276:52;;;10324:1;10321;10314:12;10276:52;10363:9;10350:23;10382:31;10407:5;10382:31;:::i;10448:348::-;10500:8;10510:6;10564:3;10557:4;10549:6;10545:17;10541:27;10531:55;;10582:1;10579;10572:12;10531:55;-1:-1:-1;10605:20:46;;-1:-1:-1;;;;;10637:30:46;;10634:50;;;10680:1;10677;10670:12;10634:50;10717:4;10709:6;10705:17;10693:29;;10769:3;10762:4;10753:6;10745;10741:19;10737:30;10734:39;10731:59;;;10786:1;10783;10776:12;10801:479;10881:6;10889;10897;10950:2;10938:9;10929:7;10925:23;10921:32;10918:52;;;10966:1;10963;10956:12;10918:52;11002:9;10989:23;10979:33;;11063:2;11052:9;11048:18;11035:32;-1:-1:-1;;;;;11082:6:46;11079:30;11076:50;;;11122:1;11119;11112:12;11076:50;11161:59;11212:7;11203:6;11192:9;11188:22;11161:59;:::i;11285:1109::-;11438:6;11446;11454;11462;11470;11478;11486;11494;11502;11510;11563:3;11551:9;11542:7;11538:23;11534:33;11531:53;;;11580:1;11577;11570:12;11531:53;11619:9;11606:23;11638:31;11663:5;11638:31;:::i;:::-;11688:5;-1:-1:-1;11740:2:46;11725:18;;11712:32;;-1:-1:-1;11763:37:46;11796:2;11781:18;;11763:37;:::i;:::-;11753:47;;11819:37;11852:2;11841:9;11837:18;11819:37;:::i;:::-;11809:47;;11875:38;11908:3;11897:9;11893:19;11875:38;:::i;:::-;11865:48;;11932:38;11965:3;11954:9;11950:19;11932:38;:::i;:::-;11922:48;;11989:38;12022:3;12011:9;12007:19;11989:38;:::i;:::-;11979:48;;12079:3;12068:9;12064:19;12051:33;12093;12118:7;12093:33;:::i;:::-;12145:7;-1:-1:-1;12199:3:46;12184:19;;12171:33;;-1:-1:-1;12255:3:46;12240:19;;12227:33;-1:-1:-1;;;;;12272:30:46;;12269:50;;;12315:1;12312;12305:12;12269:50;12338;12380:7;12371:6;12360:9;12356:22;12338:50;:::i;:::-;12328:60;;;11285:1109;;;;;;;;;;;;;:::o;12399:416::-;12464:6;12472;12525:2;12513:9;12504:7;12500:23;12496:32;12493:52;;;12541:1;12538;12531:12;12493:52;12580:9;12567:23;12599:31;12624:5;12599:31;:::i;:::-;12649:5;-1:-1:-1;12706:2:46;12691:18;;12678:32;12748:15;;12741:23;12729:36;;12719:64;;12779:1;12776;12769:12;12820:795;12915:6;12923;12931;12939;12992:3;12980:9;12971:7;12967:23;12963:33;12960:53;;;13009:1;13006;12999:12;12960:53;13048:9;13035:23;13067:31;13092:5;13067:31;:::i;:::-;13117:5;-1:-1:-1;13174:2:46;13159:18;;13146:32;13187:33;13146:32;13187:33;:::i;:::-;13239:7;-1:-1:-1;13293:2:46;13278:18;;13265:32;;-1:-1:-1;13348:2:46;13333:18;;13320:32;-1:-1:-1;;;;;13364:30:46;;13361:50;;;13407:1;13404;13397:12;13361:50;13430:22;;13483:4;13475:13;;13471:27;-1:-1:-1;13461:55:46;;13512:1;13509;13502:12;13461:55;13535:74;13601:7;13596:2;13583:16;13578:2;13574;13570:11;13535:74;:::i;13620:388::-;13688:6;13696;13749:2;13737:9;13728:7;13724:23;13720:32;13717:52;;;13765:1;13762;13755:12;13717:52;13804:9;13791:23;13823:31;13848:5;13823:31;:::i;:::-;13873:5;-1:-1:-1;13930:2:46;13915:18;;13902:32;13943:33;13902:32;13943:33;:::i;14013:546::-;14101:6;14109;14117;14125;14178:2;14166:9;14157:7;14153:23;14149:32;14146:52;;;14194:1;14191;14184:12;14146:52;14230:9;14217:23;14207:33;;14291:2;14280:9;14276:18;14263:32;-1:-1:-1;;;;;14310:6:46;14307:30;14304:50;;;14350:1;14347;14340:12;14304:50;14389:59;14440:7;14431:6;14420:9;14416:22;14389:59;:::i;:::-;14013:546;;14467:8;;-1:-1:-1;14363:85:46;;14549:2;14534:18;14521:32;;14013:546;-1:-1:-1;;;;14013:546:46:o;14564:127::-;14625:10;14620:3;14616:20;14613:1;14606:31;14656:4;14653:1;14646:15;14680:4;14677:1;14670:15;14696:127;14757:10;14752:3;14748:20;14745:1;14738:31;14788:4;14785:1;14778:15;14812:4;14809:1;14802:15;14828:135;14867:3;14888:17;;;14885:43;;14908:18;;:::i;:::-;-1:-1:-1;14955:1:46;14944:13;;14828:135::o;14968:380::-;15047:1;15043:12;;;;15090;;;15111:61;;15165:4;15157:6;15153:17;15143:27;;15111:61;15218:2;15210:6;15207:14;15187:18;15184:38;15181:161;;15264:10;15259:3;15255:20;15252:1;15245:31;15299:4;15296:1;15289:15;15327:4;15324:1;15317:15;16532:125;16572:4;16600:1;16597;16594:8;16591:34;;;16605:18;;:::i;:::-;-1:-1:-1;16642:9:46;;16532:125::o;16662:128::-;16702:3;16733:1;16729:6;16726:1;16723:13;16720:39;;;16739:18;;:::i;:::-;-1:-1:-1;16775:9:46;;16662:128::o;16795:410::-;16997:2;16979:21;;;17036:2;17016:18;;;17009:30;17075:34;17070:2;17055:18;;17048:62;-1:-1:-1;;;17141:2:46;17126:18;;17119:44;17195:3;17180:19;;16795:410::o;17210:168::-;17250:7;17316:1;17312;17308:6;17304:14;17301:1;17298:21;17293:1;17286:9;17279:17;17275:45;17272:71;;;17323:18;;:::i;:::-;-1:-1:-1;17363:9:46;;17210:168::o;17383:127::-;17444:10;17439:3;17435:20;17432:1;17425:31;17475:4;17472:1;17465:15;17499:4;17496:1;17489:15;17515:120;17555:1;17581;17571:35;;17586:18;;:::i;:::-;-1:-1:-1;17620:9:46;;17515:120::o;17640:356::-;17842:2;17824:21;;;17861:18;;;17854:30;17920:34;17915:2;17900:18;;17893:62;17987:2;17972:18;;17640:356::o;18001:336::-;18203:2;18185:21;;;18242:2;18222:18;;;18215:30;-1:-1:-1;;;18276:2:46;18261:18;;18254:42;18328:2;18313:18;;18001:336::o;21045:461::-;21232:6;21221:9;21214:25;21275:2;21270;21259:9;21255:18;21248:30;21314:6;21309:2;21298:9;21294:18;21287:34;21371:6;21363;21358:2;21347:9;21343:18;21330:48;21427:1;21398:22;;;21422:2;21394:31;;;21387:42;;;;21490:2;21469:15;;;-1:-1:-1;;21465:29:46;21450:45;21446:54;;21045:461;-1:-1:-1;;21045:461:46:o;23777:127::-;23838:10;23833:3;23829:20;23826:1;23819:31;23869:4;23866:1;23859:15;23893:4;23890:1;23883:15;23909:413;24083:2;24068:18;;24116:1;24105:13;;24095:144;;24161:10;24156:3;24152:20;24149:1;24142:31;24196:4;24193:1;24186:15;24224:4;24221:1;24214:15;24095:144;24248:25;;;24304:2;24289:18;24282:34;23909:413;:::o;24743:185::-;24785:3;24823:5;24817:12;24838:52;24883:6;24878:3;24871:4;24864:5;24860:16;24838:52;:::i;:::-;24906:16;;;;;24743:185;-1:-1:-1;;24743:185:46:o;24933:637::-;25203:3;25241:6;25235:13;25257:53;25303:6;25298:3;25291:4;25283:6;25279:17;25257:53;:::i;:::-;25373:13;;25332:16;;;;25395:57;25373:13;25332:16;25429:4;25417:17;;25395:57;:::i;:::-;-1:-1:-1;;;25474:20:46;;25503:31;;;25561:2;25550:14;;24933:637;-1:-1:-1;;;;24933:637:46:o;25575:470::-;25754:3;25792:6;25786:13;25808:53;25854:6;25849:3;25842:4;25834:6;25830:17;25808:53;:::i;:::-;25924:13;;25883:16;;;;25946:57;25924:13;25883:16;25980:4;25968:17;;25946:57;:::i;:::-;26019:20;;25575:470;-1:-1:-1;;;;25575:470:46:o;26050:439::-;26272:3;26310:6;26304:13;26326:53;26372:6;26367:3;26360:4;26352:6;26348:17;26326:53;:::i;:::-;-1:-1:-1;;;26401:16:46;;26426:27;;;-1:-1:-1;26480:2:46;26469:14;;26050:439;-1:-1:-1;26050:439:46:o;26901:228::-;26940:3;26968:10;27005:2;27002:1;26998:10;27035:2;27032:1;27028:10;27066:3;27062:2;27058:12;27053:3;27050:21;27047:47;;;27074:18;;:::i;31479:407::-;31681:2;31663:21;;;31720:2;31700:18;;;31693:30;31759:34;31754:2;31739:18;;31732:62;-1:-1:-1;;;31825:2:46;31810:18;;31803:41;31876:3;31861:19;;31479:407::o;32245:414::-;32447:2;32429:21;;;32486:2;32466:18;;;32459:30;32525:34;32520:2;32505:18;;32498:62;-1:-1:-1;;;32591:2:46;32576:18;;32569:48;32649:3;32634:19;;32245:414::o;32664:112::-;32696:1;32722;32712:35;;32727:18;;:::i;:::-;-1:-1:-1;32761:9:46;;32664:112::o;32854:583::-;33196:32;33191:3;33184:45;33166:3;33258:6;33252:13;33274:62;33329:6;33324:2;33319:3;33315:12;33308:4;33300:6;33296:17;33274:62;:::i;:::-;-1:-1:-1;;;33395:2:46;33355:16;;;;33387:11;;;33380:24;-1:-1:-1;33428:2:46;33420:11;;32854:583;-1:-1:-1;32854:583:46:o;33568:1345::-;33834:3;33863:1;33896:6;33890:13;33926:3;33948:1;33976:9;33972:2;33968:18;33958:28;;34036:2;34025:9;34021:18;34058;34048:61;;34102:4;34094:6;34090:17;34080:27;;34048:61;34128:2;34176;34168:6;34165:14;34145:18;34142:38;34139:165;;-1:-1:-1;;;34203:33:46;;34259:4;34256:1;34249:15;34289:4;34210:3;34277:17;34139:165;34320:18;34347:104;;;;34465:1;34460:320;;;;34313:467;;34347:104;-1:-1:-1;;34380:24:46;;34368:37;;34425:16;;;;-1:-1:-1;34347:104:46;;34460:320;33515:1;33508:14;;;33552:4;33539:18;;34555:1;34569:165;34583:6;34580:1;34577:13;34569:165;;;34661:14;;34648:11;;;34641:35;34704:16;;;;34598:10;;34569:165;;;34573:3;;34763:6;34758:3;34754:16;34747:23;;34313:467;;;;34802:30;34828:3;34820:6;34802:30;:::i;:::-;-1:-1:-1;;;32831:16:46;;34893:14;;;-1:-1:-1;;;;;;;33568:1345:46:o;37324:500::-;-1:-1:-1;;;;;37593:15:46;;;37575:34;;37645:15;;37640:2;37625:18;;37618:43;37692:2;37677:18;;37670:34;;;37740:3;37735:2;37720:18;;37713:31;;;37518:4;;37761:57;;37798:19;;37790:6;37761:57;:::i;:::-;37753:65;37324:500;-1:-1:-1;;;;;;37324:500:46:o;37829:249::-;37898:6;37951:2;37939:9;37930:7;37926:23;37922:32;37919:52;;;37967:1;37964;37957:12;37919:52;37999:9;37993:16;38018:30;38042:5;38018:30;:::i;38083:136::-;38122:3;38150:5;38140:39;;38159:18;;:::i;:::-;-1:-1:-1;;;38195:18:46;;38083:136::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3491000",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "ADMIN_ROLE()": "infinite",
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMISSIONED_SALE_TYPEHASH()": "329",
                "_tokenToEdition(uint256)": "2483",
                "approve(address,uint256)": "infinite",
                "atEditionId()": "2453",
                "atTokenId()": "2410",
                "balanceOf(address)": "2651",
                "buyEdition(uint256,bytes,uint256)": "infinite",
                "checkTicketNumbers(uint256,uint256[])": "infinite",
                "contractURI()": "infinite",
                "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": "infinite",
                "depositedForEdition(uint256)": "2482",
                "editionCount()": "2556",
                "editions(uint256)": "infinite",
                "getApproved(uint256)": "4837",
                "grantRole(bytes32,address)": "31197",
                "hasRole(bytes32,address)": "2742",
                "initialize(address,string,string,string)": "infinite",
                "isApprovedForAll(address,address)": "infinite",
                "name()": "infinite",
                "owner()": "2376",
                "ownerOf(uint256)": "2584",
                "ownersOfTokenIds(uint256[])": "infinite",
                "revokeRole(bytes32,address)": "31221",
                "royaltyInfo(uint256,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "26722",
                "setEditionBaseURI(uint256,string)": "infinite",
                "setEndTime(uint256,uint32)": "infinite",
                "setOwnerOverride(address)": "infinite",
                "setPermissionedQuantity(uint256,uint32)": "infinite",
                "setSignerAddress(uint256,address)": "infinite",
                "setSomeNumber(uint256)": "22468",
                "setStartTime(uint256,uint32)": "infinite",
                "someNumber()": "2406",
                "soundRecoveryAddress()": "351",
                "supportsInterface(bytes4)": "infinite",
                "symbol()": "infinite",
                "tokenToEdition(uint256)": "2646",
                "tokenURI(uint256)": "infinite",
                "totalSupply()": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "transferOwnership(address)": "infinite",
                "withdrawFunds(uint256)": "infinite",
                "withdrawnForEdition(uint256)": "2571"
              },
              "internal": {
                "_contractBaseURI()": "infinite",
                "_getBitForTicketNumber(uint256,uint256)": "infinite",
                "_sendFunds(address payable,uint256)": "infinite",
                "getSigner(bytes calldata,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "ADMIN_ROLE()": "75b238fc",
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMISSIONED_SALE_TYPEHASH()": "27399d36",
              "_tokenToEdition(uint256)": "5076a64d",
              "approve(address,uint256)": "095ea7b3",
              "atEditionId()": "9725d92e",
              "atTokenId()": "3ef2dbc2",
              "balanceOf(address)": "70a08231",
              "buyEdition(uint256,bytes,uint256)": "f71e54fb",
              "checkTicketNumbers(uint256,uint256[])": "065d5b85",
              "contractURI()": "e8a3d485",
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": "8e116aea",
              "depositedForEdition(uint256)": "e1a3d573",
              "editionCount()": "4bf44026",
              "editions(uint256)": "279c806e",
              "getApproved(uint256)": "081812fc",
              "grantRole(bytes32,address)": "2f2ff15d",
              "hasRole(bytes32,address)": "91d14854",
              "initialize(address,string,string,string)": "5f1e6f6d",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "ownersOfTokenIds(uint256[])": "52f5c2e4",
              "revokeRole(bytes32,address)": "d547741f",
              "royaltyInfo(uint256,uint256)": "2a55205a",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setEditionBaseURI(uint256,string)": "79672692",
              "setEndTime(uint256,uint32)": "bb314ca1",
              "setOwnerOverride(address)": "75a8f08f",
              "setPermissionedQuantity(uint256,uint32)": "52e25bf2",
              "setSignerAddress(uint256,address)": "56dee996",
              "setSomeNumber(uint256)": "79b236d2",
              "setStartTime(uint256,uint32)": "fbab9e04",
              "someNumber()": "931c9b99",
              "soundRecoveryAddress()": "0bcca831",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenToEdition(uint256)": "602787ed",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply()": "18160ddd",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "withdrawFunds(uint256)": "155dd5ee",
              "withdrawnForEdition(uint256)": "d3bb0528"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum TEST_ArtistV6.TimeType\",\"name\":\"timeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"newTime\",\"type\":\"uint32\"}],\"name\":\"AuctionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"BaseURISet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"EditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ticketNumber\",\"type\":\"uint256\"}],\"name\":\"EditionPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"PermissionedQuantitySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"editionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"SignerAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMISSIONED_SALE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"_tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"atEditionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"atTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_ticketNumber\",\"type\":\"uint256\"}],\"name\":\"buyEdition\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_ticketNumbers\",\"type\":\"uint256[]\"}],\"name\":\"checkTicketNumbers\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_signerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createEdition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositedForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"editionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"editions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"numSold\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"quantity\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"royaltyBPS\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"permissionedQuantity\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"ownersOfTokenIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"fundingRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"setEditionBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_endTime\",\"type\":\"uint32\"}],\"name\":\"setEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"setOwnerOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_permissionedQuantity\",\"type\":\"uint32\"}],\"name\":\"setPermissionedQuantity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_newSignerAddress\",\"type\":\"address\"}],\"name\":\"setSignerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_someNumber\",\"type\":\"uint256\"}],\"name\":\"setSomeNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_startTime\",\"type\":\"uint32\"}],\"name\":\"setStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"someNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"soundRecoveryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenToEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_editionId\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawnForEdition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SoundXYZ - @gigamesh & @vigneshka\",\"details\":\"Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyEdition(uint256,bytes,uint256)\":{\"params\":{\"_editionId\":\"The id of the edition to purchase\",\"_signature\":\"A signed message for authorizing permissioned purchases\",\"_ticketNumber\":\"Ticket number required for validating this buyer hasn't already bought.\"}},\"checkTicketNumbers(uint256,uint256[])\":{\"params\":{\"_editionId\":\"Edition id\",\"_ticketNumbers\":\"List of ticket numbers (indexes)\"}},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)\":{\"params\":{\"_baseURI\":\"The base URI for the edition\",\"_editionId\":\"The expected edition ID\",\"_endTime\":\"The end time of the auction, in seconds since unix epoch.\",\"_fundingRecipient\":\"The account that will receive sales revenue.\",\"_permissionedQuantity\":\"The quantity of tokens that require a signature to buy.\",\"_price\":\"The price at which each token will be sold, in ETH.\",\"_quantity\":\"The maximum number of tokens that can be sold.\",\"_royaltyBPS\":\"The royalty amount in bps.\",\"_signerAddress\":\"signer address.\",\"_startTime\":\"The start time of the auction, in seconds since unix epoch.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"grantRole(bytes32,address)\":{\"params\":{\"account\":\"The account to register\",\"role\":\"The role to grant to the given account\"}},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"The account to check\",\"role\":\"The role to check\"}},\"initialize(address,string,string,string)\":{\"params\":{\"_baseURI\":\"Default base URI for all editions\",\"_name\":\"Name of artist\",\"_owner\":\"Owner of edition\",\"_symbol\":\"Symbol for the artist\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"ownersOfTokenIds(uint256[])\":{\"params\":{\"_tokenIds\":\"List of token ids\"}},\"revokeRole(bytes32,address)\":{\"params\":{\"account\":\"The account to revoke the role from\",\"role\":\"The role to revoke\"}},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"Sale price for the token\",\"_tokenId\":\"token id\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setEditionBaseURI(uint256,string)\":{\"params\":{\"_baseURI\":\"The new base URI\",\"_editionId\":\"The target edition's id\"}},\"setEndTime(uint256,uint32)\":{\"params\":{\"_editionId\":\"The id of the edition to set the end time for\",\"_endTime\":\"The end time to set (in seconds since unix epoch)\"}},\"setOwnerOverride(address)\":{\"params\":{\"_newOwner\":\"The new owner of the contract\"}},\"setPermissionedQuantity(uint256,uint32)\":{\"params\":{\"_editionId\":\"The edition id to set the permissioned quantity for\",\"_permissionedQuantity\":\"The new permissiond quantity\"}},\"setSignerAddress(uint256,address)\":{\"params\":{\"_editionId\":\"The edition id to set the signature address for\",\"_newSignerAddress\":\"The address that will be used to sign purchases\"}},\"setStartTime(uint256,uint32)\":{\"params\":{\"_editionId\":\"The id of the edition to set the start time for\",\"_startTime\":\"The start time to set (in seconds since unix epoch)\"}},\"supportsInterface(bytes4)\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-165\",\"params\":{\"_interfaceId\":\"The interface id to check\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenToEdition(uint256)\":{\"params\":{\"_tokenId\":\"token id\"}},\"tokenURI(uint256)\":{\"details\":\"Concatenate the baseURI and tokenId, to create URI.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"withdrawFunds(uint256)\":{\"params\":{\"_editionId\":\"The id of the edition to withdraw from\"}}},\"title\":\"Artist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyEdition(uint256,bytes,uint256)\":{\"notice\":\"Creates a new token for the given edition, and assigns it to the buyer\"},\"checkTicketNumbers(uint256,uint256[])\":{\"notice\":\"Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\"},\"constructor\":{\"notice\":\"Contract constructor\"},\"contractURI()\":{\"notice\":\"Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\"},\"createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)\":{\"notice\":\"Creates a new edition.\"},\"editionCount()\":{\"notice\":\"returns the number of editions for this artist\"},\"grantRole(bytes32,address)\":{\"notice\":\"Register an account as an admin\"},\"hasRole(bytes32,address)\":{\"notice\":\"Check if an account has a role\"},\"initialize(address,string,string,string)\":{\"notice\":\"Initializes the contract\"},\"ownersOfTokenIds(uint256[])\":{\"notice\":\"Returns a list of owner addresses for a given list of token ids\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revoke a role from an account\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Get royalty information for token\"},\"setEditionBaseURI(uint256,string)\":{\"notice\":\"Sets the base URI for an edition\"},\"setEndTime(uint256,uint32)\":{\"notice\":\"Sets the end time for an edition\"},\"setOwnerOverride(address)\":{\"notice\":\"Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\"},\"setPermissionedQuantity(uint256,uint32)\":{\"notice\":\"Sets the permissioned quantity for an edition\"},\"setSignerAddress(uint256,address)\":{\"notice\":\"Sets the signature address of an edition\"},\"setStartTime(uint256,uint32)\":{\"notice\":\"Sets the start time for an edition\"},\"soundRecoveryAddress()\":{\"notice\":\"Returns the address (ie: gnosis safe) authorized to change ownership of the contract\"},\"supportsInterface(bytes4)\":{\"notice\":\"Informs other contracts which interfaces this contract supports\"},\"tokenToEdition(uint256)\":{\"notice\":\"Returns the edition id for a given token id\"},\"tokenURI(uint256)\":{\"notice\":\"Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\"},\"totalSupply()\":{\"notice\":\"The total number of tokens created by this contract\"},\"withdrawFunds(uint256)\":{\"notice\":\"Withdraws from the Artist to the fundingRecipient for an edition\"}},\"notice\":\"This contract is used to create & sell song NFTs for the artist who owns the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test-contracts/TEST_ArtistV6.sol\":\"TEST_ArtistV6\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n     */\\n    function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n        external\\n        view\\n        returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\\n     * initialization step. This is essential to configure modules that are added through upgrades and that require\\n     * initialization.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized < type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n    using AddressUpgradeable for address;\\n    using StringsUpgradeable for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC721_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n        return\\n            interfaceId == type(IERC721Upgradeable).interfaceId ||\\n            interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool _approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n    struct Counter {\\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\\n        uint256 _value; // default: 0\\n    }\\n\\n    function current(Counter storage counter) internal view returns (uint256) {\\n        return counter._value;\\n    }\\n\\n    function increment(Counter storage counter) internal {\\n        unchecked {\\n            counter._value += 1;\\n        }\\n    }\\n\\n    function decrement(Counter storage counter) internal {\\n        uint256 value = counter._value;\\n        require(value > 0, \\\"Counter: decrement overflow\\\");\\n        unchecked {\\n            counter._value = value - 1;\\n        }\\n    }\\n\\n    function reset(Counter storage counter) internal {\\n        counter._value = 0;\\n    }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n    function __ERC165_init() internal onlyInitializing {\\n    }\\n\\n    function __ERC165_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165Upgradeable).interfaceId;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        } else if (error == RecoverError.InvalidSignatureV) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        // Check the signature length\\n        // - case 65: r,s,v signature (standard)\\n        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else if (signature.length == 64) {\\n            bytes32 r;\\n            bytes32 vs;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                vs := mload(add(signature, 0x40))\\n            }\\n            return tryRecover(hash, r, vs);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n        if (v != 27 && v != 28) {\\n            return (address(0), RecoverError.InvalidSignatureV);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n    }\\n}\\n\",\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\"},\"contracts/auxillary/AccessManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.14;\\n\\nimport '@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\n\\n/// @title AccessManager\\n/// @author OpenZeppelin & Sound.xyz (@gigma)\\n/// @notice Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.\\n/// @dev Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)\\ncontract AccessManager is Initializable, ContextUpgradeable {\\n    // The admin role identifier\\n    bytes32 public constant ADMIN_ROLE = keccak256('ADMIN');\\n\\n    address private _owner;\\n\\n    // Track registered admins\\n    mapping(bytes32 => mapping(address => bool)) private _roles;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    // =====================\\n    // Ownership functions\\n    // =====================\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    function __AccessManager_init() internal onlyInitializing {\\n        __Context_init_unchained();\\n        __AccessManager_init_unchained();\\n    }\\n\\n    function __AccessManager_init_unchained() internal onlyInitializing {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), 'Ownable: caller is not the owner');\\n        _;\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        require(newOwner != address(0), 'Ownable: new owner is the zero address');\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n\\n    // =====================\\n    // Role functions\\n    // =====================\\n\\n    /// @notice Register an account as an admin\\n    /// @param role The role to grant to the given account\\n    /// @param account The account to register\\n    function grantRole(bytes32 role, address account) external onlyOwner {\\n        if (!hasRole(role, account)) {\\n            _roles[role][account] = true;\\n            emit RoleGranted(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Revoke a role from an account\\n    /// @param role The role to revoke\\n    /// @param account The account to revoke the role from\\n    function revokeRole(bytes32 role, address account) external onlyOwner {\\n        if (hasRole(role, account)) {\\n            _roles[role][account] = false;\\n            emit RoleRevoked(role, account, _msgSender());\\n        }\\n    }\\n\\n    /// @notice Check if an account has a role\\n    /// @param role The role to check\\n    /// @param account The account to check\\n    function hasRole(bytes32 role, address account) public view returns (bool) {\\n        return _roles[role][account];\\n    }\\n\\n    /// @notice Check if the given address is the owner or has the given role.\\n    /// @param role The role to check for.\\n    modifier checkPermission(bytes32 role) {\\n        require(_msgSender() == owner() || hasRole(role, _msgSender()), 'unauthorized');\\n        _;\\n    }\\n\\n    uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0xc5cf31ec516a0981fd88b34b36d42a24e3678ae49f8fb5c81701cc6d0e28a316\",\"license\":\"MIT\"},\"contracts/test-contracts/TEST_ArtistV6.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\npragma solidity ^0.8.14;\\n\\n/*\\n               ^###############################################&5               \\n               ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&               \\n   !PPPPPPPPPPP&@@@@@@@@@@@@?!!!!!!!!!!7&@@@@@@@@@@@@@@@@@@@@@@@@BPPPPPPPPPPJ   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&            ~55555555555&@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        J@@@@@@@@@@@@@@@@@@@@@@@@.  \\n   B@@@@@@@@@@@@@@@@@@@@@@@&~::::::::::::::::::::::.~B######################P   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7                           \\n   5@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@5                           \\n    .......................!@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&B   \\n                           .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&   \\n   7BBBBBBBBBBBBBBBBBBBBBBBY:^^^^^^^^^^^^^^^^^^^^^^^B@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@&                        Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@PJYYYYYYYYY?            5@@@@@@@@@@@@@@@@@@@@@@@&   \\n   B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:           Y@@@@@@@@@@@@@@@@@@@@@@@&   \\n   !GGGGGGGGGGG&@@@@@@@@@@@@@@@@@@@@@@@@5~~~~~~~~~~~#@@@@@@@@@@@@BGGGGGGGGGGJ   \\n               J@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G               \\n               ~&&&&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?                 \\n\\n*/\\n\\nimport '@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol';\\nimport '@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol';\\nimport '@openzeppelin/contracts/utils/cryptography/ECDSA.sol';\\nimport '@openzeppelin/contracts/utils/Strings.sol';\\nimport '../auxillary/AccessManager.sol';\\n\\n/// @title Artist\\n/// @author SoundXYZ - @gigamesh & @vigneshka\\n/// @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\\n/// @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol\\ncontract TEST_ArtistV6 is ERC721Upgradeable, IERC2981Upgradeable, AccessManager {\\n    // ================================\\n    // STORAGE\\n    // ================================\\n\\n    // The permissioned typehash (used for checking signature validity)\\n    bytes32 public constant PERMISSIONED_SALE_TYPEHASH =\\n        keccak256('EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)');\\n    // Domain separator - used to prevent replay attacks using signatures from different networks\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    // The default baseURI for the contract\\n    string internal baseURI;\\n\\n    CountersUpgradeable.Counter public atTokenId; // DEPRECATED IN V3\\n    CountersUpgradeable.Counter public atEditionId;\\n\\n    // Mapping of edition id to descriptive data.\\n    mapping(uint256 => Edition) public editions;\\n    // <DEPRECATED IN V3> Mapping of token id to edition id.\\n    mapping(uint256 => uint256) public _tokenToEdition;\\n    // The amount of funds that have been deposited for a given edition.\\n    mapping(uint256 => uint256) public depositedForEdition;\\n    // The amount of funds that have already been withdrawn for a given edition.\\n    mapping(uint256 => uint256) public withdrawnForEdition;\\n    // Used to track which tokens have been claimed. editionId -> index -> bit array\\n    mapping(uint256 => mapping(uint256 => uint256)) ticketNumbers;\\n\\n    uint256 public someNumber;\\n\\n    // ================================\\n    // TYPES\\n    // ================================\\n\\n    struct Edition {\\n        // The account that will receive sales revenue.\\n        address payable fundingRecipient;\\n        // The price at which each token will be sold, in ETH.\\n        uint256 price;\\n        // The number of tokens sold so far.\\n        uint32 numSold;\\n        // The maximum number of tokens that can be sold.\\n        uint32 quantity;\\n        // Royalty amount in bps\\n        uint32 royaltyBPS;\\n        // start timestamp of auction (in seconds since unix epoch)\\n        uint32 startTime;\\n        // end timestamp of auction (in seconds since unix epoch)\\n        uint32 endTime;\\n        // quantity of permissioned tokens\\n        uint32 permissionedQuantity;\\n        // whitelist signer address\\n        address signerAddress;\\n        // base uri for the edition\\n        string baseURI;\\n    }\\n\\n    using CountersUpgradeable for CountersUpgradeable.Counter;\\n    using ECDSA for bytes32;\\n\\n    enum TimeType {\\n        START,\\n        END\\n    }\\n\\n    // ================================\\n    // EVENTS\\n    // ================================\\n\\n    event EditionCreated(\\n        uint256 indexed editionId,\\n        address fundingRecipient,\\n        uint256 price,\\n        uint32 quantity,\\n        uint32 royaltyBPS,\\n        uint32 startTime,\\n        uint32 endTime,\\n        uint32 permissionedQuantity,\\n        address signerAddress\\n    );\\n\\n    event EditionPurchased(\\n        uint256 indexed editionId,\\n        uint256 indexed tokenId,\\n        // `numSold` at time of purchase represents the \\\"serial number\\\" of the NFT.\\n        uint32 numSold,\\n        // The account that paid for and received the NFT.\\n        address indexed buyer,\\n        uint256 ticketNumber\\n    );\\n\\n    event AuctionTimeSet(TimeType timeType, uint256 editionId, uint32 indexed newTime);\\n\\n    event SignerAddressSet(uint256 editionId, address indexed signerAddress);\\n\\n    event PermissionedQuantitySet(uint256 editionId, uint32 permissionedQuantity);\\n\\n    event BaseURISet(uint256 editionId, string baseURI);\\n\\n    // ================================\\n    // PUBLIC & EXTERNAL WRITABLE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Contract constructor\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256('EIP712Domain(uint256 chainId)'), block.chainid));\\n    }\\n\\n    /// @notice Initializes the contract\\n    /// @param _owner Owner of edition\\n    /// @param _name Name of artist\\n    /// @param _symbol Symbol for the artist\\n    /// @param _baseURI Default base URI for all editions\\n    function initialize(\\n        address _owner,\\n        string memory _name,\\n        string memory _symbol,\\n        string memory _baseURI\\n    ) public initializer {\\n        __ERC721_init(_name, _symbol);\\n        __AccessManager_init();\\n\\n        // Set ownership to original sender of contract call\\n        transferOwnership(_owner);\\n\\n        // baseURI override only for testnets\\n        if (block.chainid != 1) {\\n            baseURI = _baseURI;\\n        }\\n\\n        // Set edition id start to be 1 not 0\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new edition.\\n    /// @param _fundingRecipient The account that will receive sales revenue.\\n    /// @param _price The price at which each token will be sold, in ETH.\\n    /// @param _quantity The maximum number of tokens that can be sold.\\n    /// @param _royaltyBPS The royalty amount in bps.\\n    /// @param _startTime The start time of the auction, in seconds since unix epoch.\\n    /// @param _endTime The end time of the auction, in seconds since unix epoch.\\n    /// @param _permissionedQuantity The quantity of tokens that require a signature to buy.\\n    /// @param _signerAddress signer address.\\n    /// @param _editionId The expected edition ID\\n    /// @param _baseURI The base URI for the edition\\n    function createEdition(\\n        address payable _fundingRecipient,\\n        uint256 _price,\\n        uint32 _quantity,\\n        uint32 _royaltyBPS,\\n        uint32 _startTime,\\n        uint32 _endTime,\\n        uint32 _permissionedQuantity,\\n        address _signerAddress,\\n        uint256 _editionId,\\n        string memory _baseURI\\n    ) external checkPermission(ADMIN_ROLE) {\\n        require(_quantity > 0, 'Must set quantity');\\n        require(_fundingRecipient != address(0), 'Must set fundingRecipient');\\n        require(_endTime > _startTime, 'End time must be greater than start time');\\n        require(_editionId == atEditionId.current(), 'Wrong edition ID');\\n\\n        if (_permissionedQuantity > 0) {\\n            require(_signerAddress != address(0), 'Signer address cannot be 0');\\n        }\\n\\n        editions[atEditionId.current()] = Edition({\\n            fundingRecipient: _fundingRecipient,\\n            price: _price,\\n            numSold: 0,\\n            quantity: _quantity,\\n            royaltyBPS: _royaltyBPS,\\n            startTime: _startTime,\\n            endTime: _endTime,\\n            permissionedQuantity: _permissionedQuantity,\\n            signerAddress: _signerAddress,\\n            baseURI: _baseURI\\n        });\\n\\n        emit EditionCreated(\\n            atEditionId.current(),\\n            _fundingRecipient,\\n            _price,\\n            _quantity,\\n            _royaltyBPS,\\n            _startTime,\\n            _endTime,\\n            _permissionedQuantity,\\n            _signerAddress\\n        );\\n\\n        atEditionId.increment();\\n    }\\n\\n    /// @notice Creates a new token for the given edition, and assigns it to the buyer\\n    /// @param _editionId The id of the edition to purchase\\n    /// @param _signature A signed message for authorizing permissioned purchases\\n    /// @param _ticketNumber Ticket number required for validating this buyer hasn't already bought.\\n    function buyEdition(\\n        uint256 _editionId,\\n        bytes calldata _signature,\\n        uint256 _ticketNumber\\n    ) external payable {\\n        // Caching variables locally to reduce reads\\n        uint256 price = editions[_editionId].price;\\n        uint32 quantity = editions[_editionId].quantity;\\n        uint32 numSold = editions[_editionId].numSold;\\n        uint32 newNumSold = numSold + 1;\\n        uint32 startTime = editions[_editionId].startTime;\\n        uint32 endTime = editions[_editionId].endTime;\\n        uint32 permissionedQuantity = editions[_editionId].permissionedQuantity;\\n\\n        // Check that the edition exists. Note: this is redundant\\n        // with the next check, but it is useful for clearer error messaging.\\n        require(quantity > 0, 'Edition does not exist');\\n        // Check that the sender is paying the correct amount.\\n        require(msg.value >= price, 'Must send enough to purchase the edition.');\\n        // Don't allow purchases after the end time\\n        require(endTime > block.timestamp, 'Auction has ended');\\n\\n        // If the public auction hasn't started...\\n        if (startTime > block.timestamp) {\\n            // Check that permissioned tokens are still available\\n            require(numSold < permissionedQuantity, 'No permissioned tokens available & open auction not started');\\n\\n            // Check that the signature is valid.\\n            require(\\n                getSigner(_signature, _editionId, _ticketNumber) == editions[_editionId].signerAddress,\\n                'Invalid signer'\\n            );\\n        } else {\\n            // Check that there are still tokens available to purchase.\\n            // Only need to check this for the public sale (after the start time)\\n            // so we can accomodate open editions\\n            require(numSold < quantity, 'This edition is already sold out.');\\n        }\\n\\n        // Create the token id by packing editionId in the top bits\\n        uint256 tokenId;\\n        unchecked {\\n            tokenId = (_editionId << 128) | newNumSold;\\n            // Increment the number of tokens sold for this edition.\\n            editions[_editionId].numSold = newNumSold;\\n        }\\n\\n        // If fundingRecipient is the owner (artist's wallet), update the edition's balance & don't send the funds\\n        if (editions[_editionId].fundingRecipient == owner()) {\\n            // Update the deposited total for the edition\\n            depositedForEdition[_editionId] += msg.value;\\n        } else {\\n            // Send funds to the funding recipient.\\n            _sendFunds(editions[_editionId].fundingRecipient, msg.value);\\n        }\\n\\n        // Mint a new token for the sender, using the `tokenId`.\\n        _mint(msg.sender, tokenId);\\n\\n        emit EditionPurchased(_editionId, tokenId, newNumSold, msg.sender, _ticketNumber);\\n    }\\n\\n    /// @notice Withdraws from the Artist to the fundingRecipient for an edition\\n    /// @param _editionId The id of the edition to withdraw from\\n    function withdrawFunds(uint256 _editionId) external {\\n        // Compute the amount available for withdrawing from this edition.\\n        uint256 remainingForEdition = depositedForEdition[_editionId] - withdrawnForEdition[_editionId];\\n\\n        // Set the amount withdrawn to the amount deposited.\\n        withdrawnForEdition[_editionId] = depositedForEdition[_editionId];\\n\\n        // Send the amount that was remaining for the edition, to the funding recipient.\\n        _sendFunds(editions[_editionId].fundingRecipient, remainingForEdition);\\n    }\\n\\n    /// @notice Sets the start time for an edition\\n    /// @param _editionId The id of the edition to set the start time for\\n    /// @param _startTime The start time to set (in seconds since unix epoch)\\n    function setStartTime(uint256 _editionId, uint32 _startTime) external checkPermission(ADMIN_ROLE) {\\n        editions[_editionId].startTime = _startTime;\\n        emit AuctionTimeSet(TimeType.START, _editionId, _startTime);\\n    }\\n\\n    /// @notice Sets the end time for an edition\\n    /// @param _editionId The id of the edition to set the end time for\\n    /// @param _endTime The end time to set (in seconds since unix epoch)\\n    function setEndTime(uint256 _editionId, uint32 _endTime) external checkPermission(ADMIN_ROLE) {\\n        editions[_editionId].endTime = _endTime;\\n        emit AuctionTimeSet(TimeType.END, _editionId, _endTime);\\n    }\\n\\n    /// @notice Sets the signature address of an edition\\n    /// @param _editionId The edition id to set the signature address for\\n    /// @param _newSignerAddress The address that will be used to sign purchases\\n    function setSignerAddress(uint256 _editionId, address _newSignerAddress) external checkPermission(ADMIN_ROLE) {\\n        require(_newSignerAddress != address(0), 'Signer address cannot be 0');\\n\\n        editions[_editionId].signerAddress = _newSignerAddress;\\n        emit SignerAddressSet(_editionId, _newSignerAddress);\\n    }\\n\\n    /// @notice Sets the permissioned quantity for an edition\\n    /// @param _editionId The edition id to set the permissioned quantity for\\n    /// @param _permissionedQuantity The new permissiond quantity\\n    function setPermissionedQuantity(uint256 _editionId, uint32 _permissionedQuantity)\\n        external\\n        checkPermission(ADMIN_ROLE)\\n    {\\n        // Prevent setting to permissioned quantity when there is no signer address\\n        require(editions[_editionId].signerAddress != address(0), 'Edition must have a signer');\\n\\n        editions[_editionId].permissionedQuantity = _permissionedQuantity;\\n        emit PermissionedQuantitySet(_editionId, _permissionedQuantity);\\n    }\\n\\n    /// @notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\\n    /// @param _newOwner The new owner of the contract\\n    function setOwnerOverride(address _newOwner) external {\\n        require(_msgSender() == soundRecoveryAddress() || _msgSender() == owner(), 'unauthorized');\\n\\n        super._transferOwnership(_newOwner);\\n    }\\n\\n    /// @notice Sets the base URI for an edition\\n    /// @param _editionId The target edition's id\\n    /// @param _baseURI The new base URI\\n    function setEditionBaseURI(uint256 _editionId, string calldata _baseURI) external checkPermission(ADMIN_ROLE) {\\n        require(\\n            editions[_editionId].quantity > 0 || editions[_editionId].permissionedQuantity > 0,\\n            'Nonexistent edition'\\n        );\\n\\n        editions[_editionId].baseURI = _baseURI;\\n\\n        emit BaseURISet(_editionId, _baseURI);\\n    }\\n\\n    // ================================\\n    // VIEW FUNCTIONS\\n    // ================================\\n\\n    /// @notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\\n    /// @dev Concatenate the baseURI and tokenId, to create URI.\\n    function tokenURI(uint256 _tokenId) public view override returns (string memory) {\\n        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');\\n\\n        uint256 editionId = tokenToEdition(_tokenId);\\n\\n        string memory editionBaseURI = editions[editionId].baseURI;\\n\\n        // If the edition has a baseURI, it means this edition is on permastorage\\n        // Using 3 as the length in case it gets accidentally set to empty space\\n        if (bytes(editionBaseURI).length > 3) {\\n            return string.concat(editionBaseURI, Strings.toString(_tokenId), '/metadata.json');\\n        }\\n\\n        return string.concat(_contractBaseURI(), Strings.toString(_tokenId));\\n    }\\n\\n    /// @notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront\\n    function contractURI() public view returns (string memory) {\\n        return string.concat(_contractBaseURI(), 'storefront');\\n    }\\n\\n    /// @notice Get royalty information for token\\n    /// @param _tokenId token id\\n    /// @param _salePrice Sale price for the token\\n    function royaltyInfo(uint256 _tokenId, uint256 _salePrice)\\n        external\\n        view\\n        override\\n        returns (address fundingRecipient, uint256 royaltyAmount)\\n    {\\n        uint256 editionId = tokenToEdition(_tokenId);\\n        Edition memory edition = editions[editionId];\\n\\n        if (edition.fundingRecipient == address(0x0)) {\\n            return (edition.fundingRecipient, 0);\\n        }\\n\\n        uint256 royaltyBPS = uint256(edition.royaltyBPS);\\n\\n        return (edition.fundingRecipient, (_salePrice * royaltyBPS) / 10_000);\\n    }\\n\\n    /// @notice The total number of tokens created by this contract\\n    function totalSupply() external view returns (uint256) {\\n        uint256 total = 0;\\n        for (uint256 id = 1; id < atEditionId.current(); id++) {\\n            total += editions[id].numSold;\\n        }\\n        return total;\\n    }\\n\\n    /// @notice Informs other contracts which interfaces this contract supports\\n    /// @param _interfaceId The interface id to check\\n    /// @dev https://eips.ethereum.org/EIPS/eip-165\\n    function supportsInterface(bytes4 _interfaceId)\\n        public\\n        view\\n        override(ERC721Upgradeable, IERC165Upgradeable)\\n        returns (bool)\\n    {\\n        return\\n            type(IERC2981Upgradeable).interfaceId == _interfaceId || ERC721Upgradeable.supportsInterface(_interfaceId);\\n    }\\n\\n    /// @notice returns the number of editions for this artist\\n    function editionCount() external view returns (uint256) {\\n        return atEditionId.current() - 1; // because atEditionId is incremented after each edition is created\\n    }\\n\\n    /// @notice Returns the edition id for a given token id\\n    /// @param _tokenId token id\\n    function tokenToEdition(uint256 _tokenId) public view returns (uint256) {\\n        // Check the top bits to see if the edition id is there\\n        uint256 editionId = _tokenId >> 128;\\n\\n        // If edition ID is 0, then this edition was created before the V3 upgrade\\n        if (editionId == 0) {\\n            // get edition ID from storage\\n            return _tokenToEdition[_tokenId];\\n        }\\n\\n        return editionId;\\n    }\\n\\n    /// @notice Returns a list of owner addresses for a given list of token ids\\n    /// @param _tokenIds List of token ids\\n    function ownersOfTokenIds(uint256[] calldata _tokenIds) external view returns (address[] memory) {\\n        address[] memory owners = new address[](_tokenIds.length);\\n        for (uint256 i = 0; i < _tokenIds.length; i++) {\\n            owners[i] = ownerOf(_tokenIds[i]);\\n        }\\n        return owners;\\n    }\\n\\n    /// @notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\\n    /// @param _editionId Edition id\\n    /// @param _ticketNumbers List of ticket numbers (indexes)\\n    function checkTicketNumbers(uint256 _editionId, uint256[] calldata _ticketNumbers)\\n        external\\n        view\\n        returns (bool[] memory)\\n    {\\n        bool[] memory claimed = new bool[](_ticketNumbers.length);\\n\\n        for (uint256 i = 0; i < _ticketNumbers.length; i++) {\\n            (uint256 storedBit, , , ) = _getBitForTicketNumber(_editionId, _ticketNumbers[i]);\\n            claimed[i] = storedBit == 1;\\n        }\\n\\n        return claimed;\\n    }\\n\\n    /// @notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract\\n    function soundRecoveryAddress() public view virtual returns (address) {\\n        if (block.chainid == 1) {\\n            return 0x858a92511485715Cfb754f397a7894b7724c7Abd;\\n        } else if (block.chainid == 4) {\\n            return 0xee35E946Dd73EF78d352454c3F915e2cA0a09d87;\\n        } else {\\n            revert('unsupported chain');\\n        }\\n    }\\n\\n    // ================================\\n    // PRIVATE FUNCTIONS\\n    // ================================\\n\\n    /// @notice Sends funds to an address\\n    /// @param _recipient The address to send funds to\\n    /// @param _amount The amount of funds to send\\n    function _sendFunds(address payable _recipient, uint256 _amount) private {\\n        require(address(this).balance >= _amount, 'Insufficient balance for send');\\n\\n        (bool success, ) = _recipient.call{value: _amount}('');\\n        require(success, 'Unable to send value: recipient may have reverted');\\n    }\\n\\n    /// @notice Gets signer address to validate permissioned purchase\\n    /// @param _signature signed message\\n    /// @param _editionId edition id\\n    /// @param _ticketNumber ticket number to check\\n    /// @return address of signer\\n    /// @dev https://eips.ethereum.org/EIPS/eip-712\\n    function getSigner(\\n        bytes calldata _signature,\\n        uint256 _editionId,\\n        uint256 _ticketNumber\\n    ) private returns (address) {\\n        // Check that the ticket number is within the reserved range for the edition\\n        // permissionedQuantity is uint32, so ticketNumber can't exceed max uint32\\n        require(_ticketNumber < 2**32, 'Ticket number exceeds max');\\n\\n        // gets the stored bit\\n        (\\n            uint256 storedBit,\\n            uint256 localGroup,\\n            uint256 localGroupOffset,\\n            uint256 ticketNumbersIdx\\n        ) = _getBitForTicketNumber(_editionId, _ticketNumber);\\n\\n        require(storedBit == 0, 'Invalid ticket number or NFT already claimed');\\n\\n        // Flip the bit to 1 to indicate that the ticket has been claimed\\n        ticketNumbers[_editionId][ticketNumbersIdx] = localGroup | (uint256(1) << localGroupOffset);\\n\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                '\\\\x19\\\\x01',\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMISSIONED_SALE_TYPEHASH, address(this), msg.sender, _editionId, _ticketNumber))\\n            )\\n        );\\n        return digest.recover(_signature);\\n    }\\n\\n    /// @notice Gets the bit variables associated with a ticket number\\n    /// @param _editionId edition id\\n    /// @param _ticketNumber ticket number\\n    function _getBitForTicketNumber(uint256 _editionId, uint256 _ticketNumber)\\n        private\\n        view\\n        returns (\\n            uint256,\\n            uint256,\\n            uint256,\\n            uint256\\n        )\\n    {\\n        uint256 localGroup; // the bit array for this ticket number\\n        uint256 ticketNumbersIdx; // the index of the the local group\\n        uint256 localGroupOffset; // the offset/index for the ticket number in the local group\\n        uint256 storedBit; // the stored bit at this ticket number's index within the local group\\n        unchecked {\\n            ticketNumbersIdx = _ticketNumber / 256;\\n            localGroupOffset = _ticketNumber % 256;\\n        }\\n\\n        // cache the local group for efficiency\\n        localGroup = ticketNumbers[_editionId][ticketNumbersIdx];\\n\\n        // gets the stored bit\\n        storedBit = (localGroup >> localGroupOffset) & uint256(1);\\n\\n        return (storedBit, localGroup, localGroupOffset, ticketNumbersIdx);\\n    }\\n\\n    function _contractBaseURI() private view returns (string memory) {\\n        string memory contractAddress = Strings.toHexString(uint256(uint160(address(this))), 20);\\n        if (block.chainid == 1) {\\n            return string.concat('https://metadata.sound.xyz/v1/', contractAddress, '/');\\n        } else {\\n            return string.concat(baseURI, contractAddress, '/');\\n        }\\n    }\\n\\n    function setSomeNumber(uint256 _someNumber) external {\\n        someNumber = _someNumber;\\n    }\\n}\\n\",\"keccak256\":\"0x490f193ff80774989e4e657f3a5cdabd9bc151b8841b0503f7b39a7974313110\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 546,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_initialized",
                "offset": 0,
                "slot": "0",
                "type": "t_uint8"
              },
              {
                "astId": 549,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_initializing",
                "offset": 1,
                "slot": "0",
                "type": "t_bool"
              },
              {
                "astId": 2163,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "1",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 2974,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "51",
                "type": "t_array(t_uint256)50_storage"
              },
              {
                "astId": 855,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_name",
                "offset": 0,
                "slot": "101",
                "type": "t_string_storage"
              },
              {
                "astId": 857,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_symbol",
                "offset": 0,
                "slot": "102",
                "type": "t_string_storage"
              },
              {
                "astId": 861,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_owners",
                "offset": 0,
                "slot": "103",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 865,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_balances",
                "offset": 0,
                "slot": "104",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 869,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_tokenApprovals",
                "offset": 0,
                "slot": "105",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 875,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_operatorApprovals",
                "offset": 0,
                "slot": "106",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 1717,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "107",
                "type": "t_array(t_uint256)44_storage"
              },
              {
                "astId": 11701,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_owner",
                "offset": 0,
                "slot": "151",
                "type": "t_address"
              },
              {
                "astId": 11707,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_roles",
                "offset": 0,
                "slot": "152",
                "type": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 11927,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "__gap",
                "offset": 0,
                "slot": "153",
                "type": "t_array(t_uint256)48_storage"
              },
              {
                "astId": 12238,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "baseURI",
                "offset": 0,
                "slot": "201",
                "type": "t_string_storage"
              },
              {
                "astId": 12241,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "atTokenId",
                "offset": 0,
                "slot": "202",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 12244,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "atEditionId",
                "offset": 0,
                "slot": "203",
                "type": "t_struct(Counter)2170_storage"
              },
              {
                "astId": 12249,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "editions",
                "offset": 0,
                "slot": "204",
                "type": "t_mapping(t_uint256,t_struct(Edition)12290_storage)"
              },
              {
                "astId": 12253,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "_tokenToEdition",
                "offset": 0,
                "slot": "205",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 12257,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "depositedForEdition",
                "offset": 0,
                "slot": "206",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 12261,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "withdrawnForEdition",
                "offset": 0,
                "slot": "207",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 12267,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "ticketNumbers",
                "offset": 0,
                "slot": "208",
                "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))"
              },
              {
                "astId": 12269,
                "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                "label": "someNumber",
                "offset": 0,
                "slot": "209",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_address_payable": {
                "encoding": "inplace",
                "label": "address payable",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)44_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[44]",
                "numberOfBytes": "1408"
              },
              "t_array(t_uint256)48_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[48]",
                "numberOfBytes": "1536"
              },
              "t_array(t_uint256)50_storage": {
                "base": "t_uint256",
                "encoding": "inplace",
                "label": "uint256[50]",
                "numberOfBytes": "1600"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_mapping(t_uint256,t_uint256))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(uint256 => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_uint256)"
              },
              "t_mapping(t_uint256,t_struct(Edition)12290_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct TEST_ArtistV6.Edition)",
                "numberOfBytes": "32",
                "value": "t_struct(Edition)12290_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_struct(Counter)2170_storage": {
                "encoding": "inplace",
                "label": "struct CountersUpgradeable.Counter",
                "members": [
                  {
                    "astId": 2169,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "_value",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(Edition)12290_storage": {
                "encoding": "inplace",
                "label": "struct TEST_ArtistV6.Edition",
                "members": [
                  {
                    "astId": 12271,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "fundingRecipient",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address_payable"
                  },
                  {
                    "astId": 12273,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "price",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 12275,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "numSold",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 12277,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "quantity",
                    "offset": 4,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 12279,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "royaltyBPS",
                    "offset": 8,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 12281,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "startTime",
                    "offset": 12,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 12283,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "endTime",
                    "offset": 16,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 12285,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "permissionedQuantity",
                    "offset": 20,
                    "slot": "2",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 12287,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "signerAddress",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_address"
                  },
                  {
                    "astId": 12289,
                    "contract": "contracts/test-contracts/TEST_ArtistV6.sol:TEST_ArtistV6",
                    "label": "baseURI",
                    "offset": 0,
                    "slot": "4",
                    "type": "t_string_storage"
                  }
                ],
                "numberOfBytes": "160"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint8": {
                "encoding": "inplace",
                "label": "uint8",
                "numberOfBytes": "1"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "buyEdition(uint256,bytes,uint256)": {
                "notice": "Creates a new token for the given edition, and assigns it to the buyer"
              },
              "checkTicketNumbers(uint256,uint256[])": {
                "notice": "Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)"
              },
              "constructor": {
                "notice": "Contract constructor"
              },
              "contractURI()": {
                "notice": "Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront"
              },
              "createEdition(address,uint256,uint32,uint32,uint32,uint32,uint32,address,uint256,string)": {
                "notice": "Creates a new edition."
              },
              "editionCount()": {
                "notice": "returns the number of editions for this artist"
              },
              "grantRole(bytes32,address)": {
                "notice": "Register an account as an admin"
              },
              "hasRole(bytes32,address)": {
                "notice": "Check if an account has a role"
              },
              "initialize(address,string,string,string)": {
                "notice": "Initializes the contract"
              },
              "ownersOfTokenIds(uint256[])": {
                "notice": "Returns a list of owner addresses for a given list of token ids"
              },
              "revokeRole(bytes32,address)": {
                "notice": "Revoke a role from an account"
              },
              "royaltyInfo(uint256,uint256)": {
                "notice": "Get royalty information for token"
              },
              "setEditionBaseURI(uint256,string)": {
                "notice": "Sets the base URI for an edition"
              },
              "setEndTime(uint256,uint32)": {
                "notice": "Sets the end time for an edition"
              },
              "setOwnerOverride(address)": {
                "notice": "Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)"
              },
              "setPermissionedQuantity(uint256,uint32)": {
                "notice": "Sets the permissioned quantity for an edition"
              },
              "setSignerAddress(uint256,address)": {
                "notice": "Sets the signature address of an edition"
              },
              "setStartTime(uint256,uint32)": {
                "notice": "Sets the start time for an edition"
              },
              "soundRecoveryAddress()": {
                "notice": "Returns the address (ie: gnosis safe) authorized to change ownership of the contract"
              },
              "supportsInterface(bytes4)": {
                "notice": "Informs other contracts which interfaces this contract supports"
              },
              "tokenToEdition(uint256)": {
                "notice": "Returns the edition id for a given token id"
              },
              "tokenURI(uint256)": {
                "notice": "Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json"
              },
              "totalSupply()": {
                "notice": "The total number of tokens created by this contract"
              },
              "withdrawFunds(uint256)": {
                "notice": "Withdraws from the Artist to the fundingRecipient for an edition"
              }
            },
            "notice": "This contract is used to create & sell song NFTs for the artist who owns the contract.",
            "version": 1
          }
        }
      },
      "contracts/utils/LibUintToString.sol": {
        "LibUintToString": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081786a909ed20bd265df977934a40655d78560fef6b5886b99ed8d134ffce26d64736f6c634300080e0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 PUSH25 0x6A909ED20BD265DF977934A40655D78560FEF6B5886B99ED8D SGT 0x4F 0xFC 0xE2 PUSH14 0x64736F6C634300080E0033000000 ",
              "sourceMap": "62:1102:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;62:1102:45;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081786a909ed20bd265df977934a40655d78560fef6b5886b99ed8d134ffce26d64736f6c634300080e0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 PUSH25 0x6A909ED20BD265DF977934A40655D78560FEF6B5886B99ED8D SGT 0x4F 0xFC 0xE2 PUSH14 0x64736F6C634300080E0033000000 ",
              "sourceMap": "62:1102:45:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "toString(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/LibUintToString.sol\":\"LibUintToString\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/utils/LibUintToString.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.0;\\n\\nlibrary LibUintToString {\\n    uint256 private constant MAX_UINT256_STRING_LENGTH = 78;\\n    uint8 private constant ASCII_DIGIT_OFFSET = 48;\\n\\n    /// @dev Converts a `uint256` value to a string.\\n    /// @param n The integer to convert.\\n    /// @return nstr `n` as a decimal string.\\n    function toString(uint256 n) internal pure returns (string memory nstr) {\\n        if (n == 0) {\\n            return '0';\\n        }\\n        // Overallocate memory\\n        nstr = new string(MAX_UINT256_STRING_LENGTH);\\n        uint256 k = MAX_UINT256_STRING_LENGTH;\\n        // Populate string from right to left (lsb to msb).\\n        while (n != 0) {\\n            assembly {\\n                let char := add(ASCII_DIGIT_OFFSET, mod(n, 10))\\n                mstore(add(nstr, k), char)\\n                k := sub(k, 1)\\n                n := div(n, 10)\\n            }\\n        }\\n        assembly {\\n            // Shift pointer over to actual start of string.\\n            nstr := add(nstr, k)\\n            // Store actual string length.\\n            mstore(nstr, sub(MAX_UINT256_STRING_LENGTH, k))\\n        }\\n        return nstr;\\n    }\\n}\\n\",\"keccak256\":\"0xc6cf2910b6dbbe6c24c28de6a7a200395696e9d7f6ace5b7a345f68c383b7ef2\",\"license\":\"Unlicense\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "sources": {
      "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ],
            "ContextUpgradeable": [
              2164
            ],
            "Initializable": [
              690
            ],
            "OwnableUpgradeable": [
              131
            ]
          },
          "id": 132,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "102:23:0"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
              "file": "../utils/ContextUpgradeable.sol",
              "id": 2,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 132,
              "sourceUnit": 2165,
              "src": "127:41:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "../proxy/utils/Initializable.sol",
              "id": 3,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 132,
              "sourceUnit": 691,
              "src": "169:42:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "748:13:0"
                  },
                  "id": 6,
                  "nodeType": "InheritanceSpecifier",
                  "src": "748:13:0"
                },
                {
                  "baseName": {
                    "id": 7,
                    "name": "ContextUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2164,
                    "src": "763:18:0"
                  },
                  "id": 8,
                  "nodeType": "InheritanceSpecifier",
                  "src": "763:18:0"
                }
              ],
              "canonicalName": "OwnableUpgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4,
                "nodeType": "StructuredDocumentation",
                "src": "213:494:0",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 131,
              "linearizedBaseContracts": [
                131,
                2164,
                690
              ],
              "name": "OwnableUpgradeable",
              "nameLocation": "726:18:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 10,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "804:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 131,
                  "src": "788:22:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "788:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 16,
                  "name": "OwnershipTransferred",
                  "nameLocation": "823:20:0",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "860:13:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 16,
                        "src": "844:29:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "891:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 16,
                        "src": "875:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "875:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:57:0"
                  },
                  "src": "817:84:0"
                },
                {
                  "body": {
                    "id": 25,
                    "nodeType": "Block",
                    "src": "1055:43:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 22,
                            "name": "__Ownable_init_unchained",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37,
                            "src": "1065:24:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 23,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1065:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24,
                        "nodeType": "ExpressionStatement",
                        "src": "1065:26:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17,
                    "nodeType": "StructuredDocumentation",
                    "src": "907:91:0",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 26,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 20,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1038:16:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1038:16:0"
                    }
                  ],
                  "name": "__Ownable_init",
                  "nameLocation": "1012:14:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1026:2:0"
                  },
                  "returnParameters": {
                    "id": 21,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1055:0:0"
                  },
                  "scope": 131,
                  "src": "1003:95:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 36,
                    "nodeType": "Block",
                    "src": "1166:49:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 32,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2149,
                                "src": "1195:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 33,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1195:12:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 31,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 125,
                            "src": "1176:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 34,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1176:32:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35,
                        "nodeType": "ExpressionStatement",
                        "src": "1176:32:0"
                      }
                    ]
                  },
                  "id": 37,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 29,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 28,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1149:16:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1149:16:0"
                    }
                  ],
                  "name": "__Ownable_init_unchained",
                  "nameLocation": "1113:24:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1137:2:0"
                  },
                  "returnParameters": {
                    "id": 30,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1166:0:0"
                  },
                  "scope": 131,
                  "src": "1104:111:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 44,
                    "nodeType": "Block",
                    "src": "1324:41:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 40,
                            "name": "_checkOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 68,
                            "src": "1334:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 41,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1334:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42,
                        "nodeType": "ExpressionStatement",
                        "src": "1334:13:0"
                      },
                      {
                        "id": 43,
                        "nodeType": "PlaceholderStatement",
                        "src": "1357:1:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 38,
                    "nodeType": "StructuredDocumentation",
                    "src": "1221:77:0",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 45,
                  "name": "onlyOwner",
                  "nameLocation": "1312:9:0",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 39,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1321:2:0"
                  },
                  "src": "1303:62:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 53,
                    "nodeType": "Block",
                    "src": "1496:30:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 51,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "1513:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 50,
                        "id": 52,
                        "nodeType": "Return",
                        "src": "1506:13:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 46,
                    "nodeType": "StructuredDocumentation",
                    "src": "1371:65:0",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 54,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "1450:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 47,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1455:2:0"
                  },
                  "returnParameters": {
                    "id": 50,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 49,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 54,
                        "src": "1487:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 48,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1487:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1486:9:0"
                  },
                  "scope": 131,
                  "src": "1441:85:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 67,
                    "nodeType": "Block",
                    "src": "1644:85:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 63,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 59,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 54,
                                  "src": "1662:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 60,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1662:7:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 61,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2149,
                                  "src": "1673:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 62,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1673:12:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1662:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 64,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1687:34:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 58,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1654:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 65,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1654:68:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 66,
                        "nodeType": "ExpressionStatement",
                        "src": "1654:68:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 55,
                    "nodeType": "StructuredDocumentation",
                    "src": "1532:62:0",
                    "text": " @dev Throws if the sender is not the owner."
                  },
                  "id": 68,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkOwner",
                  "nameLocation": "1608:11:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 56,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1619:2:0"
                  },
                  "returnParameters": {
                    "id": 57,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1644:0:0"
                  },
                  "scope": 131,
                  "src": "1599:130:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 81,
                    "nodeType": "Block",
                    "src": "2125:47:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 77,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2162:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 76,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2154:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 75,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2154:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 78,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2154:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 74,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 125,
                            "src": "2135:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 79,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2135:30:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 80,
                        "nodeType": "ExpressionStatement",
                        "src": "2135:30:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 69,
                    "nodeType": "StructuredDocumentation",
                    "src": "1735:331:0",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 82,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 72,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 71,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "2115:9:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2115:9:0"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nameLocation": "2080:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 70,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2097:2:0"
                  },
                  "returnParameters": {
                    "id": 73,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2125:0:0"
                  },
                  "scope": 131,
                  "src": "2071:101:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 104,
                    "nodeType": "Block",
                    "src": "2391:128:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 96,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 91,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 85,
                                "src": "2409:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 94,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2429:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 93,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2421:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 92,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2421:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 95,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2421:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2409:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 97,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2433:40:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 90,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2401:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 98,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2401:73:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 99,
                        "nodeType": "ExpressionStatement",
                        "src": "2401:73:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 101,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 85,
                              "src": "2503:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 100,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 125,
                            "src": "2484:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2484:28:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 103,
                        "nodeType": "ExpressionStatement",
                        "src": "2484:28:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 83,
                    "nodeType": "StructuredDocumentation",
                    "src": "2178:138:0",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 88,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 87,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "2381:9:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2381:9:0"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "2330:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 86,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 85,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2356:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 105,
                        "src": "2348:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 84,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2348:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2347:18:0"
                  },
                  "returnParameters": {
                    "id": 89,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2391:0:0"
                  },
                  "scope": 131,
                  "src": "2321:198:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 124,
                    "nodeType": "Block",
                    "src": "2736:124:0",
                    "statements": [
                      {
                        "assignments": [
                          112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 112,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "2754:8:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 124,
                            "src": "2746:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 111,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2746:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 114,
                        "initialValue": {
                          "id": 113,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "2765:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2746:25:0"
                      },
                      {
                        "expression": {
                          "id": 117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 115,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10,
                            "src": "2781:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 116,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "2790:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2781:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 118,
                        "nodeType": "ExpressionStatement",
                        "src": "2781:17:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 120,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 112,
                              "src": "2834:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 121,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 108,
                              "src": "2844:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 119,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16,
                            "src": "2813:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2813:40:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 123,
                        "nodeType": "EmitStatement",
                        "src": "2808:45:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 106,
                    "nodeType": "StructuredDocumentation",
                    "src": "2525:143:0",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                  },
                  "id": 125,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferOwnership",
                  "nameLocation": "2682:18:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 108,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2709:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 125,
                        "src": "2701:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 107,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2701:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2700:18:0"
                  },
                  "returnParameters": {
                    "id": 110,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2736:0:0"
                  },
                  "scope": 131,
                  "src": "2673:187:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 126,
                    "nodeType": "StructuredDocumentation",
                    "src": "2866:254:0",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 130,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "3145:5:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 131,
                  "src": "3125:25:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$49_storage",
                    "typeString": "uint256[49]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 127,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3125:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 129,
                    "length": {
                      "hexValue": "3439",
                      "id": 128,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3133:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_49_by_1",
                        "typeString": "int_const 49"
                      },
                      "value": "49"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3125:11:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$49_storage_ptr",
                      "typeString": "uint256[49]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 132,
              "src": "708:2445:0",
              "usedErrors": []
            }
          ],
          "src": "102:3052:0"
        },
        "id": 0
      },
      "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
          "exportedSymbols": {
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ]
          },
          "id": 151,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 133,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:23:1"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol",
              "file": "../utils/introspection/IERC165Upgradeable.sol",
              "id": 134,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 151,
              "sourceUnit": 2988,
              "src": "132:55:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 136,
                    "name": "IERC165Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2987,
                    "src": "512:18:1"
                  },
                  "id": 137,
                  "nodeType": "InheritanceSpecifier",
                  "src": "512:18:1"
                }
              ],
              "canonicalName": "IERC2981Upgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 135,
                "nodeType": "StructuredDocumentation",
                "src": "189:289:1",
                "text": " @dev Interface for the NFT Royalty Standard.\n A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\n support for royalty payments across all NFT marketplaces and ecosystem participants.\n _Available since v4.5._"
              },
              "fullyImplemented": false,
              "id": 150,
              "linearizedBaseContracts": [
                150,
                2987
              ],
              "name": "IERC2981Upgradeable",
              "nameLocation": "489:19:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 138,
                    "nodeType": "StructuredDocumentation",
                    "src": "537:231:1",
                    "text": " @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\n exchange. The royalty amount is denominated and should be paid in that same unit of exchange."
                  },
                  "functionSelector": "2a55205a",
                  "id": 149,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "782:11:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 140,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "802:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 149,
                        "src": "794:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 142,
                        "mutability": "mutable",
                        "name": "salePrice",
                        "nameLocation": "819:9:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 149,
                        "src": "811:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 141,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "793:36:1"
                  },
                  "returnParameters": {
                    "id": 148,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 145,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "885:8:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 149,
                        "src": "877:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 144,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "877:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 147,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "903:13:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 149,
                        "src": "895:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 146,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "895:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "876:41:1"
                  },
                  "scope": 150,
                  "src": "773:145:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 151,
              "src": "479:441:1",
              "usedErrors": []
            }
          ],
          "src": "107:814:1"
        },
        "id": 1
      },
      "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol",
          "exportedSymbols": {
            "IERC1822ProxiableUpgradeable": [
              160
            ]
          },
          "id": 161,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 152,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:23:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC1822ProxiableUpgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 153,
                "nodeType": "StructuredDocumentation",
                "src": "138:203:2",
                "text": " @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."
              },
              "fullyImplemented": false,
              "id": 160,
              "linearizedBaseContracts": [
                160
              ],
              "name": "IERC1822ProxiableUpgradeable",
              "nameLocation": "352:28:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 154,
                    "nodeType": "StructuredDocumentation",
                    "src": "387:438:2",
                    "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."
                  },
                  "functionSelector": "52d1902d",
                  "id": 159,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proxiableUUID",
                  "nameLocation": "839:13:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 155,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "852:2:2"
                  },
                  "returnParameters": {
                    "id": 158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 157,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 159,
                        "src": "878:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 156,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "878:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "877:9:2"
                  },
                  "scope": 160,
                  "src": "830:57:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 161,
              "src": "342:547:2",
              "usedErrors": []
            }
          ],
          "src": "113:777:2"
        },
        "id": 2
      },
      "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ],
            "ERC1967UpgradeUpgradeable": [
              529
            ],
            "IBeaconUpgradeable": [
              539
            ],
            "IERC1822ProxiableUpgradeable": [
              160
            ],
            "Initializable": [
              690
            ],
            "StorageSlotUpgradeable": [
              2298
            ]
          },
          "id": 530,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 162,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "116:23:3"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol",
              "file": "../beacon/IBeaconUpgradeable.sol",
              "id": 163,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 530,
              "sourceUnit": 540,
              "src": "141:42:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol",
              "file": "../../interfaces/draft-IERC1822Upgradeable.sol",
              "id": 164,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 530,
              "sourceUnit": 161,
              "src": "184:56:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol",
              "file": "../../utils/AddressUpgradeable.sol",
              "id": 165,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 530,
              "sourceUnit": 2123,
              "src": "241:44:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol",
              "file": "../../utils/StorageSlotUpgradeable.sol",
              "id": 166,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 530,
              "sourceUnit": 2299,
              "src": "286:48:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "../utils/Initializable.sol",
              "id": 167,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 530,
              "sourceUnit": 691,
              "src": "335:36:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 169,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "657:13:3"
                  },
                  "id": 170,
                  "nodeType": "InheritanceSpecifier",
                  "src": "657:13:3"
                }
              ],
              "canonicalName": "ERC1967UpgradeUpgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 168,
                "nodeType": "StructuredDocumentation",
                "src": "373:236:3",
                "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._\n @custom:oz-upgrades-unsafe-allow delegatecall"
              },
              "fullyImplemented": true,
              "id": 529,
              "linearizedBaseContracts": [
                529,
                690
              ],
              "name": "ERC1967UpgradeUpgradeable",
              "nameLocation": "628:25:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 175,
                    "nodeType": "Block",
                    "src": "736:7:3",
                    "statements": []
                  },
                  "id": 176,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 173,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 172,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "719:16:3"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "719:16:3"
                    }
                  ],
                  "name": "__ERC1967Upgrade_init",
                  "nameLocation": "686:21:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 171,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "707:2:3"
                  },
                  "returnParameters": {
                    "id": 174,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "736:0:3"
                  },
                  "scope": 529,
                  "src": "677:66:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 181,
                    "nodeType": "Block",
                    "src": "818:7:3",
                    "statements": []
                  },
                  "id": 182,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 179,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 178,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "801:16:3"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "801:16:3"
                    }
                  ],
                  "name": "__ERC1967Upgrade_init_unchained",
                  "nameLocation": "758:31:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 177,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "789:2:3"
                  },
                  "returnParameters": {
                    "id": 180,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "818:0:3"
                  },
                  "scope": 529,
                  "src": "749:76:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 185,
                  "mutability": "constant",
                  "name": "_ROLLBACK_SLOT",
                  "nameLocation": "934:14:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "909:108:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 183,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "909:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433",
                    "id": 184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "951:66:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1",
                      "typeString": "int_const 3304...(69 digits omitted)...9347"
                    },
                    "value": "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 186,
                    "nodeType": "StructuredDocumentation",
                    "src": "1024:214:3",
                    "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 189,
                  "mutability": "constant",
                  "name": "_IMPLEMENTATION_SLOT",
                  "nameLocation": "1269:20:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1243:115:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 187,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1243:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263",
                    "id": 188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1292:66:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1",
                      "typeString": "int_const 2444...(69 digits omitted)...5612"
                    },
                    "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 190,
                    "nodeType": "StructuredDocumentation",
                    "src": "1365:68:3",
                    "text": " @dev Emitted when the implementation is upgraded."
                  },
                  "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
                  "id": 194,
                  "name": "Upgraded",
                  "nameLocation": "1444:8:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 192,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nameLocation": "1469:14:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 194,
                        "src": "1453:30:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1453:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1452:32:3"
                  },
                  "src": "1438:47:3"
                },
                {
                  "body": {
                    "id": 206,
                    "nodeType": "Block",
                    "src": "1625:89:3",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 202,
                                "name": "_IMPLEMENTATION_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 189,
                                "src": "1680:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 200,
                                "name": "StorageSlotUpgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2298,
                                "src": "1642:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$2298_$",
                                  "typeString": "type(library StorageSlotUpgradeable)"
                                }
                              },
                              "id": 201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2264,
                              "src": "1642:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2244_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"
                              }
                            },
                            "id": 203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1642:59:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                              "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"
                            }
                          },
                          "id": 204,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2243,
                          "src": "1642:65:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 199,
                        "id": 205,
                        "nodeType": "Return",
                        "src": "1635:72:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 195,
                    "nodeType": "StructuredDocumentation",
                    "src": "1491:67:3",
                    "text": " @dev Returns the current implementation address."
                  },
                  "id": 207,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getImplementation",
                  "nameLocation": "1572:18:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 196,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1590:2:3"
                  },
                  "returnParameters": {
                    "id": 199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 198,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 207,
                        "src": "1616:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1616:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1615:9:3"
                  },
                  "scope": 529,
                  "src": "1563:151:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 230,
                    "nodeType": "Block",
                    "src": "1868:218:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 216,
                                  "name": "newImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 210,
                                  "src": "1916:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 214,
                                  "name": "AddressUpgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2122,
                                  "src": "1886:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2122_$",
                                    "typeString": "type(library AddressUpgradeable)"
                                  }
                                },
                                "id": 215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1897,
                                "src": "1886:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1886:48:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1936:47:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65",
                                "typeString": "literal_string \"ERC1967: new implementation is not a contract\""
                              },
                              "value": "ERC1967: new implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65",
                                "typeString": "literal_string \"ERC1967: new implementation is not a contract\""
                              }
                            ],
                            "id": 213,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1878:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1878:106:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 220,
                        "nodeType": "ExpressionStatement",
                        "src": "1878:106:3"
                      },
                      {
                        "expression": {
                          "id": 228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 224,
                                  "name": "_IMPLEMENTATION_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 189,
                                  "src": "2032:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 221,
                                  "name": "StorageSlotUpgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2298,
                                  "src": "1994:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$2298_$",
                                    "typeString": "type(library StorageSlotUpgradeable)"
                                  }
                                },
                                "id": 223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2264,
                                "src": "1994:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2244_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"
                                }
                              },
                              "id": 225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1994:59:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                                "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"
                              }
                            },
                            "id": 226,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2243,
                            "src": "1994:65:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 227,
                            "name": "newImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 210,
                            "src": "2062:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1994:85:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 229,
                        "nodeType": "ExpressionStatement",
                        "src": "1994:85:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 208,
                    "nodeType": "StructuredDocumentation",
                    "src": "1720:80:3",
                    "text": " @dev Stores a new address in the EIP1967 implementation slot."
                  },
                  "id": 231,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setImplementation",
                  "nameLocation": "1814:18:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 210,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1841:17:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 231,
                        "src": "1833:25:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 209,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1833:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1832:27:3"
                  },
                  "returnParameters": {
                    "id": 212,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1868:0:3"
                  },
                  "scope": 529,
                  "src": "1805:281:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 245,
                    "nodeType": "Block",
                    "src": "2248:96:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 238,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 234,
                              "src": "2277:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 237,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 231,
                            "src": "2258:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2258:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 240,
                        "nodeType": "ExpressionStatement",
                        "src": "2258:37:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 242,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 234,
                              "src": "2319:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 241,
                            "name": "Upgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 194,
                            "src": "2310:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2310:27:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 244,
                        "nodeType": "EmitStatement",
                        "src": "2305:32:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 232,
                    "nodeType": "StructuredDocumentation",
                    "src": "2092:95:3",
                    "text": " @dev Perform implementation upgrade\n Emits an {Upgraded} event."
                  },
                  "id": 246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeTo",
                  "nameLocation": "2201:10:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 235,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 234,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "2220:17:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 246,
                        "src": "2212:25:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 233,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2212:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2211:27:3"
                  },
                  "returnParameters": {
                    "id": 236,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2248:0:3"
                  },
                  "scope": 529,
                  "src": "2192:152:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 273,
                    "nodeType": "Block",
                    "src": "2606:160:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 257,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 249,
                              "src": "2627:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 256,
                            "name": "_upgradeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 246,
                            "src": "2616:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2616:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 259,
                        "nodeType": "ExpressionStatement",
                        "src": "2616:29:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 260,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 251,
                                "src": "2659:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2659:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2673:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2659:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "id": 264,
                            "name": "forceCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 253,
                            "src": "2678:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2659:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 272,
                        "nodeType": "IfStatement",
                        "src": "2655:105:3",
                        "trueBody": {
                          "id": 271,
                          "nodeType": "Block",
                          "src": "2689:71:3",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 267,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 249,
                                    "src": "2725:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 268,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 251,
                                    "src": "2744:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 266,
                                  "name": "_functionDelegateCall",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 523,
                                  "src": "2703:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (address,bytes memory) returns (bytes memory)"
                                  }
                                },
                                "id": 269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2703:46:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 270,
                              "nodeType": "ExpressionStatement",
                              "src": "2703:46:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 247,
                    "nodeType": "StructuredDocumentation",
                    "src": "2350:123:3",
                    "text": " @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."
                  },
                  "id": 274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeToAndCall",
                  "nameLocation": "2487:17:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 249,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "2522:17:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 274,
                        "src": "2514:25:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 248,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2514:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 251,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2562:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 274,
                        "src": "2549:17:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 250,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2549:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 253,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "2581:9:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 274,
                        "src": "2576:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 252,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2504:92:3"
                  },
                  "returnParameters": {
                    "id": 255,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2606:0:3"
                  },
                  "scope": 529,
                  "src": "2478:288:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 326,
                    "nodeType": "Block",
                    "src": "3070:842:3",
                    "statements": [
                      {
                        "condition": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 286,
                                "name": "_ROLLBACK_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 185,
                                "src": "3422:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 284,
                                "name": "StorageSlotUpgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2298,
                                "src": "3384:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$2298_$",
                                  "typeString": "type(library StorageSlotUpgradeable)"
                                }
                              },
                              "id": 285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBooleanSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2275,
                              "src": "3384:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$2247_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.BooleanSlot storage pointer)"
                              }
                            },
                            "id": 287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3384:53:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BooleanSlot_$2247_storage_ptr",
                              "typeString": "struct StorageSlotUpgradeable.BooleanSlot storage pointer"
                            }
                          },
                          "id": 288,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2246,
                          "src": "3384:59:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 324,
                          "nodeType": "Block",
                          "src": "3513:393:3",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 309,
                                    "nodeType": "Block",
                                    "src": "3618:115:3",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              "id": 305,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 303,
                                                "name": "slot",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 300,
                                                "src": "3644:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "id": 304,
                                                "name": "_IMPLEMENTATION_SLOT",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 189,
                                                "src": "3652:20:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "src": "3644:28:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            {
                                              "hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944",
                                              "id": 306,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3674:43:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c",
                                                "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""
                                              },
                                              "value": "ERC1967Upgrade: unsupported proxiableUUID"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c",
                                                "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""
                                              }
                                            ],
                                            "id": 302,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -18,
                                              -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "3636:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (bool,string memory) pure"
                                            }
                                          },
                                          "id": 307,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3636:82:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 308,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3636:82:3"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 310,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 301,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 300,
                                        "mutability": "mutable",
                                        "name": "slot",
                                        "nameLocation": "3612:4:3",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 310,
                                        "src": "3604:12:3",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 299,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3604:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "3603:14:3"
                                  },
                                  "src": "3595:138:3"
                                },
                                {
                                  "block": {
                                    "id": 315,
                                    "nodeType": "Block",
                                    "src": "3740:89:3",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053",
                                              "id": 312,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3765:48:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24",
                                                "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""
                                              },
                                              "value": "ERC1967Upgrade: new implementation is not UUPS"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24",
                                                "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""
                                              }
                                            ],
                                            "id": 311,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "3758:6:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 313,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3758:56:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 314,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3758:56:3"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 316,
                                  "nodeType": "TryCatchClause",
                                  "src": "3734:95:3"
                                }
                              ],
                              "externalCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 295,
                                        "name": "newImplementation",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 277,
                                        "src": "3560:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 294,
                                      "name": "IERC1822ProxiableUpgradeable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 160,
                                      "src": "3531:28:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1822ProxiableUpgradeable_$160_$",
                                        "typeString": "type(contract IERC1822ProxiableUpgradeable)"
                                      }
                                    },
                                    "id": 296,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3531:47:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1822ProxiableUpgradeable_$160",
                                      "typeString": "contract IERC1822ProxiableUpgradeable"
                                    }
                                  },
                                  "id": 297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "proxiableUUID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 159,
                                  "src": "3531:61:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3531:63:3",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 317,
                              "nodeType": "TryStatement",
                              "src": "3527:302:3"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 319,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 277,
                                    "src": "3860:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 320,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 279,
                                    "src": "3879:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 321,
                                    "name": "forceCall",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 281,
                                    "src": "3885:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 318,
                                  "name": "_upgradeToAndCall",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 274,
                                  "src": "3842:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bytes memory,bool)"
                                  }
                                },
                                "id": 322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3842:53:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 323,
                              "nodeType": "ExpressionStatement",
                              "src": "3842:53:3"
                            }
                          ]
                        },
                        "id": 325,
                        "nodeType": "IfStatement",
                        "src": "3380:526:3",
                        "trueBody": {
                          "id": 293,
                          "nodeType": "Block",
                          "src": "3445:62:3",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 290,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 277,
                                    "src": "3478:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 289,
                                  "name": "_setImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 231,
                                  "src": "3459:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3459:37:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 292,
                              "nodeType": "ExpressionStatement",
                              "src": "3459:37:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 275,
                    "nodeType": "StructuredDocumentation",
                    "src": "2772:161:3",
                    "text": " @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."
                  },
                  "id": 327,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeToAndCallUUPS",
                  "nameLocation": "2947:21:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 277,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "2986:17:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 327,
                        "src": "2978:25:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2978:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 279,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3026:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 327,
                        "src": "3013:17:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 278,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3013:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 281,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "3045:9:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 327,
                        "src": "3040:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 280,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3040:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2968:92:3"
                  },
                  "returnParameters": {
                    "id": 283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3070:0:3"
                  },
                  "scope": 529,
                  "src": "2938:974:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 328,
                    "nodeType": "StructuredDocumentation",
                    "src": "3918:189:3",
                    "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 331,
                  "mutability": "constant",
                  "name": "_ADMIN_SLOT",
                  "nameLocation": "4138:11:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "4112:106:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 329,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4112:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033",
                    "id": 330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4152:66:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1",
                      "typeString": "int_const 8195...(69 digits omitted)...7091"
                    },
                    "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 332,
                    "nodeType": "StructuredDocumentation",
                    "src": "4225:67:3",
                    "text": " @dev Emitted when the admin account has changed."
                  },
                  "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f",
                  "id": 338,
                  "name": "AdminChanged",
                  "nameLocation": "4303:12:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 334,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "previousAdmin",
                        "nameLocation": "4324:13:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 338,
                        "src": "4316:21:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4316:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 336,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4347:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 338,
                        "src": "4339:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4339:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4315:41:3"
                  },
                  "src": "4297:60:3"
                },
                {
                  "body": {
                    "id": 350,
                    "nodeType": "Block",
                    "src": "4471:80:3",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 346,
                                "name": "_ADMIN_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 331,
                                "src": "4526:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 344,
                                "name": "StorageSlotUpgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2298,
                                "src": "4488:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$2298_$",
                                  "typeString": "type(library StorageSlotUpgradeable)"
                                }
                              },
                              "id": 345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2264,
                              "src": "4488:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2244_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"
                              }
                            },
                            "id": 347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4488:50:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                              "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"
                            }
                          },
                          "id": 348,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2243,
                          "src": "4488:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 343,
                        "id": 349,
                        "nodeType": "Return",
                        "src": "4481:63:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 339,
                    "nodeType": "StructuredDocumentation",
                    "src": "4363:50:3",
                    "text": " @dev Returns the current admin."
                  },
                  "id": 351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAdmin",
                  "nameLocation": "4427:9:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 340,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4436:2:3"
                  },
                  "returnParameters": {
                    "id": 343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 342,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 351,
                        "src": "4462:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 341,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4462:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4461:9:3"
                  },
                  "scope": 529,
                  "src": "4418:133:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 376,
                    "nodeType": "Block",
                    "src": "4678:167:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 358,
                                "name": "newAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 354,
                                "src": "4696:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 361,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4716:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4708:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 359,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4708:7:3",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4708:10:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4696:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373",
                              "id": 364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4720:40:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5",
                                "typeString": "literal_string \"ERC1967: new admin is the zero address\""
                              },
                              "value": "ERC1967: new admin is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5",
                                "typeString": "literal_string \"ERC1967: new admin is the zero address\""
                              }
                            ],
                            "id": 357,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4688:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4688:73:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 366,
                        "nodeType": "ExpressionStatement",
                        "src": "4688:73:3"
                      },
                      {
                        "expression": {
                          "id": 374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 370,
                                  "name": "_ADMIN_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 331,
                                  "src": "4809:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 367,
                                  "name": "StorageSlotUpgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2298,
                                  "src": "4771:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$2298_$",
                                    "typeString": "type(library StorageSlotUpgradeable)"
                                  }
                                },
                                "id": 369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2264,
                                "src": "4771:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2244_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"
                                }
                              },
                              "id": 371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4771:50:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                                "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"
                              }
                            },
                            "id": 372,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2243,
                            "src": "4771:56:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 373,
                            "name": "newAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 354,
                            "src": "4830:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4771:67:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 375,
                        "nodeType": "ExpressionStatement",
                        "src": "4771:67:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 352,
                    "nodeType": "StructuredDocumentation",
                    "src": "4557:71:3",
                    "text": " @dev Stores a new address in the EIP1967 admin slot."
                  },
                  "id": 377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setAdmin",
                  "nameLocation": "4642:9:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 354,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4660:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "4652:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4652:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4651:18:3"
                  },
                  "returnParameters": {
                    "id": 356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4678:0:3"
                  },
                  "scope": 529,
                  "src": "4633:212:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 393,
                    "nodeType": "Block",
                    "src": "5005:86:3",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 384,
                                "name": "_getAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 351,
                                "src": "5033:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5033:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 386,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 380,
                              "src": "5046:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 383,
                            "name": "AdminChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 338,
                            "src": "5020:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5020:35:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 388,
                        "nodeType": "EmitStatement",
                        "src": "5015:40:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 390,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 380,
                              "src": "5075:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 389,
                            "name": "_setAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 377,
                            "src": "5065:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5065:19:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 392,
                        "nodeType": "ExpressionStatement",
                        "src": "5065:19:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 378,
                    "nodeType": "StructuredDocumentation",
                    "src": "4851:100:3",
                    "text": " @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."
                  },
                  "id": 394,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_changeAdmin",
                  "nameLocation": "4965:12:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 381,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 380,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4986:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "4978:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4978:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4977:18:3"
                  },
                  "returnParameters": {
                    "id": 382,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5005:0:3"
                  },
                  "scope": 529,
                  "src": "4956:135:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 395,
                    "nodeType": "StructuredDocumentation",
                    "src": "5097:232:3",
                    "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."
                  },
                  "id": 398,
                  "mutability": "constant",
                  "name": "_BEACON_SLOT",
                  "nameLocation": "5360:12:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "5334:107:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 396,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5334:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530",
                    "id": 397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5375:66:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1",
                      "typeString": "int_const 7415...(69 digits omitted)...4704"
                    },
                    "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 399,
                    "nodeType": "StructuredDocumentation",
                    "src": "5448:60:3",
                    "text": " @dev Emitted when the beacon is upgraded."
                  },
                  "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e",
                  "id": 403,
                  "name": "BeaconUpgraded",
                  "nameLocation": "5519:14:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 401,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "5550:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 403,
                        "src": "5534:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 400,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5534:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5533:24:3"
                  },
                  "src": "5513:45:3"
                },
                {
                  "body": {
                    "id": 415,
                    "nodeType": "Block",
                    "src": "5674:81:3",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 411,
                                "name": "_BEACON_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 398,
                                "src": "5729:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 409,
                                "name": "StorageSlotUpgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2298,
                                "src": "5691:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$2298_$",
                                  "typeString": "type(library StorageSlotUpgradeable)"
                                }
                              },
                              "id": 410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2264,
                              "src": "5691:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2244_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"
                              }
                            },
                            "id": 412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5691:51:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                              "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"
                            }
                          },
                          "id": 413,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2243,
                          "src": "5691:57:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 408,
                        "id": 414,
                        "nodeType": "Return",
                        "src": "5684:64:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 404,
                    "nodeType": "StructuredDocumentation",
                    "src": "5564:51:3",
                    "text": " @dev Returns the current beacon."
                  },
                  "id": 416,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBeacon",
                  "nameLocation": "5629:10:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5639:2:3"
                  },
                  "returnParameters": {
                    "id": 408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 407,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 416,
                        "src": "5665:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5665:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5664:9:3"
                  },
                  "scope": 529,
                  "src": "5620:135:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 451,
                    "nodeType": "Block",
                    "src": "5884:368:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 425,
                                  "name": "newBeacon",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 419,
                                  "src": "5932:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 423,
                                  "name": "AddressUpgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2122,
                                  "src": "5902:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2122_$",
                                    "typeString": "type(library AddressUpgradeable)"
                                  }
                                },
                                "id": 424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1897,
                                "src": "5902:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5902:40:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374",
                              "id": 427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5944:39:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470",
                                "typeString": "literal_string \"ERC1967: new beacon is not a contract\""
                              },
                              "value": "ERC1967: new beacon is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470",
                                "typeString": "literal_string \"ERC1967: new beacon is not a contract\""
                              }
                            ],
                            "id": 422,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5894:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5894:90:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 429,
                        "nodeType": "ExpressionStatement",
                        "src": "5894:90:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 434,
                                          "name": "newBeacon",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 419,
                                          "src": "6064:9:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 433,
                                        "name": "IBeaconUpgradeable",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 539,
                                        "src": "6045:18:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IBeaconUpgradeable_$539_$",
                                          "typeString": "type(contract IBeaconUpgradeable)"
                                        }
                                      },
                                      "id": 435,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6045:29:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IBeaconUpgradeable_$539",
                                        "typeString": "contract IBeaconUpgradeable"
                                      }
                                    },
                                    "id": 436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "implementation",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 538,
                                    "src": "6045:44:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 437,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6045:46:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 431,
                                  "name": "AddressUpgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2122,
                                  "src": "6015:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2122_$",
                                    "typeString": "type(library AddressUpgradeable)"
                                  }
                                },
                                "id": 432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1897,
                                "src": "6015:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6015:77:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6106:50:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8",
                                "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""
                              },
                              "value": "ERC1967: beacon implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8",
                                "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""
                              }
                            ],
                            "id": 430,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5994:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5994:172:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 441,
                        "nodeType": "ExpressionStatement",
                        "src": "5994:172:3"
                      },
                      {
                        "expression": {
                          "id": 449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 445,
                                  "name": "_BEACON_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 398,
                                  "src": "6214:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 442,
                                  "name": "StorageSlotUpgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2298,
                                  "src": "6176:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$2298_$",
                                    "typeString": "type(library StorageSlotUpgradeable)"
                                  }
                                },
                                "id": 444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2264,
                                "src": "6176:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2244_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"
                                }
                              },
                              "id": 446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6176:51:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                                "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"
                              }
                            },
                            "id": 447,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2243,
                            "src": "6176:57:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 448,
                            "name": "newBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 419,
                            "src": "6236:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6176:69:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 450,
                        "nodeType": "ExpressionStatement",
                        "src": "6176:69:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 417,
                    "nodeType": "StructuredDocumentation",
                    "src": "5761:71:3",
                    "text": " @dev Stores a new beacon in the EIP1967 beacon slot."
                  },
                  "id": 452,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setBeacon",
                  "nameLocation": "5846:10:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 419,
                        "mutability": "mutable",
                        "name": "newBeacon",
                        "nameLocation": "5865:9:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 452,
                        "src": "5857:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 418,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5857:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5856:19:3"
                  },
                  "returnParameters": {
                    "id": 421,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5884:0:3"
                  },
                  "scope": 529,
                  "src": "5837:415:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 487,
                    "nodeType": "Block",
                    "src": "6681:221:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 463,
                              "name": "newBeacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 455,
                              "src": "6702:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 462,
                            "name": "_setBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 452,
                            "src": "6691:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6691:21:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 465,
                        "nodeType": "ExpressionStatement",
                        "src": "6691:21:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 467,
                              "name": "newBeacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 455,
                              "src": "6742:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 466,
                            "name": "BeaconUpgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 403,
                            "src": "6727:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6727:25:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 469,
                        "nodeType": "EmitStatement",
                        "src": "6722:30:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 470,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 457,
                                "src": "6766:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "6766:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6780:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6766:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "id": 474,
                            "name": "forceCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 459,
                            "src": "6785:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6766:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 486,
                        "nodeType": "IfStatement",
                        "src": "6762:134:3",
                        "trueBody": {
                          "id": 485,
                          "nodeType": "Block",
                          "src": "6796:100:3",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 478,
                                            "name": "newBeacon",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 455,
                                            "src": "6851:9:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 477,
                                          "name": "IBeaconUpgradeable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 539,
                                          "src": "6832:18:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IBeaconUpgradeable_$539_$",
                                            "typeString": "type(contract IBeaconUpgradeable)"
                                          }
                                        },
                                        "id": 479,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6832:29:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IBeaconUpgradeable_$539",
                                          "typeString": "contract IBeaconUpgradeable"
                                        }
                                      },
                                      "id": 480,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "implementation",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 538,
                                      "src": "6832:44:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                        "typeString": "function () view external returns (address)"
                                      }
                                    },
                                    "id": 481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6832:46:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 482,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 457,
                                    "src": "6880:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 476,
                                  "name": "_functionDelegateCall",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 523,
                                  "src": "6810:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (address,bytes memory) returns (bytes memory)"
                                  }
                                },
                                "id": 483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6810:75:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 484,
                              "nodeType": "ExpressionStatement",
                              "src": "6810:75:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 453,
                    "nodeType": "StructuredDocumentation",
                    "src": "6258:292:3",
                    "text": " @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."
                  },
                  "id": 488,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeBeaconToAndCall",
                  "nameLocation": "6564:23:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 455,
                        "mutability": "mutable",
                        "name": "newBeacon",
                        "nameLocation": "6605:9:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "6597:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 454,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6597:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 457,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6637:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "6624:17:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 456,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6624:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 459,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "6656:9:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "6651:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 458,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6651:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6587:84:3"
                  },
                  "returnParameters": {
                    "id": 461,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6681:0:3"
                  },
                  "scope": 529,
                  "src": "6555:347:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 522,
                    "nodeType": "Block",
                    "src": "7185:358:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 501,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 491,
                                  "src": "7233:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 499,
                                  "name": "AddressUpgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2122,
                                  "src": "7203:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2122_$",
                                    "typeString": "type(library AddressUpgradeable)"
                                  }
                                },
                                "id": 500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1897,
                                "src": "7203:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7203:37:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7242:40:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              },
                              "value": "Address: delegate call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              }
                            ],
                            "id": 498,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7195:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7195:88:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 505,
                        "nodeType": "ExpressionStatement",
                        "src": "7195:88:3"
                      },
                      {
                        "assignments": [
                          507,
                          509
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 507,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "7359:7:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 522,
                            "src": "7354:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 506,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7354:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 509,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "7381:10:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 522,
                            "src": "7368:23:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 508,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7368:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 514,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 512,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 493,
                              "src": "7415:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 510,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 491,
                              "src": "7395:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "7395:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7395:25:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7353:67:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 517,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 507,
                              "src": "7473:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 518,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 509,
                              "src": "7482:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                              "id": 519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7494:41:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              },
                              "value": "Address: low-level delegate call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              }
                            ],
                            "expression": {
                              "id": 515,
                              "name": "AddressUpgradeable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2122,
                              "src": "7437:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2122_$",
                                "typeString": "type(library AddressUpgradeable)"
                              }
                            },
                            "id": 516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "verifyCallResult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2121,
                            "src": "7437:35:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7437:99:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 497,
                        "id": 521,
                        "nodeType": "Return",
                        "src": "7430:106:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 489,
                    "nodeType": "StructuredDocumentation",
                    "src": "6908:175:3",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 523,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_functionDelegateCall",
                  "nameLocation": "7097:21:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 491,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "7127:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 523,
                        "src": "7119:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7119:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 493,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7148:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 523,
                        "src": "7135:17:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 492,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7135:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7118:35:3"
                  },
                  "returnParameters": {
                    "id": 497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 496,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 523,
                        "src": "7171:12:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 495,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7171:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7170:14:3"
                  },
                  "scope": 529,
                  "src": "7088:455:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 524,
                    "nodeType": "StructuredDocumentation",
                    "src": "7549:254:3",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 528,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "7828:5:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "7808:25:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$50_storage",
                    "typeString": "uint256[50]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 525,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "7808:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 527,
                    "length": {
                      "hexValue": "3530",
                      "id": 526,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7816:2:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "7808:11:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                      "typeString": "uint256[50]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 530,
              "src": "610:7226:3",
              "usedErrors": []
            }
          ],
          "src": "116:7721:3"
        },
        "id": 3
      },
      "@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol",
          "exportedSymbols": {
            "IBeaconUpgradeable": [
              539
            ]
          },
          "id": 540,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 531,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "93:23:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IBeaconUpgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 532,
                "nodeType": "StructuredDocumentation",
                "src": "118:79:4",
                "text": " @dev This is the interface that {BeaconProxy} expects of its beacon."
              },
              "fullyImplemented": false,
              "id": 539,
              "linearizedBaseContracts": [
                539
              ],
              "name": "IBeaconUpgradeable",
              "nameLocation": "208:18:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 533,
                    "nodeType": "StructuredDocumentation",
                    "src": "233:162:4",
                    "text": " @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."
                  },
                  "functionSelector": "5c60da1b",
                  "id": 538,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "implementation",
                  "nameLocation": "409:14:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 534,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "423:2:4"
                  },
                  "returnParameters": {
                    "id": 537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 536,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 538,
                        "src": "449:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 535,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "449:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "448:9:4"
                  },
                  "scope": 539,
                  "src": "400:58:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 540,
              "src": "198:262:4",
              "usedErrors": []
            }
          ],
          "src": "93:368:4"
        },
        "id": 4
      },
      "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ],
            "Initializable": [
              690
            ]
          },
          "id": 691,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 541,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:23:5"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol",
              "file": "../../utils/AddressUpgradeable.sol",
              "id": 542,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 691,
              "sourceUnit": 2123,
              "src": "138:44:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Initializable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 543,
                "nodeType": "StructuredDocumentation",
                "src": "184:2198:5",
                "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="
              },
              "fullyImplemented": true,
              "id": 690,
              "linearizedBaseContracts": [
                690
              ],
              "name": "Initializable",
              "nameLocation": "2401:13:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 544,
                    "nodeType": "StructuredDocumentation",
                    "src": "2421:109:5",
                    "text": " @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"
                  },
                  "id": 546,
                  "mutability": "mutable",
                  "name": "_initialized",
                  "nameLocation": "2549:12:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 690,
                  "src": "2535:26:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 545,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2535:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 547,
                    "nodeType": "StructuredDocumentation",
                    "src": "2568:91:5",
                    "text": " @dev Indicates that the contract is in the process of being initialized."
                  },
                  "id": 549,
                  "mutability": "mutable",
                  "name": "_initializing",
                  "nameLocation": "2677:13:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 690,
                  "src": "2664:26:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 548,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2664:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 550,
                    "nodeType": "StructuredDocumentation",
                    "src": "2697:90:5",
                    "text": " @dev Triggered when the contract has been initialized or reinitialized."
                  },
                  "eventSelector": "7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498",
                  "id": 554,
                  "name": "Initialized",
                  "nameLocation": "2798:11:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 553,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 552,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "2816:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 554,
                        "src": "2810:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 551,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2810:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2809:15:5"
                  },
                  "src": "2792:33:5"
                },
                {
                  "body": {
                    "id": 609,
                    "nodeType": "Block",
                    "src": "3101:483:5",
                    "statements": [
                      {
                        "assignments": [
                          558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 558,
                            "mutability": "mutable",
                            "name": "isTopLevelCall",
                            "nameLocation": "3116:14:5",
                            "nodeType": "VariableDeclaration",
                            "scope": 609,
                            "src": "3111:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 557,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3111:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 561,
                        "initialValue": {
                          "id": 560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3133:14:5",
                          "subExpression": {
                            "id": 559,
                            "name": "_initializing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 549,
                            "src": "3134:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3111:36:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 567,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 563,
                                      "name": "isTopLevelCall",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 558,
                                      "src": "3179:14:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 566,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 564,
                                        "name": "_initialized",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 546,
                                        "src": "3197:12:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 565,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3212:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "3197:16:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "3179:34:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 568,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3178:36:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 580,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 576,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "3219:45:5",
                                      "subExpression": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 573,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -28,
                                                "src": "3258:4:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_Initializable_$690",
                                                  "typeString": "contract Initializable"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_Initializable_$690",
                                                  "typeString": "contract Initializable"
                                                }
                                              ],
                                              "id": 572,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3250:7:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 571,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3250:7:5",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 574,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3250:13:5",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "id": 569,
                                            "name": "AddressUpgradeable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2122,
                                            "src": "3220:18:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2122_$",
                                              "typeString": "type(library AddressUpgradeable)"
                                            }
                                          },
                                          "id": 570,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "isContract",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1897,
                                          "src": "3220:29:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 575,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3220:44:5",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 579,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 577,
                                        "name": "_initialized",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 546,
                                        "src": "3268:12:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 578,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3284:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "3268:17:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "3219:66:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 581,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3218:68:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3178:108:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564",
                              "id": 583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3300:48:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              },
                              "value": "Initializable: contract is already initialized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              }
                            ],
                            "id": 562,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3157:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3157:201:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 585,
                        "nodeType": "ExpressionStatement",
                        "src": "3157:201:5"
                      },
                      {
                        "expression": {
                          "id": 588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 586,
                            "name": "_initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 546,
                            "src": "3368:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3383:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3368:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 589,
                        "nodeType": "ExpressionStatement",
                        "src": "3368:16:5"
                      },
                      {
                        "condition": {
                          "id": 590,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 558,
                          "src": "3398:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 596,
                        "nodeType": "IfStatement",
                        "src": "3394:65:5",
                        "trueBody": {
                          "id": 595,
                          "nodeType": "Block",
                          "src": "3414:45:5",
                          "statements": [
                            {
                              "expression": {
                                "id": 593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 591,
                                  "name": "_initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 549,
                                  "src": "3428:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 592,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3444:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "3428:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 594,
                              "nodeType": "ExpressionStatement",
                              "src": "3428:20:5"
                            }
                          ]
                        }
                      },
                      {
                        "id": 597,
                        "nodeType": "PlaceholderStatement",
                        "src": "3468:1:5"
                      },
                      {
                        "condition": {
                          "id": 598,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 558,
                          "src": "3483:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 608,
                        "nodeType": "IfStatement",
                        "src": "3479:99:5",
                        "trueBody": {
                          "id": 607,
                          "nodeType": "Block",
                          "src": "3499:79:5",
                          "statements": [
                            {
                              "expression": {
                                "id": 601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 599,
                                  "name": "_initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 549,
                                  "src": "3513:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "66616c7365",
                                  "id": 600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3529:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "3513:21:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 602,
                              "nodeType": "ExpressionStatement",
                              "src": "3513:21:5"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 604,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3565:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 603,
                                  "name": "Initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 554,
                                  "src": "3553:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$",
                                    "typeString": "function (uint8)"
                                  }
                                },
                                "id": 605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3553:14:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 606,
                              "nodeType": "EmitStatement",
                              "src": "3548:19:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 555,
                    "nodeType": "StructuredDocumentation",
                    "src": "2831:242:5",
                    "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`."
                  },
                  "id": 610,
                  "name": "initializer",
                  "nameLocation": "3087:11:5",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 556,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3098:2:5"
                  },
                  "src": "3078:506:5",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 642,
                    "nodeType": "Block",
                    "src": "4399:255:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "4417:14:5",
                                "subExpression": {
                                  "id": 616,
                                  "name": "_initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 549,
                                  "src": "4418:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 618,
                                  "name": "_initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 546,
                                  "src": "4435:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 619,
                                  "name": "version",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 613,
                                  "src": "4450:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "4435:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4417:40:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564",
                              "id": 622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4459:48:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              },
                              "value": "Initializable: contract is already initialized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              }
                            ],
                            "id": 615,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4409:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4409:99:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 624,
                        "nodeType": "ExpressionStatement",
                        "src": "4409:99:5"
                      },
                      {
                        "expression": {
                          "id": 627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 625,
                            "name": "_initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 546,
                            "src": "4518:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 626,
                            "name": "version",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 613,
                            "src": "4533:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "4518:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 628,
                        "nodeType": "ExpressionStatement",
                        "src": "4518:22:5"
                      },
                      {
                        "expression": {
                          "id": 631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 629,
                            "name": "_initializing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 549,
                            "src": "4550:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4566:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4550:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 632,
                        "nodeType": "ExpressionStatement",
                        "src": "4550:20:5"
                      },
                      {
                        "id": 633,
                        "nodeType": "PlaceholderStatement",
                        "src": "4580:1:5"
                      },
                      {
                        "expression": {
                          "id": 636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 634,
                            "name": "_initializing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 549,
                            "src": "4591:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4607:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "4591:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 637,
                        "nodeType": "ExpressionStatement",
                        "src": "4591:21:5"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 639,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 613,
                              "src": "4639:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 638,
                            "name": "Initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 554,
                            "src": "4627:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$",
                              "typeString": "function (uint8)"
                            }
                          },
                          "id": 640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4627:20:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 641,
                        "nodeType": "EmitStatement",
                        "src": "4622:25:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 611,
                    "nodeType": "StructuredDocumentation",
                    "src": "3590:766:5",
                    "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n initialization step. This is essential to configure modules that are added through upgrades and that require\n initialization.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator."
                  },
                  "id": 643,
                  "name": "reinitializer",
                  "nameLocation": "4370:13:5",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 613,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "4390:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 643,
                        "src": "4384:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 612,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4384:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4383:15:5"
                  },
                  "src": "4361:293:5",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 652,
                    "nodeType": "Block",
                    "src": "4892:97:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 647,
                              "name": "_initializing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 549,
                              "src": "4910:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67",
                              "id": 648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4925:45:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b",
                                "typeString": "literal_string \"Initializable: contract is not initializing\""
                              },
                              "value": "Initializable: contract is not initializing"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b",
                                "typeString": "literal_string \"Initializable: contract is not initializing\""
                              }
                            ],
                            "id": 646,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4902:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4902:69:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 650,
                        "nodeType": "ExpressionStatement",
                        "src": "4902:69:5"
                      },
                      {
                        "id": 651,
                        "nodeType": "PlaceholderStatement",
                        "src": "4981:1:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 644,
                    "nodeType": "StructuredDocumentation",
                    "src": "4660:199:5",
                    "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."
                  },
                  "id": 653,
                  "name": "onlyInitializing",
                  "nameLocation": "4873:16:5",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 645,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4889:2:5"
                  },
                  "src": "4864:125:5",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 688,
                    "nodeType": "Block",
                    "src": "5437:230:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "5455:14:5",
                              "subExpression": {
                                "id": 658,
                                "name": "_initializing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 549,
                                "src": "5456:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67",
                              "id": 660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5471:41:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a",
                                "typeString": "literal_string \"Initializable: contract is initializing\""
                              },
                              "value": "Initializable: contract is initializing"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a",
                                "typeString": "literal_string \"Initializable: contract is initializing\""
                              }
                            ],
                            "id": 657,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5447:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5447:66:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 662,
                        "nodeType": "ExpressionStatement",
                        "src": "5447:66:5"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 663,
                            "name": "_initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 546,
                            "src": "5527:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 666,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5547:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 665,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5547:5:5",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  }
                                ],
                                "id": 664,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "5542:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5542:11:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint8",
                                "typeString": "type(uint8)"
                              }
                            },
                            "id": 668,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "5542:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "5527:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 687,
                        "nodeType": "IfStatement",
                        "src": "5523:138:5",
                        "trueBody": {
                          "id": 686,
                          "nodeType": "Block",
                          "src": "5559:102:5",
                          "statements": [
                            {
                              "expression": {
                                "id": 676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 670,
                                  "name": "_initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 546,
                                  "src": "5573:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 673,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5593:5:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 672,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5593:5:5",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        }
                                      ],
                                      "id": 671,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "5588:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 674,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5588:11:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint8",
                                      "typeString": "type(uint8)"
                                    }
                                  },
                                  "id": 675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "5588:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "5573:30:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 677,
                              "nodeType": "ExpressionStatement",
                              "src": "5573:30:5"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 681,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5639:5:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint8_$",
                                            "typeString": "type(uint8)"
                                          },
                                          "typeName": {
                                            "id": 680,
                                            "name": "uint8",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5639:5:5",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_uint8_$",
                                            "typeString": "type(uint8)"
                                          }
                                        ],
                                        "id": 679,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "5634:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 682,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5634:11:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_uint8",
                                        "typeString": "type(uint8)"
                                      }
                                    },
                                    "id": 683,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "5634:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 678,
                                  "name": "Initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 554,
                                  "src": "5622:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$",
                                    "typeString": "function (uint8)"
                                  }
                                },
                                "id": 684,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5622:28:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 685,
                              "nodeType": "EmitStatement",
                              "src": "5617:33:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 654,
                    "nodeType": "StructuredDocumentation",
                    "src": "4995:388:5",
                    "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies."
                  },
                  "id": 689,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_disableInitializers",
                  "nameLocation": "5397:20:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 655,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5417:2:5"
                  },
                  "returnParameters": {
                    "id": 656,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5437:0:5"
                  },
                  "scope": 690,
                  "src": "5388:279:5",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 691,
              "src": "2383:3286:5",
              "usedErrors": []
            }
          ],
          "src": "113:5557:5"
        },
        "id": 5
      },
      "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ],
            "ERC1967UpgradeUpgradeable": [
              529
            ],
            "IBeaconUpgradeable": [
              539
            ],
            "IERC1822ProxiableUpgradeable": [
              160
            ],
            "Initializable": [
              690
            ],
            "StorageSlotUpgradeable": [
              2298
            ],
            "UUPSUpgradeable": [
              826
            ]
          },
          "id": 827,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 692,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "115:23:6"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol",
              "file": "../../interfaces/draft-IERC1822Upgradeable.sol",
              "id": 693,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 827,
              "sourceUnit": 161,
              "src": "140:56:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol",
              "file": "../ERC1967/ERC1967UpgradeUpgradeable.sol",
              "id": 694,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 827,
              "sourceUnit": 530,
              "src": "197:50:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "./Initializable.sol",
              "id": 695,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 827,
              "sourceUnit": 691,
              "src": "248:29:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 697,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "965:13:6"
                  },
                  "id": 698,
                  "nodeType": "InheritanceSpecifier",
                  "src": "965:13:6"
                },
                {
                  "baseName": {
                    "id": 699,
                    "name": "IERC1822ProxiableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 160,
                    "src": "980:28:6"
                  },
                  "id": 700,
                  "nodeType": "InheritanceSpecifier",
                  "src": "980:28:6"
                },
                {
                  "baseName": {
                    "id": 701,
                    "name": "ERC1967UpgradeUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 529,
                    "src": "1010:25:6"
                  },
                  "id": 702,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1010:25:6"
                }
              ],
              "canonicalName": "UUPSUpgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 696,
                "nodeType": "StructuredDocumentation",
                "src": "279:648:6",
                "text": " @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n _Available since v4.1._"
              },
              "fullyImplemented": false,
              "id": 826,
              "linearizedBaseContracts": [
                826,
                529,
                160,
                690
              ],
              "name": "UUPSUpgradeable",
              "nameLocation": "946:15:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 707,
                    "nodeType": "Block",
                    "src": "1102:7:6",
                    "statements": []
                  },
                  "id": 708,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 705,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 704,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1085:16:6"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1085:16:6"
                    }
                  ],
                  "name": "__UUPSUpgradeable_init",
                  "nameLocation": "1051:22:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 703,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1073:2:6"
                  },
                  "returnParameters": {
                    "id": 706,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1102:0:6"
                  },
                  "scope": 826,
                  "src": "1042:67:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 713,
                    "nodeType": "Block",
                    "src": "1185:7:6",
                    "statements": []
                  },
                  "id": 714,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 711,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 710,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1168:16:6"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1168:16:6"
                    }
                  ],
                  "name": "__UUPSUpgradeable_init_unchained",
                  "nameLocation": "1124:32:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 709,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1156:2:6"
                  },
                  "returnParameters": {
                    "id": 712,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1185:0:6"
                  },
                  "scope": 826,
                  "src": "1115:77:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 715,
                    "nodeType": "StructuredDocumentation",
                    "src": "1197:87:6",
                    "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"
                  },
                  "id": 721,
                  "mutability": "immutable",
                  "name": "__self",
                  "nameLocation": "1315:6:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "1289:48:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 716,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1289:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "id": 719,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "1332:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UUPSUpgradeable_$826",
                          "typeString": "contract UUPSUpgradeable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_UUPSUpgradeable_$826",
                          "typeString": "contract UUPSUpgradeable"
                        }
                      ],
                      "id": 718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1324:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 717,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1324:7:6",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1324:13:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 743,
                    "nodeType": "Block",
                    "src": "1863:205:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 727,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "1889:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_UUPSUpgradeable_$826",
                                      "typeString": "contract UUPSUpgradeable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_UUPSUpgradeable_$826",
                                      "typeString": "contract UUPSUpgradeable"
                                    }
                                  ],
                                  "id": 726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1881:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 725,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1881:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1881:13:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 729,
                                "name": "__self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 721,
                                "src": "1898:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1881:23:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682064656c656761746563616c6c",
                              "id": 731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1906:46:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb",
                                "typeString": "literal_string \"Function must be called through delegatecall\""
                              },
                              "value": "Function must be called through delegatecall"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb",
                                "typeString": "literal_string \"Function must be called through delegatecall\""
                              }
                            ],
                            "id": 724,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1873:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1873:80:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 733,
                        "nodeType": "ExpressionStatement",
                        "src": "1873:80:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 735,
                                  "name": "_getImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 207,
                                  "src": "1971:18:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1971:20:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 737,
                                "name": "__self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 721,
                                "src": "1995:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1971:30:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f756768206163746976652070726f7879",
                              "id": 739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2003:46:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434",
                                "typeString": "literal_string \"Function must be called through active proxy\""
                              },
                              "value": "Function must be called through active proxy"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434",
                                "typeString": "literal_string \"Function must be called through active proxy\""
                              }
                            ],
                            "id": 734,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1963:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1963:87:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 741,
                        "nodeType": "ExpressionStatement",
                        "src": "1963:87:6"
                      },
                      {
                        "id": 742,
                        "nodeType": "PlaceholderStatement",
                        "src": "2060:1:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 722,
                    "nodeType": "StructuredDocumentation",
                    "src": "1344:493:6",
                    "text": " @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."
                  },
                  "id": 744,
                  "name": "onlyProxy",
                  "nameLocation": "1851:9:6",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 723,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1860:2:6"
                  },
                  "src": "1842:226:6",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 758,
                    "nodeType": "Block",
                    "src": "2298:120:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 750,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2324:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_UUPSUpgradeable_$826",
                                      "typeString": "contract UUPSUpgradeable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_UUPSUpgradeable_$826",
                                      "typeString": "contract UUPSUpgradeable"
                                    }
                                  ],
                                  "id": 749,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2316:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 748,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2316:7:6",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2316:13:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 752,
                                "name": "__self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 721,
                                "src": "2333:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2316:23:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "555550535570677261646561626c653a206d757374206e6f742062652063616c6c6564207468726f7567682064656c656761746563616c6c",
                              "id": 754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2341:58:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4",
                                "typeString": "literal_string \"UUPSUpgradeable: must not be called through delegatecall\""
                              },
                              "value": "UUPSUpgradeable: must not be called through delegatecall"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4",
                                "typeString": "literal_string \"UUPSUpgradeable: must not be called through delegatecall\""
                              }
                            ],
                            "id": 747,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2308:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2308:92:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 756,
                        "nodeType": "ExpressionStatement",
                        "src": "2308:92:6"
                      },
                      {
                        "id": 757,
                        "nodeType": "PlaceholderStatement",
                        "src": "2410:1:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 745,
                    "nodeType": "StructuredDocumentation",
                    "src": "2074:195:6",
                    "text": " @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."
                  },
                  "id": 759,
                  "name": "notDelegated",
                  "nameLocation": "2283:12:6",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 746,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2295:2:6"
                  },
                  "src": "2274:144:6",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    159
                  ],
                  "body": {
                    "id": 770,
                    "nodeType": "Block",
                    "src": "3091:44:6",
                    "statements": [
                      {
                        "expression": {
                          "id": 768,
                          "name": "_IMPLEMENTATION_SLOT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 189,
                          "src": "3108:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 767,
                        "id": 769,
                        "nodeType": "Return",
                        "src": "3101:27:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 760,
                    "nodeType": "StructuredDocumentation",
                    "src": "2424:575:6",
                    "text": " @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate that the this implementation remains valid after an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
                  },
                  "functionSelector": "52d1902d",
                  "id": 771,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 764,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 763,
                        "name": "notDelegated",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 759,
                        "src": "3060:12:6"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3060:12:6"
                    }
                  ],
                  "name": "proxiableUUID",
                  "nameLocation": "3013:13:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 762,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3051:8:6"
                  },
                  "parameters": {
                    "id": 761,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3026:2:6"
                  },
                  "returnParameters": {
                    "id": 767,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 766,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 771,
                        "src": "3082:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 765,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3082:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3081:9:6"
                  },
                  "scope": 826,
                  "src": "3004:131:6",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 792,
                    "nodeType": "Block",
                    "src": "3388:124:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 780,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 774,
                              "src": "3416:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 779,
                            "name": "_authorizeUpgrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 820,
                            "src": "3398:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3398:36:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 782,
                        "nodeType": "ExpressionStatement",
                        "src": "3398:36:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 784,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 774,
                              "src": "3466:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3495:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "3485:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                },
                                "typeName": {
                                  "id": 785,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3489:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                }
                              },
                              "id": 788,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3485:12:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3499:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 783,
                            "name": "_upgradeToAndCallUUPS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 327,
                            "src": "3444:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,bytes memory,bool)"
                            }
                          },
                          "id": 790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3444:61:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 791,
                        "nodeType": "ExpressionStatement",
                        "src": "3444:61:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 772,
                    "nodeType": "StructuredDocumentation",
                    "src": "3141:169:6",
                    "text": " @dev Upgrade the implementation of the proxy to `newImplementation`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event."
                  },
                  "functionSelector": "3659cfe6",
                  "id": 793,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 777,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 776,
                        "name": "onlyProxy",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 744,
                        "src": "3378:9:6"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3378:9:6"
                    }
                  ],
                  "name": "upgradeTo",
                  "nameLocation": "3324:9:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 774,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "3342:17:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 793,
                        "src": "3334:25:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3334:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3333:27:6"
                  },
                  "returnParameters": {
                    "id": 778,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3388:0:6"
                  },
                  "scope": 826,
                  "src": "3315:197:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 813,
                    "nodeType": "Block",
                    "src": "3868:115:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 804,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 796,
                              "src": "3896:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 803,
                            "name": "_authorizeUpgrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 820,
                            "src": "3878:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3878:36:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 806,
                        "nodeType": "ExpressionStatement",
                        "src": "3878:36:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 808,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 796,
                              "src": "3946:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 809,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 798,
                              "src": "3965:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3971:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 807,
                            "name": "_upgradeToAndCallUUPS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 327,
                            "src": "3924:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,bytes memory,bool)"
                            }
                          },
                          "id": 811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3924:52:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 812,
                        "nodeType": "ExpressionStatement",
                        "src": "3924:52:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 794,
                    "nodeType": "StructuredDocumentation",
                    "src": "3518:238:6",
                    "text": " @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event."
                  },
                  "functionSelector": "4f1ef286",
                  "id": 814,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 801,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 800,
                        "name": "onlyProxy",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 744,
                        "src": "3858:9:6"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3858:9:6"
                    }
                  ],
                  "name": "upgradeToAndCall",
                  "nameLocation": "3770:16:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 799,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 796,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "3795:17:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 814,
                        "src": "3787:25:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3787:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 798,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3827:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 814,
                        "src": "3814:17:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 797,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3814:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3786:46:6"
                  },
                  "returnParameters": {
                    "id": 802,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3868:0:6"
                  },
                  "scope": 826,
                  "src": "3761:222:6",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 815,
                    "nodeType": "StructuredDocumentation",
                    "src": "3989:397:6",
                    "text": " @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeTo} and {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```"
                  },
                  "id": 820,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_authorizeUpgrade",
                  "nameLocation": "4400:17:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 818,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 817,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "4426:17:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 820,
                        "src": "4418:25:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 816,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4418:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4417:27:6"
                  },
                  "returnParameters": {
                    "id": 819,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4461:0:6"
                  },
                  "scope": 826,
                  "src": "4391:71:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 821,
                    "nodeType": "StructuredDocumentation",
                    "src": "4468:254:6",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 825,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "4747:5:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "4727:25:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$50_storage",
                    "typeString": "uint256[50]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 822,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4727:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 824,
                    "length": {
                      "hexValue": "3530",
                      "id": 823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4735:2:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4727:11:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                      "typeString": "uint256[50]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 827,
              "src": "928:3827:6",
              "usedErrors": []
            }
          ],
          "src": "115:4641:6"
        },
        "id": 6
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ],
            "ContextUpgradeable": [
              2164
            ],
            "ERC165Upgradeable": [
              2975
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC721MetadataUpgradeable": [
              1879
            ],
            "IERC721ReceiverUpgradeable": [
              1736
            ],
            "IERC721Upgradeable": [
              1852
            ],
            "Initializable": [
              690
            ],
            "StringsUpgradeable": [
              2524
            ]
          },
          "id": 1719,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 828,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:23:7"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol",
              "file": "./IERC721Upgradeable.sol",
              "id": 829,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 1853,
              "src": "132:34:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol",
              "file": "./IERC721ReceiverUpgradeable.sol",
              "id": 830,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 1737,
              "src": "167:42:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol",
              "file": "./extensions/IERC721MetadataUpgradeable.sol",
              "id": 831,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 1880,
              "src": "210:53:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol",
              "file": "../../utils/AddressUpgradeable.sol",
              "id": 832,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 2123,
              "src": "264:44:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
              "file": "../../utils/ContextUpgradeable.sol",
              "id": 833,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 2165,
              "src": "309:44:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol",
              "file": "../../utils/StringsUpgradeable.sol",
              "id": 834,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 2525,
              "src": "354:44:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol",
              "file": "../../utils/introspection/ERC165Upgradeable.sol",
              "id": 835,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 2976,
              "src": "399:57:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "../../proxy/utils/Initializable.sol",
              "id": 836,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1719,
              "sourceUnit": 691,
              "src": "457:45:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 838,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "781:13:7"
                  },
                  "id": 839,
                  "nodeType": "InheritanceSpecifier",
                  "src": "781:13:7"
                },
                {
                  "baseName": {
                    "id": 840,
                    "name": "ContextUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2164,
                    "src": "796:18:7"
                  },
                  "id": 841,
                  "nodeType": "InheritanceSpecifier",
                  "src": "796:18:7"
                },
                {
                  "baseName": {
                    "id": 842,
                    "name": "ERC165Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2975,
                    "src": "816:17:7"
                  },
                  "id": 843,
                  "nodeType": "InheritanceSpecifier",
                  "src": "816:17:7"
                },
                {
                  "baseName": {
                    "id": 844,
                    "name": "IERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1852,
                    "src": "835:18:7"
                  },
                  "id": 845,
                  "nodeType": "InheritanceSpecifier",
                  "src": "835:18:7"
                },
                {
                  "baseName": {
                    "id": 846,
                    "name": "IERC721MetadataUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1879,
                    "src": "855:26:7"
                  },
                  "id": 847,
                  "nodeType": "InheritanceSpecifier",
                  "src": "855:26:7"
                }
              ],
              "canonicalName": "ERC721Upgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 837,
                "nodeType": "StructuredDocumentation",
                "src": "504:246:7",
                "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."
              },
              "fullyImplemented": true,
              "id": 1718,
              "linearizedBaseContracts": [
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "ERC721Upgradeable",
              "nameLocation": "760:17:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 850,
                  "libraryName": {
                    "id": 848,
                    "name": "AddressUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2122,
                    "src": "894:18:7"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "888:37:7",
                  "typeName": {
                    "id": 849,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "917:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 853,
                  "libraryName": {
                    "id": 851,
                    "name": "StringsUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2524,
                    "src": "936:18:7"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "930:37:7",
                  "typeName": {
                    "id": 852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "959:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 855,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1006:5:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "991:20:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 854,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "991:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 857,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1053:7:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "1038:22:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 856,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1038:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 861,
                  "mutability": "mutable",
                  "name": "_owners",
                  "nameLocation": "1149:7:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "1113:43:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 860,
                    "keyType": {
                      "id": 858,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1121:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1113:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 859,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1132:7:7",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 865,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "1243:9:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "1207:45:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 864,
                    "keyType": {
                      "id": 862,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1215:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1207:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 863,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1226:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 869,
                  "mutability": "mutable",
                  "name": "_tokenApprovals",
                  "nameLocation": "1344:15:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "1308:51:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 868,
                    "keyType": {
                      "id": 866,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1316:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1308:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 867,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1327:7:7",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 875,
                  "mutability": "mutable",
                  "name": "_operatorApprovals",
                  "nameLocation": "1467:18:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "1414:71:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 874,
                    "keyType": {
                      "id": 870,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1422:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1414:44:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 873,
                      "keyType": {
                        "id": 871,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1441:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1433:24:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 872,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1452:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 890,
                    "nodeType": "Block",
                    "src": "1698:56:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 886,
                              "name": "name_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 878,
                              "src": "1732:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 887,
                              "name": "symbol_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 880,
                              "src": "1739:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 885,
                            "name": "__ERC721_init_unchained",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 909,
                            "src": "1708:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1708:39:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 889,
                        "nodeType": "ExpressionStatement",
                        "src": "1708:39:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 876,
                    "nodeType": "StructuredDocumentation",
                    "src": "1492:108:7",
                    "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
                  },
                  "id": 891,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 883,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 882,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1681:16:7"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1681:16:7"
                    }
                  ],
                  "name": "__ERC721_init",
                  "nameLocation": "1614:13:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 878,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "1642:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 891,
                        "src": "1628:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 877,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1628:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 880,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "1663:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 891,
                        "src": "1649:21:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 879,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1649:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1627:44:7"
                  },
                  "returnParameters": {
                    "id": 884,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1698:0:7"
                  },
                  "scope": 1718,
                  "src": "1605:149:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 908,
                    "nodeType": "Block",
                    "src": "1863:57:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 900,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 855,
                            "src": "1873:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 901,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 893,
                            "src": "1881:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1873:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 903,
                        "nodeType": "ExpressionStatement",
                        "src": "1873:13:7"
                      },
                      {
                        "expression": {
                          "id": 906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 904,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 857,
                            "src": "1896:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 905,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 895,
                            "src": "1906:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1896:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 907,
                        "nodeType": "ExpressionStatement",
                        "src": "1896:17:7"
                      }
                    ]
                  },
                  "id": 909,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 898,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 897,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1846:16:7"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1846:16:7"
                    }
                  ],
                  "name": "__ERC721_init_unchained",
                  "nameLocation": "1769:23:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 893,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "1807:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 909,
                        "src": "1793:19:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 892,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1793:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 895,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "1828:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 909,
                        "src": "1814:21:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 894,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1814:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1792:44:7"
                  },
                  "returnParameters": {
                    "id": 899,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1863:0:7"
                  },
                  "scope": 1718,
                  "src": "1760:160:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2969,
                    2986
                  ],
                  "body": {
                    "id": 939,
                    "nodeType": "Block",
                    "src": "2117:214:7",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 920,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 912,
                                "src": "2146:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 922,
                                      "name": "IERC721Upgradeable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1852,
                                      "src": "2166:18:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1852_$",
                                        "typeString": "type(contract IERC721Upgradeable)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1852_$",
                                        "typeString": "type(contract IERC721Upgradeable)"
                                      }
                                    ],
                                    "id": 921,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2161:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2161:24:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Upgradeable_$1852",
                                    "typeString": "type(contract IERC721Upgradeable)"
                                  }
                                },
                                "id": 924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2161:36:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2146:51:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 926,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 912,
                                "src": "2213:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 928,
                                      "name": "IERC721MetadataUpgradeable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1879,
                                      "src": "2233:26:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721MetadataUpgradeable_$1879_$",
                                        "typeString": "type(contract IERC721MetadataUpgradeable)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721MetadataUpgradeable_$1879_$",
                                        "typeString": "type(contract IERC721MetadataUpgradeable)"
                                      }
                                    ],
                                    "id": 927,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2228:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2228:32:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721MetadataUpgradeable_$1879",
                                    "typeString": "type(contract IERC721MetadataUpgradeable)"
                                  }
                                },
                                "id": 930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2228:44:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2213:59:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2146:126:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 935,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 912,
                                "src": "2312:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 933,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2288:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_super$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract super ERC721Upgradeable)"
                                }
                              },
                              "id": 934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2969,
                              "src": "2288:23:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2288:36:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2146:178:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 919,
                        "id": 938,
                        "nodeType": "Return",
                        "src": "2127:197:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 910,
                    "nodeType": "StructuredDocumentation",
                    "src": "1926:56:7",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1996:17:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 916,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 914,
                        "name": "ERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2975,
                        "src": "2063:17:7"
                      },
                      {
                        "id": 915,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "2082:18:7"
                      }
                    ],
                    "src": "2054:47:7"
                  },
                  "parameters": {
                    "id": 913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 912,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "2021:11:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 940,
                        "src": "2014:18:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 911,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2014:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2013:20:7"
                  },
                  "returnParameters": {
                    "id": 919,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 918,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 940,
                        "src": "2111:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 917,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2111:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2110:6:7"
                  },
                  "scope": 1718,
                  "src": "1987:344:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1777
                  ],
                  "body": {
                    "id": 963,
                    "nodeType": "Block",
                    "src": "2471:123:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 950,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 943,
                                "src": "2489:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2506:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 952,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2498:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 951,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2498:7:7",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 954,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2498:10:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2489:19:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572",
                              "id": 956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2510:43:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                                "typeString": "literal_string \"ERC721: address zero is not a valid owner\""
                              },
                              "value": "ERC721: address zero is not a valid owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                                "typeString": "literal_string \"ERC721: address zero is not a valid owner\""
                              }
                            ],
                            "id": 949,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2481:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2481:73:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 958,
                        "nodeType": "ExpressionStatement",
                        "src": "2481:73:7"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 959,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 865,
                            "src": "2571:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 961,
                          "indexExpression": {
                            "id": 960,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 943,
                            "src": "2581:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2571:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 948,
                        "id": 962,
                        "nodeType": "Return",
                        "src": "2564:23:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 941,
                    "nodeType": "StructuredDocumentation",
                    "src": "2337:48:7",
                    "text": " @dev See {IERC721-balanceOf}."
                  },
                  "functionSelector": "70a08231",
                  "id": 964,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "2399:9:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 945,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2444:8:7"
                  },
                  "parameters": {
                    "id": 944,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 943,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2417:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 964,
                        "src": "2409:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 942,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2409:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2408:15:7"
                  },
                  "returnParameters": {
                    "id": 948,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 947,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 964,
                        "src": "2462:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 946,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2462:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2461:9:7"
                  },
                  "scope": 1718,
                  "src": "2390:204:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1785
                  ],
                  "body": {
                    "id": 991,
                    "nodeType": "Block",
                    "src": "2732:137:7",
                    "statements": [
                      {
                        "assignments": [
                          974
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 974,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "2750:5:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 991,
                            "src": "2742:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 973,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2742:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 978,
                        "initialValue": {
                          "baseExpression": {
                            "id": 975,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 861,
                            "src": "2758:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 977,
                          "indexExpression": {
                            "id": 976,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 967,
                            "src": "2766:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2758:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2742:32:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 980,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 974,
                                "src": "2792:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2809:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 982,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2801:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 981,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2801:7:7",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2801:10:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2792:19:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                              "id": 986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2813:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                                "typeString": "literal_string \"ERC721: invalid token ID\""
                              },
                              "value": "ERC721: invalid token ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                                "typeString": "literal_string \"ERC721: invalid token ID\""
                              }
                            ],
                            "id": 979,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2784:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2784:56:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 988,
                        "nodeType": "ExpressionStatement",
                        "src": "2784:56:7"
                      },
                      {
                        "expression": {
                          "id": 989,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 974,
                          "src": "2857:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 972,
                        "id": 990,
                        "nodeType": "Return",
                        "src": "2850:12:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 965,
                    "nodeType": "StructuredDocumentation",
                    "src": "2600:46:7",
                    "text": " @dev See {IERC721-ownerOf}."
                  },
                  "functionSelector": "6352211e",
                  "id": 992,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "2660:7:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 969,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2705:8:7"
                  },
                  "parameters": {
                    "id": 968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 967,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2676:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 992,
                        "src": "2668:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 966,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2668:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2667:17:7"
                  },
                  "returnParameters": {
                    "id": 972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 971,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 992,
                        "src": "2723:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 970,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2723:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2722:9:7"
                  },
                  "scope": 1718,
                  "src": "2651:218:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1864
                  ],
                  "body": {
                    "id": 1001,
                    "nodeType": "Block",
                    "src": "3000:29:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 999,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 855,
                          "src": "3017:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 998,
                        "id": 1000,
                        "nodeType": "Return",
                        "src": "3010:12:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 993,
                    "nodeType": "StructuredDocumentation",
                    "src": "2875:51:7",
                    "text": " @dev See {IERC721Metadata-name}."
                  },
                  "functionSelector": "06fdde03",
                  "id": 1002,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "2940:4:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 995,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2967:8:7"
                  },
                  "parameters": {
                    "id": 994,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2944:2:7"
                  },
                  "returnParameters": {
                    "id": 998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 997,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1002,
                        "src": "2985:13:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 996,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2985:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2984:15:7"
                  },
                  "scope": 1718,
                  "src": "2931:98:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1870
                  ],
                  "body": {
                    "id": 1011,
                    "nodeType": "Block",
                    "src": "3164:31:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 1009,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 857,
                          "src": "3181:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 1008,
                        "id": 1010,
                        "nodeType": "Return",
                        "src": "3174:14:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1003,
                    "nodeType": "StructuredDocumentation",
                    "src": "3035:53:7",
                    "text": " @dev See {IERC721Metadata-symbol}."
                  },
                  "functionSelector": "95d89b41",
                  "id": 1012,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "3102:6:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1005,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3131:8:7"
                  },
                  "parameters": {
                    "id": 1004,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3108:2:7"
                  },
                  "returnParameters": {
                    "id": 1008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1007,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1012,
                        "src": "3149:13:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1006,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3149:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3148:15:7"
                  },
                  "scope": 1718,
                  "src": "3093:102:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1878
                  ],
                  "body": {
                    "id": 1050,
                    "nodeType": "Block",
                    "src": "3349:188:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1022,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1015,
                              "src": "3374:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1021,
                            "name": "_requireMinted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1628,
                            "src": "3359:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) view"
                            }
                          },
                          "id": 1023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3359:23:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1024,
                        "nodeType": "ExpressionStatement",
                        "src": "3359:23:7"
                      },
                      {
                        "assignments": [
                          1026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1026,
                            "mutability": "mutable",
                            "name": "baseURI",
                            "nameLocation": "3407:7:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 1050,
                            "src": "3393:21:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 1025,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3393:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1029,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1027,
                            "name": "_baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1060,
                            "src": "3417:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () view returns (string memory)"
                            }
                          },
                          "id": 1028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3417:10:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3393:34:7"
                      },
                      {
                        "expression": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1032,
                                    "name": "baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1026,
                                    "src": "3450:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 1031,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3444:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 1030,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3444:5:7",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3444:14:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3444:21:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3468:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3444:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "hexValue": "",
                            "id": 1047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3528:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          },
                          "id": 1048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "3444:86:7",
                          "trueExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 1041,
                                    "name": "baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1026,
                                    "src": "3496:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 1042,
                                        "name": "tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1015,
                                        "src": "3505:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1043,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2386,
                                      "src": "3505:16:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 1044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3505:18:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1039,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "3479:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1040,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "3479:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3479:45:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3472:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 1037,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "3472:6:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3472:53:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1020,
                        "id": 1049,
                        "nodeType": "Return",
                        "src": "3437:93:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1013,
                    "nodeType": "StructuredDocumentation",
                    "src": "3201:55:7",
                    "text": " @dev See {IERC721Metadata-tokenURI}."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 1051,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "3270:8:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1017,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3316:8:7"
                  },
                  "parameters": {
                    "id": 1016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1015,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3287:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1051,
                        "src": "3279:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1014,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3279:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3278:17:7"
                  },
                  "returnParameters": {
                    "id": 1020,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1019,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1051,
                        "src": "3334:13:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1018,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3334:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3333:15:7"
                  },
                  "scope": 1718,
                  "src": "3261:276:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1059,
                    "nodeType": "Block",
                    "src": "3845:26:7",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "",
                          "id": 1057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3862:2:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                            "typeString": "literal_string \"\""
                          },
                          "value": ""
                        },
                        "functionReturnParameters": 1056,
                        "id": 1058,
                        "nodeType": "Return",
                        "src": "3855:9:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1052,
                    "nodeType": "StructuredDocumentation",
                    "src": "3543:231:7",
                    "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."
                  },
                  "id": 1060,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_baseURI",
                  "nameLocation": "3788:8:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1053,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3796:2:7"
                  },
                  "returnParameters": {
                    "id": 1056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1055,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1060,
                        "src": "3830:13:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1054,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3830:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3829:15:7"
                  },
                  "scope": 1718,
                  "src": "3779:92:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    1825
                  ],
                  "body": {
                    "id": 1102,
                    "nodeType": "Block",
                    "src": "3998:348:7",
                    "statements": [
                      {
                        "assignments": [
                          1070
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1070,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "4016:5:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 1102,
                            "src": "4008:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1069,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4008:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1075,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1073,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1065,
                              "src": "4050:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1071,
                              "name": "ERC721Upgradeable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1718,
                              "src": "4024:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                "typeString": "type(contract ERC721Upgradeable)"
                              }
                            },
                            "id": 1072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 992,
                            "src": "4024:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 1074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4024:34:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4008:50:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1077,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1063,
                                "src": "4076:2:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 1078,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1070,
                                "src": "4082:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4076:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
                              "id": 1080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4089:35:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                                "typeString": "literal_string \"ERC721: approval to current owner\""
                              },
                              "value": "ERC721: approval to current owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                                "typeString": "literal_string \"ERC721: approval to current owner\""
                              }
                            ],
                            "id": 1076,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4068:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4068:57:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1082,
                        "nodeType": "ExpressionStatement",
                        "src": "4068:57:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1084,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "4157:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4157:12:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1086,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1070,
                                  "src": "4173:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4157:21:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1089,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1070,
                                    "src": "4199:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1090,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2149,
                                      "src": "4206:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 1091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4206:12:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1088,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1156,
                                  "src": "4182:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 1092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4182:37:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4157:62:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                              "id": 1094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4233:64:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304",
                                "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""
                              },
                              "value": "ERC721: approve caller is not token owner nor approved for all"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304",
                                "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""
                              }
                            ],
                            "id": 1083,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4136:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4136:171:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1096,
                        "nodeType": "ExpressionStatement",
                        "src": "4136:171:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1098,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1063,
                              "src": "4327:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1099,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1065,
                              "src": "4331:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1097,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1582,
                            "src": "4318:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4318:21:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1101,
                        "nodeType": "ExpressionStatement",
                        "src": "4318:21:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1061,
                    "nodeType": "StructuredDocumentation",
                    "src": "3877:46:7",
                    "text": " @dev See {IERC721-approve}."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 1103,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "3937:7:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1067,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3989:8:7"
                  },
                  "parameters": {
                    "id": 1066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1063,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3953:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1103,
                        "src": "3945:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1062,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3945:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1065,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3965:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1103,
                        "src": "3957:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1064,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3957:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3944:29:7"
                  },
                  "returnParameters": {
                    "id": 1068,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3998:0:7"
                  },
                  "scope": 1718,
                  "src": "3928:418:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1841
                  ],
                  "body": {
                    "id": 1120,
                    "nodeType": "Block",
                    "src": "4492:82:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1113,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "4517:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1112,
                            "name": "_requireMinted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1628,
                            "src": "4502:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) view"
                            }
                          },
                          "id": 1114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4502:23:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1115,
                        "nodeType": "ExpressionStatement",
                        "src": "4502:23:7"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1116,
                            "name": "_tokenApprovals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 869,
                            "src": "4543:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 1118,
                          "indexExpression": {
                            "id": 1117,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1106,
                            "src": "4559:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4543:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1111,
                        "id": 1119,
                        "nodeType": "Return",
                        "src": "4536:31:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1104,
                    "nodeType": "StructuredDocumentation",
                    "src": "4352:50:7",
                    "text": " @dev See {IERC721-getApproved}."
                  },
                  "functionSelector": "081812fc",
                  "id": 1121,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nameLocation": "4416:11:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1108,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4465:8:7"
                  },
                  "parameters": {
                    "id": 1107,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1106,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4436:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1121,
                        "src": "4428:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1105,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4428:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4427:17:7"
                  },
                  "returnParameters": {
                    "id": 1111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1110,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1121,
                        "src": "4483:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4483:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4482:9:7"
                  },
                  "scope": 1718,
                  "src": "4407:167:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1833
                  ],
                  "body": {
                    "id": 1137,
                    "nodeType": "Block",
                    "src": "4725:69:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1131,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2149,
                                "src": "4754:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 1132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4754:12:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1133,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1124,
                              "src": "4768:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1134,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1126,
                              "src": "4778:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1130,
                            "name": "_setApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1614,
                            "src": "4735:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 1135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4735:52:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1136,
                        "nodeType": "ExpressionStatement",
                        "src": "4735:52:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1122,
                    "nodeType": "StructuredDocumentation",
                    "src": "4580:56:7",
                    "text": " @dev See {IERC721-setApprovalForAll}."
                  },
                  "functionSelector": "a22cb465",
                  "id": 1138,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "4650:17:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1128,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4716:8:7"
                  },
                  "parameters": {
                    "id": 1127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1124,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4676:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1138,
                        "src": "4668:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1123,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4668:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1126,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "4691:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1138,
                        "src": "4686:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1125,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4686:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4667:33:7"
                  },
                  "returnParameters": {
                    "id": 1129,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4725:0:7"
                  },
                  "scope": 1718,
                  "src": "4641:153:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1851
                  ],
                  "body": {
                    "id": 1155,
                    "nodeType": "Block",
                    "src": "4963:59:7",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1149,
                              "name": "_operatorApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 875,
                              "src": "4980:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 1151,
                            "indexExpression": {
                              "id": 1150,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1141,
                              "src": "4999:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4980:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 1153,
                          "indexExpression": {
                            "id": 1152,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1143,
                            "src": "5006:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4980:35:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1148,
                        "id": 1154,
                        "nodeType": "Return",
                        "src": "4973:42:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1139,
                    "nodeType": "StructuredDocumentation",
                    "src": "4800:55:7",
                    "text": " @dev See {IERC721-isApprovedForAll}."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 1156,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "4869:16:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1145,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4939:8:7"
                  },
                  "parameters": {
                    "id": 1144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1141,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4894:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1156,
                        "src": "4886:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1140,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4886:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1143,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4909:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1156,
                        "src": "4901:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1142,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4901:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4885:33:7"
                  },
                  "returnParameters": {
                    "id": 1148,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1147,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1156,
                        "src": "4957:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1146,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4957:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4956:6:7"
                  },
                  "scope": 1718,
                  "src": "4860:162:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1817
                  ],
                  "body": {
                    "id": 1182,
                    "nodeType": "Block",
                    "src": "5203:208:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1169,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "5292:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5292:12:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1171,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1163,
                                  "src": "5306:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1168,
                                "name": "_isApprovedOrOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1313,
                                "src": "5273:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) view returns (bool)"
                                }
                              },
                              "id": 1172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5273:41:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                              "id": 1173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5316:48:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                                "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                              },
                              "value": "ERC721: caller is not token owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                                "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                              }
                            ],
                            "id": 1167,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5265:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5265:100:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1175,
                        "nodeType": "ExpressionStatement",
                        "src": "5265:100:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1177,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1159,
                              "src": "5386:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1178,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "5392:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1179,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1163,
                              "src": "5396:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1176,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1558,
                            "src": "5376:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5376:28:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1181,
                        "nodeType": "ExpressionStatement",
                        "src": "5376:28:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1157,
                    "nodeType": "StructuredDocumentation",
                    "src": "5028:51:7",
                    "text": " @dev See {IERC721-transferFrom}."
                  },
                  "functionSelector": "23b872dd",
                  "id": 1183,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "5093:12:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1165,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5194:8:7"
                  },
                  "parameters": {
                    "id": 1164,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1159,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5123:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1183,
                        "src": "5115:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5115:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1161,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5145:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1183,
                        "src": "5137:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1160,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5137:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1163,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5165:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1183,
                        "src": "5157:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5157:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5105:73:7"
                  },
                  "returnParameters": {
                    "id": 1166,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5203:0:7"
                  },
                  "scope": 1718,
                  "src": "5084:327:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1807
                  ],
                  "body": {
                    "id": 1201,
                    "nodeType": "Block",
                    "src": "5600:56:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1195,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1186,
                              "src": "5627:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1196,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1188,
                              "src": "5633:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1197,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1190,
                              "src": "5637:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5646:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1194,
                            "name": "safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1202,
                              1232
                            ],
                            "referencedDeclaration": 1232,
                            "src": "5610:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory)"
                            }
                          },
                          "id": 1199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5610:39:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1200,
                        "nodeType": "ExpressionStatement",
                        "src": "5610:39:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1184,
                    "nodeType": "StructuredDocumentation",
                    "src": "5417:55:7",
                    "text": " @dev See {IERC721-safeTransferFrom}."
                  },
                  "functionSelector": "42842e0e",
                  "id": 1202,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "5486:16:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1192,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5591:8:7"
                  },
                  "parameters": {
                    "id": 1191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1186,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5520:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1202,
                        "src": "5512:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5512:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1188,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5542:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1202,
                        "src": "5534:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1187,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5534:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1190,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5562:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1202,
                        "src": "5554:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1189,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5554:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5502:73:7"
                  },
                  "returnParameters": {
                    "id": 1193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5600:0:7"
                  },
                  "scope": 1718,
                  "src": "5477:179:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1797
                  ],
                  "body": {
                    "id": 1231,
                    "nodeType": "Block",
                    "src": "5872:165:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1217,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "5909:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 1218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5909:12:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1219,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1209,
                                  "src": "5923:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1216,
                                "name": "_isApprovedOrOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1313,
                                "src": "5890:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) view returns (bool)"
                                }
                              },
                              "id": 1220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5890:41:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                              "id": 1221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5933:48:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                                "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                              },
                              "value": "ERC721: caller is not token owner nor approved"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                                "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                              }
                            ],
                            "id": 1215,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5882:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5882:100:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1223,
                        "nodeType": "ExpressionStatement",
                        "src": "5882:100:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1225,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1205,
                              "src": "6006:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1226,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1207,
                              "src": "6012:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1227,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1209,
                              "src": "6016:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1228,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1211,
                              "src": "6025:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1224,
                            "name": "_safeTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1261,
                            "src": "5992:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory)"
                            }
                          },
                          "id": 1229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5992:38:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1230,
                        "nodeType": "ExpressionStatement",
                        "src": "5992:38:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1203,
                    "nodeType": "StructuredDocumentation",
                    "src": "5662:55:7",
                    "text": " @dev See {IERC721-safeTransferFrom}."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 1232,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "5731:16:7",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1213,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5863:8:7"
                  },
                  "parameters": {
                    "id": 1212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1205,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5765:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1232,
                        "src": "5757:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1204,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5757:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1207,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5787:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1232,
                        "src": "5779:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1206,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5779:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1209,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5807:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1232,
                        "src": "5799:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1208,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5799:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1211,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5837:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1232,
                        "src": "5824:17:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1210,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5824:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5747:100:7"
                  },
                  "returnParameters": {
                    "id": 1214,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5872:0:7"
                  },
                  "scope": 1718,
                  "src": "5722:315:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1260,
                    "nodeType": "Block",
                    "src": "7038:165:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1245,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1235,
                              "src": "7058:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1246,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1237,
                              "src": "7064:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1247,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1239,
                              "src": "7068:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1244,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1558,
                            "src": "7048:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7048:28:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1249,
                        "nodeType": "ExpressionStatement",
                        "src": "7048:28:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1252,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1235,
                                  "src": "7117:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1253,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1237,
                                  "src": "7123:2:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1254,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1239,
                                  "src": "7127:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 1255,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1241,
                                  "src": "7136:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1251,
                                "name": "_checkOnERC721Received",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1690,
                                "src": "7094:22:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                                }
                              },
                              "id": 1256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7094:47:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                              "id": 1257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7143:52:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              },
                              "value": "ERC721: transfer to non ERC721Receiver implementer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              }
                            ],
                            "id": 1250,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7086:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7086:110:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1259,
                        "nodeType": "ExpressionStatement",
                        "src": "7086:110:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1233,
                    "nodeType": "StructuredDocumentation",
                    "src": "6043:850:7",
                    "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "id": 1261,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransfer",
                  "nameLocation": "6907:13:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1235,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "6938:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1261,
                        "src": "6930:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6930:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1237,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "6960:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1261,
                        "src": "6952:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1236,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6952:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1239,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "6980:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1261,
                        "src": "6972:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6972:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1241,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7010:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1261,
                        "src": "6997:17:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1240,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6997:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6920:100:7"
                  },
                  "returnParameters": {
                    "id": 1243,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7038:0:7"
                  },
                  "scope": 1718,
                  "src": "6898:305:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1278,
                    "nodeType": "Block",
                    "src": "7577:54:7",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 1269,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 861,
                              "src": "7594:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1271,
                            "indexExpression": {
                              "id": 1270,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1264,
                              "src": "7602:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7594:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7622:1:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7614:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1272,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7614:7:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7614:10:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7594:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1268,
                        "id": 1277,
                        "nodeType": "Return",
                        "src": "7587:37:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1262,
                    "nodeType": "StructuredDocumentation",
                    "src": "7209:292:7",
                    "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."
                  },
                  "id": 1279,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_exists",
                  "nameLocation": "7515:7:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1265,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1264,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "7531:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1279,
                        "src": "7523:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1263,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7523:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7522:17:7"
                  },
                  "returnParameters": {
                    "id": 1268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1267,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1279,
                        "src": "7571:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1266,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7571:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7570:6:7"
                  },
                  "scope": 1718,
                  "src": "7506:125:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1312,
                    "nodeType": "Block",
                    "src": "7888:173:7",
                    "statements": [
                      {
                        "assignments": [
                          1290
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1290,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "7906:5:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 1312,
                            "src": "7898:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1289,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7898:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1295,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1293,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1284,
                              "src": "7940:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1291,
                              "name": "ERC721Upgradeable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1718,
                              "src": "7914:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                "typeString": "type(contract ERC721Upgradeable)"
                              }
                            },
                            "id": 1292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 992,
                            "src": "7914:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 1294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7914:34:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7898:50:7"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1296,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1282,
                                    "src": "7966:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 1297,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1290,
                                    "src": "7977:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "7966:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 1300,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1290,
                                      "src": "8003:5:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 1301,
                                      "name": "spender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1282,
                                      "src": "8010:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1299,
                                    "name": "isApprovedForAll",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1156,
                                    "src": "7986:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                      "typeString": "function (address,address) view returns (bool)"
                                    }
                                  },
                                  "id": 1302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7986:32:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7966:52:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 1305,
                                      "name": "tokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1284,
                                      "src": "8034:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1304,
                                    "name": "getApproved",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1121,
                                    "src": "8022:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view returns (address)"
                                    }
                                  },
                                  "id": 1306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8022:20:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1307,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1282,
                                  "src": "8046:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8022:31:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7966:87:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 1310,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7965:89:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1288,
                        "id": 1311,
                        "nodeType": "Return",
                        "src": "7958:96:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1280,
                    "nodeType": "StructuredDocumentation",
                    "src": "7637:147:7",
                    "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
                  },
                  "id": 1313,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isApprovedOrOwner",
                  "nameLocation": "7798:18:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1282,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "7825:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1313,
                        "src": "7817:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1281,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7817:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1284,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "7842:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1313,
                        "src": "7834:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7834:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7816:34:7"
                  },
                  "returnParameters": {
                    "id": 1288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1287,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1313,
                        "src": "7882:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1286,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7882:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7881:6:7"
                  },
                  "scope": 1718,
                  "src": "7789:272:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1327,
                    "nodeType": "Block",
                    "src": "8456:43:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1322,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1316,
                              "src": "8476:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1323,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1318,
                              "src": "8480:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8489:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1321,
                            "name": "_safeMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1328,
                              1357
                            ],
                            "referencedDeclaration": 1357,
                            "src": "8466:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory)"
                            }
                          },
                          "id": 1325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8466:26:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1326,
                        "nodeType": "ExpressionStatement",
                        "src": "8466:26:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1314,
                    "nodeType": "StructuredDocumentation",
                    "src": "8067:319:7",
                    "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "id": 1328,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nameLocation": "8400:9:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1316,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8418:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1328,
                        "src": "8410:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1315,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8410:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1318,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "8430:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1328,
                        "src": "8422:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8422:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8409:29:7"
                  },
                  "returnParameters": {
                    "id": 1320,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8456:0:7"
                  },
                  "scope": 1718,
                  "src": "8391:108:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1356,
                    "nodeType": "Block",
                    "src": "8834:195:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1339,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1331,
                              "src": "8850:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1340,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1333,
                              "src": "8854:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1338,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "8844:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8844:18:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1342,
                        "nodeType": "ExpressionStatement",
                        "src": "8844:18:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 1347,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8924:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8916:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1345,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8916:7:7",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1348,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8916:10:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1349,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1331,
                                  "src": "8928:2:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1350,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1333,
                                  "src": "8932:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 1351,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1335,
                                  "src": "8941:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1344,
                                "name": "_checkOnERC721Received",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1690,
                                "src": "8893:22:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                                }
                              },
                              "id": 1352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8893:53:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                              "id": 1353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8960:52:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              },
                              "value": "ERC721: transfer to non ERC721Receiver implementer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                              }
                            ],
                            "id": 1343,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8872:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8872:150:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1355,
                        "nodeType": "ExpressionStatement",
                        "src": "8872:150:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1329,
                    "nodeType": "StructuredDocumentation",
                    "src": "8505:210:7",
                    "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."
                  },
                  "id": 1357,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nameLocation": "8729:9:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1331,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8756:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1357,
                        "src": "8748:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1330,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8748:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1333,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "8776:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1357,
                        "src": "8768:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1332,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8768:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1335,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8806:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1357,
                        "src": "8793:17:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1334,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8793:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8738:78:7"
                  },
                  "returnParameters": {
                    "id": 1337,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8834:0:7"
                  },
                  "scope": 1718,
                  "src": "8720:309:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1422,
                    "nodeType": "Block",
                    "src": "9412:366:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1366,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1360,
                                "src": "9430:2:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9444:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1368,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9436:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1367,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9436:7:7",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9436:10:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9430:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 1372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9448:34:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                                "typeString": "literal_string \"ERC721: mint to the zero address\""
                              },
                              "value": "ERC721: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                                "typeString": "literal_string \"ERC721: mint to the zero address\""
                              }
                            ],
                            "id": 1365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9422:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9422:61:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1374,
                        "nodeType": "ExpressionStatement",
                        "src": "9422:61:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "9501:17:7",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 1377,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1362,
                                    "src": "9510:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1376,
                                  "name": "_exists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1279,
                                  "src": "9502:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (uint256) view returns (bool)"
                                  }
                                },
                                "id": 1378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9502:16:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                              "id": 1380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9520:30:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                                "typeString": "literal_string \"ERC721: token already minted\""
                              },
                              "value": "ERC721: token already minted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                                "typeString": "literal_string \"ERC721: token already minted\""
                              }
                            ],
                            "id": 1375,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9493:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9493:58:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1382,
                        "nodeType": "ExpressionStatement",
                        "src": "9493:58:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9591:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9583:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1384,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9583:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9583:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1388,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1360,
                              "src": "9595:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1389,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "9599:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1383,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1701,
                            "src": "9562:20:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9562:45:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1391,
                        "nodeType": "ExpressionStatement",
                        "src": "9562:45:7"
                      },
                      {
                        "expression": {
                          "id": 1396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1392,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 865,
                              "src": "9618:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1394,
                            "indexExpression": {
                              "id": 1393,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1360,
                              "src": "9628:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9618:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 1395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9635:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9618:18:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1397,
                        "nodeType": "ExpressionStatement",
                        "src": "9618:18:7"
                      },
                      {
                        "expression": {
                          "id": 1402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1398,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 861,
                              "src": "9646:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1400,
                            "indexExpression": {
                              "id": 1399,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "9654:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9646:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1401,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1360,
                            "src": "9665:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9646:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1403,
                        "nodeType": "ExpressionStatement",
                        "src": "9646:21:7"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9700:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9692:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1405,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9692:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9692:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1409,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1360,
                              "src": "9704:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1410,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "9708:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1404,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1751,
                            "src": "9683:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9683:33:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1412,
                        "nodeType": "EmitStatement",
                        "src": "9678:38:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9755:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9747:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1414,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9747:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9747:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1418,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1360,
                              "src": "9759:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1419,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "9763:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1413,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1712,
                            "src": "9727:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9727:44:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1421,
                        "nodeType": "ExpressionStatement",
                        "src": "9727:44:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1358,
                    "nodeType": "StructuredDocumentation",
                    "src": "9035:311:7",
                    "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."
                  },
                  "id": 1423,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "9360:5:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1363,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1360,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "9374:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1423,
                        "src": "9366:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1359,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9366:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1362,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "9386:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1423,
                        "src": "9378:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1361,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9378:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9365:29:7"
                  },
                  "returnParameters": {
                    "id": 1364,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9412:0:7"
                  },
                  "scope": 1718,
                  "src": "9351:427:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1482,
                    "nodeType": "Block",
                    "src": "10044:368:7",
                    "statements": [
                      {
                        "assignments": [
                          1430
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1430,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "10062:5:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 1482,
                            "src": "10054:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1429,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10054:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1435,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1433,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1426,
                              "src": "10096:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1431,
                              "name": "ERC721Upgradeable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1718,
                              "src": "10070:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                "typeString": "type(contract ERC721Upgradeable)"
                              }
                            },
                            "id": 1432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 992,
                            "src": "10070:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 1434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10070:34:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10054:50:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1437,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1430,
                              "src": "10136:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1440,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10151:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10143:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1438,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10143:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10143:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1442,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1426,
                              "src": "10155:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1436,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1701,
                            "src": "10115:20:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10115:48:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1444,
                        "nodeType": "ExpressionStatement",
                        "src": "10115:48:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10218:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10210:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1446,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10210:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10210:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1450,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1426,
                              "src": "10222:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1445,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1582,
                            "src": "10201:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10201:29:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1452,
                        "nodeType": "ExpressionStatement",
                        "src": "10201:29:7"
                      },
                      {
                        "expression": {
                          "id": 1457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1453,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 865,
                              "src": "10241:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1455,
                            "indexExpression": {
                              "id": 1454,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1430,
                              "src": "10251:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10241:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 1456,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10261:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10241:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1458,
                        "nodeType": "ExpressionStatement",
                        "src": "10241:21:7"
                      },
                      {
                        "expression": {
                          "id": 1462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "10272:23:7",
                          "subExpression": {
                            "baseExpression": {
                              "id": 1459,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 861,
                              "src": "10279:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1461,
                            "indexExpression": {
                              "id": 1460,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1426,
                              "src": "10287:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10279:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1463,
                        "nodeType": "ExpressionStatement",
                        "src": "10272:23:7"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1465,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1430,
                              "src": "10320:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10335:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10327:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1466,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10327:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10327:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1470,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1426,
                              "src": "10339:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1464,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1751,
                            "src": "10311:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10311:36:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1472,
                        "nodeType": "EmitStatement",
                        "src": "10306:41:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1474,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1430,
                              "src": "10378:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10393:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10385:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1475,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10385:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10385:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1479,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1426,
                              "src": "10397:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1473,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1712,
                            "src": "10358:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10358:47:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1481,
                        "nodeType": "ExpressionStatement",
                        "src": "10358:47:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1424,
                    "nodeType": "StructuredDocumentation",
                    "src": "9784:206:7",
                    "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
                  },
                  "id": 1483,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "10004:5:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1426,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "10018:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1483,
                        "src": "10010:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10010:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10009:17:7"
                  },
                  "returnParameters": {
                    "id": 1428,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10044:0:7"
                  },
                  "scope": 1718,
                  "src": "9995:417:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1557,
                    "nodeType": "Block",
                    "src": "10845:507:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 1496,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1490,
                                    "src": "10889:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1494,
                                    "name": "ERC721Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1718,
                                    "src": "10863:17:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                      "typeString": "type(contract ERC721Upgradeable)"
                                    }
                                  },
                                  "id": 1495,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ownerOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 992,
                                  "src": "10863:25:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                    "typeString": "function (uint256) view returns (address)"
                                  }
                                },
                                "id": 1497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10863:34:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1498,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1486,
                                "src": "10901:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10863:42:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
                              "id": 1500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10907:39:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                                "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                              },
                              "value": "ERC721: transfer from incorrect owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                                "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                              }
                            ],
                            "id": 1493,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10855:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10855:92:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1502,
                        "nodeType": "ExpressionStatement",
                        "src": "10855:92:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1504,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1488,
                                "src": "10965:2:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10979:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1506,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10971:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1505,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10971:7:7",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10971:10:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10965:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 1510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10983:38:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                                "typeString": "literal_string \"ERC721: transfer to the zero address\""
                              },
                              "value": "ERC721: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                                "typeString": "literal_string \"ERC721: transfer to the zero address\""
                              }
                            ],
                            "id": 1503,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10957:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10957:65:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1512,
                        "nodeType": "ExpressionStatement",
                        "src": "10957:65:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1514,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "11054:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1515,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1488,
                              "src": "11060:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1516,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "11064:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1513,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1701,
                            "src": "11033:20:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11033:39:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1518,
                        "nodeType": "ExpressionStatement",
                        "src": "11033:39:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11151:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11143:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1520,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11143:7:7",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11143:10:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1524,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "11155:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1519,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1582,
                            "src": "11134:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11134:29:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1526,
                        "nodeType": "ExpressionStatement",
                        "src": "11134:29:7"
                      },
                      {
                        "expression": {
                          "id": 1531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1527,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 865,
                              "src": "11174:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1529,
                            "indexExpression": {
                              "id": 1528,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "11184:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11174:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 1530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11193:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11174:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1532,
                        "nodeType": "ExpressionStatement",
                        "src": "11174:20:7"
                      },
                      {
                        "expression": {
                          "id": 1537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1533,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 865,
                              "src": "11204:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1535,
                            "indexExpression": {
                              "id": 1534,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1488,
                              "src": "11214:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11204:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 1536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11221:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11204:18:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1538,
                        "nodeType": "ExpressionStatement",
                        "src": "11204:18:7"
                      },
                      {
                        "expression": {
                          "id": 1543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1539,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 861,
                              "src": "11232:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1541,
                            "indexExpression": {
                              "id": 1540,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "11240:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11232:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1542,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1488,
                            "src": "11251:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11232:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1544,
                        "nodeType": "ExpressionStatement",
                        "src": "11232:21:7"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1546,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "11278:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1547,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1488,
                              "src": "11284:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1548,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "11288:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1545,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1751,
                            "src": "11269:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11269:27:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1550,
                        "nodeType": "EmitStatement",
                        "src": "11264:32:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1552,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "11327:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1553,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1488,
                              "src": "11333:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1554,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "11337:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1551,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1712,
                            "src": "11307:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11307:38:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1556,
                        "nodeType": "ExpressionStatement",
                        "src": "11307:38:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1484,
                    "nodeType": "StructuredDocumentation",
                    "src": "10418:313:7",
                    "text": " @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."
                  },
                  "id": 1558,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "10745:9:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1486,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "10772:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1558,
                        "src": "10764:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1485,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10764:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1488,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "10794:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1558,
                        "src": "10786:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10786:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1490,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "10814:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1558,
                        "src": "10806:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10806:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10754:73:7"
                  },
                  "returnParameters": {
                    "id": 1492,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10845:0:7"
                  },
                  "scope": 1718,
                  "src": "10736:616:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1581,
                    "nodeType": "Block",
                    "src": "11528:118:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 1570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1566,
                              "name": "_tokenApprovals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 869,
                              "src": "11538:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1568,
                            "indexExpression": {
                              "id": 1567,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1563,
                              "src": "11554:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11538:24:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1569,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1561,
                            "src": "11565:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11538:29:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1571,
                        "nodeType": "ExpressionStatement",
                        "src": "11538:29:7"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1575,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1563,
                                  "src": "11617:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 1573,
                                  "name": "ERC721Upgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1718,
                                  "src": "11591:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                    "typeString": "type(contract ERC721Upgradeable)"
                                  }
                                },
                                "id": 1574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "ownerOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 992,
                                "src": "11591:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                  "typeString": "function (uint256) view returns (address)"
                                }
                              },
                              "id": 1576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11591:34:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1577,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1561,
                              "src": "11627:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1578,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1563,
                              "src": "11631:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1572,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1760,
                            "src": "11582:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11582:57:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1580,
                        "nodeType": "EmitStatement",
                        "src": "11577:62:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1559,
                    "nodeType": "StructuredDocumentation",
                    "src": "11358:101:7",
                    "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."
                  },
                  "id": 1582,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "11473:8:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1564,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1561,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "11490:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1582,
                        "src": "11482:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1560,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11482:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1563,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "11502:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1582,
                        "src": "11494:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1562,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11494:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11481:29:7"
                  },
                  "returnParameters": {
                    "id": 1565,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11528:0:7"
                  },
                  "scope": 1718,
                  "src": "11464:182:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1613,
                    "nodeType": "Block",
                    "src": "11905:184:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1593,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1585,
                                "src": "11923:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 1594,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1587,
                                "src": "11932:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11923:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                              "id": 1596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11942:27:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                                "typeString": "literal_string \"ERC721: approve to caller\""
                              },
                              "value": "ERC721: approve to caller"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                                "typeString": "literal_string \"ERC721: approve to caller\""
                              }
                            ],
                            "id": 1592,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11915:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11915:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1598,
                        "nodeType": "ExpressionStatement",
                        "src": "11915:55:7"
                      },
                      {
                        "expression": {
                          "id": 1605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1599,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 875,
                                "src": "11980:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1602,
                              "indexExpression": {
                                "id": 1600,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1585,
                                "src": "11999:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11980:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1603,
                            "indexExpression": {
                              "id": 1601,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1587,
                              "src": "12006:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11980:35:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1604,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1589,
                            "src": "12018:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11980:46:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1606,
                        "nodeType": "ExpressionStatement",
                        "src": "11980:46:7"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1608,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1585,
                              "src": "12056:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1609,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1587,
                              "src": "12063:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1610,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1589,
                              "src": "12073:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1607,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1769,
                            "src": "12041:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 1611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12041:41:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1612,
                        "nodeType": "EmitStatement",
                        "src": "12036:46:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1583,
                    "nodeType": "StructuredDocumentation",
                    "src": "11652:125:7",
                    "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."
                  },
                  "id": 1614,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setApprovalForAll",
                  "nameLocation": "11791:18:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1585,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "11827:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1614,
                        "src": "11819:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1584,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11819:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1587,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "11850:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1614,
                        "src": "11842:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11842:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1589,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "11873:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1614,
                        "src": "11868:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1588,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11868:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11809:78:7"
                  },
                  "returnParameters": {
                    "id": 1591,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11905:0:7"
                  },
                  "scope": 1718,
                  "src": "11782:307:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1627,
                    "nodeType": "Block",
                    "src": "12236:70:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1622,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1617,
                                  "src": "12262:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1621,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "12254:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 1623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12254:16:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                              "id": 1624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12272:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                                "typeString": "literal_string \"ERC721: invalid token ID\""
                              },
                              "value": "ERC721: invalid token ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                                "typeString": "literal_string \"ERC721: invalid token ID\""
                              }
                            ],
                            "id": 1620,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12246:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12246:53:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1626,
                        "nodeType": "ExpressionStatement",
                        "src": "12246:53:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1615,
                    "nodeType": "StructuredDocumentation",
                    "src": "12095:73:7",
                    "text": " @dev Reverts if the `tokenId` has not been minted yet."
                  },
                  "id": 1628,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireMinted",
                  "nameLocation": "12182:14:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1617,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "12205:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1628,
                        "src": "12197:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12197:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12196:17:7"
                  },
                  "returnParameters": {
                    "id": 1619,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12236:0:7"
                  },
                  "scope": 1718,
                  "src": "12173:133:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1689,
                    "nodeType": "Block",
                    "src": "13013:698:7",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1642,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1633,
                              "src": "13027:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1897,
                            "src": "13027:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 1644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13027:15:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1687,
                          "nodeType": "Block",
                          "src": "13669:36:7",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "74727565",
                                "id": 1685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13690:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 1641,
                              "id": 1686,
                              "nodeType": "Return",
                              "src": "13683:11:7"
                            }
                          ]
                        },
                        "id": 1688,
                        "nodeType": "IfStatement",
                        "src": "13023:682:7",
                        "trueBody": {
                          "id": 1684,
                          "nodeType": "Block",
                          "src": "13044:619:7",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 1664,
                                    "nodeType": "Block",
                                    "src": "13169:102:7",
                                    "statements": [
                                      {
                                        "expression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 1662,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 1658,
                                            "name": "retval",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1656,
                                            "src": "13194:6:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "id": 1659,
                                                "name": "IERC721ReceiverUpgradeable",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1736,
                                                "src": "13204:26:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$1736_$",
                                                  "typeString": "type(contract IERC721ReceiverUpgradeable)"
                                                }
                                              },
                                              "id": 1660,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "onERC721Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1735,
                                              "src": "13204:43:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function IERC721ReceiverUpgradeable.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                              }
                                            },
                                            "id": 1661,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "13204:52:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "13194:62:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "functionReturnParameters": 1641,
                                        "id": 1663,
                                        "nodeType": "Return",
                                        "src": "13187:69:7"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1665,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 1657,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 1656,
                                        "mutability": "mutable",
                                        "name": "retval",
                                        "nameLocation": "13161:6:7",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1665,
                                        "src": "13154:13:7",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "typeName": {
                                          "id": 1655,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13154:6:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "13153:15:7"
                                  },
                                  "src": "13145:126:7"
                                },
                                {
                                  "block": {
                                    "id": 1681,
                                    "nodeType": "Block",
                                    "src": "13300:353:7",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1672,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 1669,
                                              "name": "reason",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1667,
                                              "src": "13322:6:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 1670,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "13322:13:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 1671,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13339:1:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "13322:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 1679,
                                          "nodeType": "Block",
                                          "src": "13449:190:7",
                                          "statements": [
                                            {
                                              "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "13535:86:7",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "kind": "number",
                                                              "nodeType": "YulLiteral",
                                                              "src": "13572:2:7",
                                                              "type": "",
                                                              "value": "32"
                                                            },
                                                            {
                                                              "name": "reason",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "13576:6:7"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13568:3:7"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "13568:15:7"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "reason",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "13591:6:7"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "mload",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13585:5:7"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "13585:13:7"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13561:6:7"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "13561:38:7"
                                                    },
                                                    "nodeType": "YulExpressionStatement",
                                                    "src": "13561:38:7"
                                                  }
                                                ]
                                              },
                                              "documentation": "@solidity memory-safe-assembly",
                                              "evmVersion": "london",
                                              "externalReferences": [
                                                {
                                                  "declaration": 1667,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "13576:6:7",
                                                  "valueSize": 1
                                                },
                                                {
                                                  "declaration": 1667,
                                                  "isOffset": false,
                                                  "isSlot": false,
                                                  "src": "13591:6:7",
                                                  "valueSize": 1
                                                }
                                              ],
                                              "id": 1678,
                                              "nodeType": "InlineAssembly",
                                              "src": "13526:95:7"
                                            }
                                          ]
                                        },
                                        "id": 1680,
                                        "nodeType": "IfStatement",
                                        "src": "13318:321:7",
                                        "trueBody": {
                                          "id": 1677,
                                          "nodeType": "Block",
                                          "src": "13342:101:7",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                                                    "id": 1674,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13371:52:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                      "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                                    },
                                                    "value": "ERC721: transfer to non ERC721Receiver implementer"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                      "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                                    }
                                                  ],
                                                  "id": 1673,
                                                  "name": "revert",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [
                                                    -19,
                                                    -19
                                                  ],
                                                  "referencedDeclaration": -19,
                                                  "src": "13364:6:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                    "typeString": "function (string memory) pure"
                                                  }
                                                },
                                                "id": 1675,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13364:60:7",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 1676,
                                              "nodeType": "ExpressionStatement",
                                              "src": "13364:60:7"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1682,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 1668,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 1667,
                                        "mutability": "mutable",
                                        "name": "reason",
                                        "nameLocation": "13292:6:7",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1682,
                                        "src": "13279:19:7",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 1666,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13279:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "13278:21:7"
                                  },
                                  "src": "13272:381:7"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1649,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2149,
                                      "src": "13110:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 1650,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13110:12:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1651,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1631,
                                    "src": "13124:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1652,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1635,
                                    "src": "13130:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1653,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1637,
                                    "src": "13139:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1646,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1633,
                                        "src": "13089:2:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1645,
                                      "name": "IERC721ReceiverUpgradeable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1736,
                                      "src": "13062:26:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$1736_$",
                                        "typeString": "type(contract IERC721ReceiverUpgradeable)"
                                      }
                                    },
                                    "id": 1647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13062:30:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC721ReceiverUpgradeable_$1736",
                                      "typeString": "contract IERC721ReceiverUpgradeable"
                                    }
                                  },
                                  "id": 1648,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC721Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1735,
                                  "src": "13062:47:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 1654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13062:82:7",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 1683,
                              "nodeType": "TryStatement",
                              "src": "13058:595:7"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1629,
                    "nodeType": "StructuredDocumentation",
                    "src": "12312:541:7",
                    "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"
                  },
                  "id": 1690,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkOnERC721Received",
                  "nameLocation": "12867:22:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1631,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "12907:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1690,
                        "src": "12899:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1630,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12899:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1633,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "12929:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1690,
                        "src": "12921:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12921:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1635,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "12949:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1690,
                        "src": "12941:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1634,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12941:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1637,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "12979:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1690,
                        "src": "12966:17:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1636,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12966:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12889:100:7"
                  },
                  "returnParameters": {
                    "id": 1641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1640,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1690,
                        "src": "13007:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1639,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13007:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13006:6:7"
                  },
                  "scope": 1718,
                  "src": "12858:853:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1700,
                    "nodeType": "Block",
                    "src": "14387:2:7",
                    "statements": []
                  },
                  "documentation": {
                    "id": 1691,
                    "nodeType": "StructuredDocumentation",
                    "src": "13717:545:7",
                    "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 1701,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "14276:20:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1693,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "14314:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "14306:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14306:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1695,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14336:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "14328:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14328:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1697,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "14356:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "14348:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14348:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14296:73:7"
                  },
                  "returnParameters": {
                    "id": 1699,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14387:0:7"
                  },
                  "scope": 1718,
                  "src": "14267:122:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1711,
                    "nodeType": "Block",
                    "src": "14880:2:7",
                    "statements": []
                  },
                  "documentation": {
                    "id": 1702,
                    "nodeType": "StructuredDocumentation",
                    "src": "14395:361:7",
                    "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 1712,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_afterTokenTransfer",
                  "nameLocation": "14770:19:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1704,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "14807:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1712,
                        "src": "14799:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1703,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14799:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1706,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14829:2:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1712,
                        "src": "14821:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1705,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14821:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1708,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "14849:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 1712,
                        "src": "14841:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14841:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14789:73:7"
                  },
                  "returnParameters": {
                    "id": 1710,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14880:0:7"
                  },
                  "scope": 1718,
                  "src": "14761:121:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 1713,
                    "nodeType": "StructuredDocumentation",
                    "src": "14888:254:7",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 1717,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "15167:5:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "15147:25:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$44_storage",
                    "typeString": "uint256[44]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1714,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "15147:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1716,
                    "length": {
                      "hexValue": "3434",
                      "id": 1715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15155:2:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_44_by_1",
                        "typeString": "int_const 44"
                      },
                      "value": "44"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "15147:11:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$44_storage_ptr",
                      "typeString": "uint256[44]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 1719,
              "src": "751:14424:7",
              "usedErrors": []
            }
          ],
          "src": "107:15069:7"
        },
        "id": 7
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol",
          "exportedSymbols": {
            "IERC721ReceiverUpgradeable": [
              1736
            ]
          },
          "id": 1737,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1720,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "116:23:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC721ReceiverUpgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1721,
                "nodeType": "StructuredDocumentation",
                "src": "141:152:8",
                "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."
              },
              "fullyImplemented": false,
              "id": 1736,
              "linearizedBaseContracts": [
                1736
              ],
              "name": "IERC721ReceiverUpgradeable",
              "nameLocation": "304:26:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1722,
                    "nodeType": "StructuredDocumentation",
                    "src": "337:493:8",
                    "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."
                  },
                  "functionSelector": "150b7a02",
                  "id": 1735,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nameLocation": "844:16:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1724,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "878:8:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1735,
                        "src": "870:16:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1723,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "870:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1726,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "904:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1735,
                        "src": "896:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1725,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "896:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1728,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "926:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1735,
                        "src": "918:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "918:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1730,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "958:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1735,
                        "src": "943:19:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1729,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "943:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "860:108:8"
                  },
                  "returnParameters": {
                    "id": 1734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1733,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1735,
                        "src": "987:6:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1732,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "986:8:8"
                  },
                  "scope": 1736,
                  "src": "835:160:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1737,
              "src": "294:703:8",
              "usedErrors": []
            }
          ],
          "src": "116:882:8"
        },
        "id": 8
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol",
          "exportedSymbols": {
            "IERC165Upgradeable": [
              2987
            ],
            "IERC721Upgradeable": [
              1852
            ]
          },
          "id": 1853,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1738,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "108:23:9"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol",
              "file": "../../utils/introspection/IERC165Upgradeable.sol",
              "id": 1739,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1853,
              "sourceUnit": 2988,
              "src": "133:58:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1741,
                    "name": "IERC165Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2987,
                    "src": "293:18:9"
                  },
                  "id": 1742,
                  "nodeType": "InheritanceSpecifier",
                  "src": "293:18:9"
                }
              ],
              "canonicalName": "IERC721Upgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1740,
                "nodeType": "StructuredDocumentation",
                "src": "193:67:9",
                "text": " @dev Required interface of an ERC721 compliant contract."
              },
              "fullyImplemented": false,
              "id": 1852,
              "linearizedBaseContracts": [
                1852,
                2987
              ],
              "name": "IERC721Upgradeable",
              "nameLocation": "271:18:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1743,
                    "nodeType": "StructuredDocumentation",
                    "src": "318:88:9",
                    "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`."
                  },
                  "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                  "id": 1751,
                  "name": "Transfer",
                  "nameLocation": "417:8:9",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1745,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "442:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1751,
                        "src": "426:20:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1744,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "426:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1747,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "464:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1751,
                        "src": "448:18:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1746,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1749,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "484:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1751,
                        "src": "468:23:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "468:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:67:9"
                  },
                  "src": "411:82:9"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1752,
                    "nodeType": "StructuredDocumentation",
                    "src": "499:94:9",
                    "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."
                  },
                  "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                  "id": 1760,
                  "name": "Approval",
                  "nameLocation": "604:8:9",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1754,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "629:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1760,
                        "src": "613:21:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1753,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "613:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1756,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "652:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1760,
                        "src": "636:24:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1755,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "636:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1758,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "678:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1760,
                        "src": "662:23:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1757,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "662:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "612:74:9"
                  },
                  "src": "598:89:9"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1761,
                    "nodeType": "StructuredDocumentation",
                    "src": "693:117:9",
                    "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."
                  },
                  "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
                  "id": 1769,
                  "name": "ApprovalForAll",
                  "nameLocation": "821:14:9",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1763,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "852:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1769,
                        "src": "836:21:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1762,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "836:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1765,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "875:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1769,
                        "src": "859:24:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "859:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1767,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "890:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1769,
                        "src": "885:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1766,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "885:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "835:64:9"
                  },
                  "src": "815:85:9"
                },
                {
                  "documentation": {
                    "id": 1770,
                    "nodeType": "StructuredDocumentation",
                    "src": "906:76:9",
                    "text": " @dev Returns the number of tokens in ``owner``'s account."
                  },
                  "functionSelector": "70a08231",
                  "id": 1777,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "996:9:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1772,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1014:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1777,
                        "src": "1006:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1771,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1006:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1005:15:9"
                  },
                  "returnParameters": {
                    "id": 1776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1775,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "1052:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1777,
                        "src": "1044:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1044:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1043:17:9"
                  },
                  "scope": 1852,
                  "src": "987:74:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1778,
                    "nodeType": "StructuredDocumentation",
                    "src": "1067:131:9",
                    "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."
                  },
                  "functionSelector": "6352211e",
                  "id": 1785,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "1212:7:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1780,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "1228:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1785,
                        "src": "1220:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1779,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1220:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1219:17:9"
                  },
                  "returnParameters": {
                    "id": 1784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1783,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1268:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1785,
                        "src": "1260:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1782,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1260:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1259:15:9"
                  },
                  "scope": 1852,
                  "src": "1203:72:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1786,
                    "nodeType": "StructuredDocumentation",
                    "src": "1281:556:9",
                    "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 1797,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "1851:16:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1788,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1885:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1797,
                        "src": "1877:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1787,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1877:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1790,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1907:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1797,
                        "src": "1899:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1789,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1899:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1792,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "1927:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1797,
                        "src": "1919:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1791,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1919:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1794,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1959:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1797,
                        "src": "1944:19:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1793,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1944:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1867:102:9"
                  },
                  "returnParameters": {
                    "id": 1796,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1978:0:9"
                  },
                  "scope": 1852,
                  "src": "1842:137:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1798,
                    "nodeType": "StructuredDocumentation",
                    "src": "1985:687:9",
                    "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "42842e0e",
                  "id": 1807,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "2686:16:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1800,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2720:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1807,
                        "src": "2712:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1799,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2712:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1802,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2742:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1807,
                        "src": "2734:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1801,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2734:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1804,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2762:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1807,
                        "src": "2754:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1803,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2754:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2702:73:9"
                  },
                  "returnParameters": {
                    "id": 1806,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2784:0:9"
                  },
                  "scope": 1852,
                  "src": "2677:108:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1808,
                    "nodeType": "StructuredDocumentation",
                    "src": "2791:504:9",
                    "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 1817,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "3309:12:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1810,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3339:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1817,
                        "src": "3331:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1809,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3331:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1812,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3361:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1817,
                        "src": "3353:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3353:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1814,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3381:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1817,
                        "src": "3373:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1813,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3373:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3321:73:9"
                  },
                  "returnParameters": {
                    "id": 1816,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3403:0:9"
                  },
                  "scope": 1852,
                  "src": "3300:104:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1818,
                    "nodeType": "StructuredDocumentation",
                    "src": "3410:452:9",
                    "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 1825,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "3876:7:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1820,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3892:2:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1825,
                        "src": "3884:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3884:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1822,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3904:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1825,
                        "src": "3896:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1821,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3896:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3883:29:9"
                  },
                  "returnParameters": {
                    "id": 1824,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3921:0:9"
                  },
                  "scope": 1852,
                  "src": "3867:55:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1826,
                    "nodeType": "StructuredDocumentation",
                    "src": "3928:309:9",
                    "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."
                  },
                  "functionSelector": "a22cb465",
                  "id": 1833,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "4251:17:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1828,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4277:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1833,
                        "src": "4269:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1827,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4269:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1830,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nameLocation": "4292:9:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1833,
                        "src": "4287:14:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1829,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4287:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4268:34:9"
                  },
                  "returnParameters": {
                    "id": 1832,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4311:0:9"
                  },
                  "scope": 1852,
                  "src": "4242:70:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1834,
                    "nodeType": "StructuredDocumentation",
                    "src": "4318:139:9",
                    "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."
                  },
                  "functionSelector": "081812fc",
                  "id": 1841,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nameLocation": "4471:11:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1836,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4491:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1841,
                        "src": "4483:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1835,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4483:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4482:17:9"
                  },
                  "returnParameters": {
                    "id": 1840,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1839,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4531:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1841,
                        "src": "4523:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1838,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4523:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4522:18:9"
                  },
                  "scope": 1852,
                  "src": "4462:79:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1842,
                    "nodeType": "StructuredDocumentation",
                    "src": "4547:138:9",
                    "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 1851,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nameLocation": "4699:16:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1844,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4724:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1851,
                        "src": "4716:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1843,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4716:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1846,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4739:8:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1851,
                        "src": "4731:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1845,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4731:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4715:33:9"
                  },
                  "returnParameters": {
                    "id": 1850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1849,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1851,
                        "src": "4772:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1848,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4772:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4771:6:9"
                  },
                  "scope": 1852,
                  "src": "4690:88:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1853,
              "src": "261:4519:9",
              "usedErrors": []
            }
          ],
          "src": "108:4673:9"
        },
        "id": 9
      },
      "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol",
          "exportedSymbols": {
            "IERC165Upgradeable": [
              2987
            ],
            "IERC721MetadataUpgradeable": [
              1879
            ],
            "IERC721Upgradeable": [
              1852
            ]
          },
          "id": 1880,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1854,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:23:10"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol",
              "file": "../IERC721Upgradeable.sol",
              "id": 1855,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1880,
              "sourceUnit": 1853,
              "src": "137:35:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1857,
                    "name": "IERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1852,
                    "src": "348:18:10"
                  },
                  "id": 1858,
                  "nodeType": "InheritanceSpecifier",
                  "src": "348:18:10"
                }
              ],
              "canonicalName": "IERC721MetadataUpgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1856,
                "nodeType": "StructuredDocumentation",
                "src": "174:133:10",
                "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"
              },
              "fullyImplemented": false,
              "id": 1879,
              "linearizedBaseContracts": [
                1879,
                1852,
                2987
              ],
              "name": "IERC721MetadataUpgradeable",
              "nameLocation": "318:26:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1859,
                    "nodeType": "StructuredDocumentation",
                    "src": "373:58:10",
                    "text": " @dev Returns the token collection name."
                  },
                  "functionSelector": "06fdde03",
                  "id": 1864,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "445:4:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1860,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "449:2:10"
                  },
                  "returnParameters": {
                    "id": 1863,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1862,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1864,
                        "src": "475:13:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1861,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "475:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "474:15:10"
                  },
                  "scope": 1879,
                  "src": "436:54:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1865,
                    "nodeType": "StructuredDocumentation",
                    "src": "496:60:10",
                    "text": " @dev Returns the token collection symbol."
                  },
                  "functionSelector": "95d89b41",
                  "id": 1870,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "570:6:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1866,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "576:2:10"
                  },
                  "returnParameters": {
                    "id": 1869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1868,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1870,
                        "src": "602:13:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1867,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "602:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "601:15:10"
                  },
                  "scope": 1879,
                  "src": "561:56:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1871,
                    "nodeType": "StructuredDocumentation",
                    "src": "623:90:10",
                    "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 1878,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "727:8:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1873,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "744:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1878,
                        "src": "736:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "736:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "735:17:10"
                  },
                  "returnParameters": {
                    "id": 1877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1876,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1878,
                        "src": "776:13:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1875,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "776:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "775:15:10"
                  },
                  "scope": 1879,
                  "src": "718:73:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1880,
              "src": "308:485:10",
              "usedErrors": []
            }
          ],
          "src": "112:682:10"
        },
        "id": 10
      },
      "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ]
          },
          "id": 2123,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1881,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".1"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:11"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "AddressUpgradeable",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1882,
                "nodeType": "StructuredDocumentation",
                "src": "126:67:11",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 2122,
              "linearizedBaseContracts": [
                2122
              ],
              "name": "AddressUpgradeable",
              "nameLocation": "202:18:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1896,
                    "nodeType": "Block",
                    "src": "1252:254:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 1890,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1885,
                                "src": "1476:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1476:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1476:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1498:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1476:23:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1889,
                        "id": 1895,
                        "nodeType": "Return",
                        "src": "1469:30:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1883,
                    "nodeType": "StructuredDocumentation",
                    "src": "227:954:11",
                    "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="
                  },
                  "id": 1897,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nameLocation": "1195:10:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1885,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1214:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1897,
                        "src": "1206:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1884,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1206:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1205:17:11"
                  },
                  "returnParameters": {
                    "id": 1889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1888,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1897,
                        "src": "1246:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1887,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1246:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1245:6:11"
                  },
                  "scope": 2122,
                  "src": "1186:320:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1930,
                    "nodeType": "Block",
                    "src": "2494:241:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1908,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2520:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$2122",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$2122",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    ],
                                    "id": 1907,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2512:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1906,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2512:7:11",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1909,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2512:13:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "2512:21:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1911,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1902,
                                "src": "2537:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2512:31:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 1913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2545:31:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              },
                              "value": "Address: insufficient balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              }
                            ],
                            "id": 1905,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2504:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2504:73:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1915,
                        "nodeType": "ExpressionStatement",
                        "src": "2504:73:11"
                      },
                      {
                        "assignments": [
                          1917,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1917,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2594:7:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 1930,
                            "src": "2589:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1916,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2589:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 1924,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 1922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2637:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 1918,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1900,
                                "src": "2607:9:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 1919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "2607:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 1921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 1920,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1902,
                                "src": "2629:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2607:29:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2607:33:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2588:52:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1926,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1917,
                              "src": "2658:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 1927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2667:60:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              },
                              "value": "Address: unable to send value, recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              }
                            ],
                            "id": 1925,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2650:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2650:78:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1929,
                        "nodeType": "ExpressionStatement",
                        "src": "2650:78:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1898,
                    "nodeType": "StructuredDocumentation",
                    "src": "1512:906:11",
                    "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 1931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "2432:9:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1900,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2458:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1931,
                        "src": "2442:25:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 1899,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2442:15:11",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1902,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2477:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1931,
                        "src": "2469:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2469:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2441:43:11"
                  },
                  "returnParameters": {
                    "id": 1904,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2494:0:11"
                  },
                  "scope": 2122,
                  "src": "2423:312:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1947,
                    "nodeType": "Block",
                    "src": "3566:84:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1942,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1934,
                              "src": "3596:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1943,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1936,
                              "src": "3604:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 1944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3610:32:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              },
                              "value": "Address: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              }
                            ],
                            "id": 1941,
                            "name": "functionCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1948,
                              1968
                            ],
                            "referencedDeclaration": 1968,
                            "src": "3583:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 1945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3583:60:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1940,
                        "id": 1946,
                        "nodeType": "Return",
                        "src": "3576:67:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1932,
                    "nodeType": "StructuredDocumentation",
                    "src": "2741:731:11",
                    "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                  },
                  "id": 1948,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3486:12:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1937,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1934,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3507:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1948,
                        "src": "3499:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3499:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1936,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3528:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1948,
                        "src": "3515:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1935,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3515:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3498:35:11"
                  },
                  "returnParameters": {
                    "id": 1940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1939,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1948,
                        "src": "3552:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1938,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3552:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3551:14:11"
                  },
                  "scope": 2122,
                  "src": "3477:173:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1967,
                    "nodeType": "Block",
                    "src": "4019:76:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1961,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1951,
                              "src": "4058:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1962,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1953,
                              "src": "4066:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 1963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4072:1:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 1964,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1955,
                              "src": "4075:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 1960,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1988,
                              2038
                            ],
                            "referencedDeclaration": 2038,
                            "src": "4036:21:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 1965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4036:52:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1959,
                        "id": 1966,
                        "nodeType": "Return",
                        "src": "4029:59:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1949,
                    "nodeType": "StructuredDocumentation",
                    "src": "3656:211:11",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 1968,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3881:12:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1951,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3911:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1968,
                        "src": "3903:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1950,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3903:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1953,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3940:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1968,
                        "src": "3927:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1952,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3927:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1955,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "3968:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1968,
                        "src": "3954:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1954,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3954:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3893:93:11"
                  },
                  "returnParameters": {
                    "id": 1959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1958,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1968,
                        "src": "4005:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1957,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4005:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4004:14:11"
                  },
                  "scope": 2122,
                  "src": "3872:223:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1987,
                    "nodeType": "Block",
                    "src": "4600:111:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1981,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1971,
                              "src": "4639:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1982,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1973,
                              "src": "4647:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 1983,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1975,
                              "src": "4653:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                              "id": 1984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4660:43:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              },
                              "value": "Address: low-level call with value failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              }
                            ],
                            "id": 1980,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1988,
                              2038
                            ],
                            "referencedDeclaration": 2038,
                            "src": "4617:21:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 1985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4617:87:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1979,
                        "id": 1986,
                        "nodeType": "Return",
                        "src": "4610:94:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1969,
                    "nodeType": "StructuredDocumentation",
                    "src": "4101:351:11",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                  },
                  "id": 1988,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4466:21:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1971,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4505:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1988,
                        "src": "4497:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1970,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4497:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1973,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4534:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1988,
                        "src": "4521:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1972,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4521:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1975,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4556:5:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1988,
                        "src": "4548:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1974,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4548:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4487:80:11"
                  },
                  "returnParameters": {
                    "id": 1979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1978,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1988,
                        "src": "4586:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1977,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4586:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4585:14:11"
                  },
                  "scope": 2122,
                  "src": "4457:254:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2037,
                    "nodeType": "Block",
                    "src": "5138:320:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2005,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5164:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$2122",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$2122",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    ],
                                    "id": 2004,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5156:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2003,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5156:7:11",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2006,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5156:13:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2007,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "5156:21:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 2008,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1995,
                                "src": "5181:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5156:30:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                              "id": 2010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5188:40:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              },
                              "value": "Address: insufficient balance for call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              }
                            ],
                            "id": 2002,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5148:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5148:81:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2012,
                        "nodeType": "ExpressionStatement",
                        "src": "5148:81:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2015,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1991,
                                  "src": "5258:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2014,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1897,
                                "src": "5247:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5247:18:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5267:31:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              },
                              "value": "Address: call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              }
                            ],
                            "id": 2013,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5239:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5239:60:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2019,
                        "nodeType": "ExpressionStatement",
                        "src": "5239:60:11"
                      },
                      {
                        "assignments": [
                          2021,
                          2023
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2021,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5316:7:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2037,
                            "src": "5311:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2020,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5311:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2023,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "5338:10:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2037,
                            "src": "5325:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2022,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5325:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2030,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2028,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1993,
                              "src": "5378:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 2024,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1991,
                                "src": "5352:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "5352:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 2027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 2026,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1995,
                                "src": "5371:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5352:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 2029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5352:31:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5310:73:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2032,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2021,
                              "src": "5417:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2033,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2023,
                              "src": "5426:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2034,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1997,
                              "src": "5438:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2031,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2121,
                            "src": "5400:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 2035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5400:51:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2001,
                        "id": 2036,
                        "nodeType": "Return",
                        "src": "5393:58:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1989,
                    "nodeType": "StructuredDocumentation",
                    "src": "4717:237:11",
                    "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 2038,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4968:21:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1991,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5007:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2038,
                        "src": "4999:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1990,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4999:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1993,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5036:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2038,
                        "src": "5023:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1992,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5023:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1995,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5058:5:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2038,
                        "src": "5050:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1994,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5050:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1997,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "5087:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2038,
                        "src": "5073:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1996,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5073:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4989:116:11"
                  },
                  "returnParameters": {
                    "id": 2001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2000,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2038,
                        "src": "5124:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1999,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5124:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5123:14:11"
                  },
                  "scope": 2122,
                  "src": "4959:499:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2054,
                    "nodeType": "Block",
                    "src": "5735:97:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2049,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2041,
                              "src": "5771:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2050,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2043,
                              "src": "5779:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                              "id": 2051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5785:39:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              },
                              "value": "Address: low-level static call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              }
                            ],
                            "id": 2048,
                            "name": "functionStaticCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2055,
                              2090
                            ],
                            "referencedDeclaration": 2090,
                            "src": "5752:18:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                            }
                          },
                          "id": 2052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5752:73:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2047,
                        "id": 2053,
                        "nodeType": "Return",
                        "src": "5745:80:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2039,
                    "nodeType": "StructuredDocumentation",
                    "src": "5464:166:11",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 2055,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "5644:18:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2041,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5671:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2055,
                        "src": "5663:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5663:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2043,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5692:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2055,
                        "src": "5679:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2042,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5679:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5662:35:11"
                  },
                  "returnParameters": {
                    "id": 2047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2046,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2055,
                        "src": "5721:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2045,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5721:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5720:14:11"
                  },
                  "scope": 2122,
                  "src": "5635:197:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2089,
                    "nodeType": "Block",
                    "src": "6174:228:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2069,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2058,
                                  "src": "6203:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2068,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1897,
                                "src": "6192:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6192:18:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 2071,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6212:38:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              },
                              "value": "Address: static call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              }
                            ],
                            "id": 2067,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6184:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6184:67:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2073,
                        "nodeType": "ExpressionStatement",
                        "src": "6184:67:11"
                      },
                      {
                        "assignments": [
                          2075,
                          2077
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2075,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "6268:7:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2089,
                            "src": "6263:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2074,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6263:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2077,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "6290:10:11",
                            "nodeType": "VariableDeclaration",
                            "scope": 2089,
                            "src": "6277:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2076,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6277:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2082,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2080,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2060,
                              "src": "6322:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 2078,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2058,
                              "src": "6304:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "6304:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 2081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6304:23:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6262:65:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2084,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "6361:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2085,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2077,
                              "src": "6370:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 2086,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2062,
                              "src": "6382:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2083,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2121,
                            "src": "6344:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 2087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6344:51:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 2066,
                        "id": 2088,
                        "nodeType": "Return",
                        "src": "6337:58:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2056,
                    "nodeType": "StructuredDocumentation",
                    "src": "5838:173:11",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 2090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "6025:18:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2058,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6061:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2090,
                        "src": "6053:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2057,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6053:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2060,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6090:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2090,
                        "src": "6077:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2059,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6077:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2062,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6118:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2090,
                        "src": "6104:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2061,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6104:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6043:93:11"
                  },
                  "returnParameters": {
                    "id": 2066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2065,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2090,
                        "src": "6160:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2064,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6160:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6159:14:11"
                  },
                  "scope": 2122,
                  "src": "6016:386:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2120,
                    "nodeType": "Block",
                    "src": "6782:582:11",
                    "statements": [
                      {
                        "condition": {
                          "id": 2102,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2093,
                          "src": "6796:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2118,
                          "nodeType": "Block",
                          "src": "6853:505:11",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 2106,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2095,
                                    "src": "6937:10:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "6937:17:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2108,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6957:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6937:21:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2116,
                                "nodeType": "Block",
                                "src": "7295:53:11",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2113,
                                          "name": "errorMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2097,
                                          "src": "7320:12:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 2112,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "7313:6:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 2114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7313:20:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2115,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7313:20:11"
                                  }
                                ]
                              },
                              "id": 2117,
                              "nodeType": "IfStatement",
                              "src": "6933:415:11",
                              "trueBody": {
                                "id": 2111,
                                "nodeType": "Block",
                                "src": "6960:329:11",
                                "statements": [
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "7130:145:11",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "7152:40:11",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "returndata",
                                                "nodeType": "YulIdentifier",
                                                "src": "7181:10:11"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "7175:5:11"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7175:17:11"
                                          },
                                          "variables": [
                                            {
                                              "name": "returndata_size",
                                              "nodeType": "YulTypedName",
                                              "src": "7156:15:11",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "7224:2:11",
                                                    "type": "",
                                                    "value": "32"
                                                  },
                                                  {
                                                    "name": "returndata",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7228:10:11"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7220:3:11"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7220:19:11"
                                              },
                                              {
                                                "name": "returndata_size",
                                                "nodeType": "YulIdentifier",
                                                "src": "7241:15:11"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "7213:6:11"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7213:44:11"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "7213:44:11"
                                        }
                                      ]
                                    },
                                    "documentation": "@solidity memory-safe-assembly",
                                    "evmVersion": "london",
                                    "externalReferences": [
                                      {
                                        "declaration": 2095,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "7181:10:11",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 2095,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "7228:10:11",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 2110,
                                    "nodeType": "InlineAssembly",
                                    "src": "7121:154:11"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2119,
                        "nodeType": "IfStatement",
                        "src": "6792:566:11",
                        "trueBody": {
                          "id": 2105,
                          "nodeType": "Block",
                          "src": "6805:42:11",
                          "statements": [
                            {
                              "expression": {
                                "id": 2103,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2095,
                                "src": "6826:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 2101,
                              "id": 2104,
                              "nodeType": "Return",
                              "src": "6819:17:11"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2091,
                    "nodeType": "StructuredDocumentation",
                    "src": "6408:209:11",
                    "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"
                  },
                  "id": 2121,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "6631:16:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2093,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "6662:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2121,
                        "src": "6657:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2092,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6657:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2095,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "6692:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2121,
                        "src": "6679:23:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2094,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6679:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2097,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6726:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2121,
                        "src": "6712:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2096,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6712:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6647:97:11"
                  },
                  "returnParameters": {
                    "id": 2101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2100,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2121,
                        "src": "6768:12:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2099,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6768:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6767:14:11"
                  },
                  "scope": 2122,
                  "src": "6622:742:11",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2123,
              "src": "194:7172:11",
              "usedErrors": []
            }
          ],
          "src": "101:7266:11"
        },
        "id": 11
      },
      "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ],
            "ContextUpgradeable": [
              2164
            ],
            "Initializable": [
              690
            ]
          },
          "id": 2165,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2124,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:12"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "../proxy/utils/Initializable.sol",
              "id": 2125,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2165,
              "sourceUnit": 691,
              "src": "110:42:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2127,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "691:13:12"
                  },
                  "id": 2128,
                  "nodeType": "InheritanceSpecifier",
                  "src": "691:13:12"
                }
              ],
              "canonicalName": "ContextUpgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2126,
                "nodeType": "StructuredDocumentation",
                "src": "154:496:12",
                "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
              },
              "fullyImplemented": true,
              "id": 2164,
              "linearizedBaseContracts": [
                2164,
                690
              ],
              "name": "ContextUpgradeable",
              "nameLocation": "669:18:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2133,
                    "nodeType": "Block",
                    "src": "763:7:12",
                    "statements": []
                  },
                  "id": 2134,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2131,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2130,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "746:16:12"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "746:16:12"
                    }
                  ],
                  "name": "__Context_init",
                  "nameLocation": "720:14:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2129,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "734:2:12"
                  },
                  "returnParameters": {
                    "id": 2132,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "763:0:12"
                  },
                  "scope": 2164,
                  "src": "711:59:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2139,
                    "nodeType": "Block",
                    "src": "838:7:12",
                    "statements": []
                  },
                  "id": 2140,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2137,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2136,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "821:16:12"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "821:16:12"
                    }
                  ],
                  "name": "__Context_init_unchained",
                  "nameLocation": "785:24:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2135,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "809:2:12"
                  },
                  "returnParameters": {
                    "id": 2138,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "838:0:12"
                  },
                  "scope": 2164,
                  "src": "776:69:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2148,
                    "nodeType": "Block",
                    "src": "912:34:12",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2145,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "929:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "929:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2144,
                        "id": 2147,
                        "nodeType": "Return",
                        "src": "922:17:12"
                      }
                    ]
                  },
                  "id": 2149,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "859:10:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2141,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "869:2:12"
                  },
                  "returnParameters": {
                    "id": 2144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2143,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2149,
                        "src": "903:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2142,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "902:9:12"
                  },
                  "scope": 2164,
                  "src": "850:96:12",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2157,
                    "nodeType": "Block",
                    "src": "1019:32:12",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2154,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1036:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "1036:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 2153,
                        "id": 2156,
                        "nodeType": "Return",
                        "src": "1029:15:12"
                      }
                    ]
                  },
                  "id": 2158,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "961:8:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "969:2:12"
                  },
                  "returnParameters": {
                    "id": 2153,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2152,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2158,
                        "src": "1003:14:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2151,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1003:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1002:16:12"
                  },
                  "scope": 2164,
                  "src": "952:99:12",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2159,
                    "nodeType": "StructuredDocumentation",
                    "src": "1057:254:12",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 2163,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "1336:5:12",
                  "nodeType": "VariableDeclaration",
                  "scope": 2164,
                  "src": "1316:25:12",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$50_storage",
                    "typeString": "uint256[50]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2160,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1316:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2162,
                    "length": {
                      "hexValue": "3530",
                      "id": 2161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1324:2:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1316:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                      "typeString": "uint256[50]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 2165,
              "src": "651:693:12",
              "usedErrors": []
            }
          ],
          "src": "86:1259:12"
        },
        "id": 12
      },
      "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
          "exportedSymbols": {
            "CountersUpgradeable": [
              2238
            ]
          },
          "id": 2239,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2166,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "87:23:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "CountersUpgradeable",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2167,
                "nodeType": "StructuredDocumentation",
                "src": "112:311:13",
                "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"
              },
              "fullyImplemented": true,
              "id": 2238,
              "linearizedBaseContracts": [
                2238
              ],
              "name": "CountersUpgradeable",
              "nameLocation": "432:19:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "CountersUpgradeable.Counter",
                  "id": 2170,
                  "members": [
                    {
                      "constant": false,
                      "id": 2169,
                      "mutability": "mutable",
                      "name": "_value",
                      "nameLocation": "805:6:13",
                      "nodeType": "VariableDeclaration",
                      "scope": 2170,
                      "src": "797:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2168,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "797:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Counter",
                  "nameLocation": "465:7:13",
                  "nodeType": "StructDefinition",
                  "scope": 2238,
                  "src": "458:374:13",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2181,
                    "nodeType": "Block",
                    "src": "912:38:13",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2178,
                            "name": "counter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2173,
                            "src": "929:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                              "typeString": "struct CountersUpgradeable.Counter storage pointer"
                            }
                          },
                          "id": 2179,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2169,
                          "src": "929:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2177,
                        "id": 2180,
                        "nodeType": "Return",
                        "src": "922:21:13"
                      }
                    ]
                  },
                  "id": 2182,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "current",
                  "nameLocation": "847:7:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2173,
                        "mutability": "mutable",
                        "name": "counter",
                        "nameLocation": "871:7:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2182,
                        "src": "855:23:13",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                          "typeString": "struct CountersUpgradeable.Counter"
                        },
                        "typeName": {
                          "id": 2172,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2171,
                            "name": "Counter",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2170,
                            "src": "855:7:13"
                          },
                          "referencedDeclaration": 2170,
                          "src": "855:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                            "typeString": "struct CountersUpgradeable.Counter"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "854:25:13"
                  },
                  "returnParameters": {
                    "id": 2177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2176,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2182,
                        "src": "903:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2175,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "902:9:13"
                  },
                  "scope": 2238,
                  "src": "838:112:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2195,
                    "nodeType": "Block",
                    "src": "1009:70:13",
                    "statements": [
                      {
                        "id": 2194,
                        "nodeType": "UncheckedBlock",
                        "src": "1019:54:13",
                        "statements": [
                          {
                            "expression": {
                              "id": 2192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 2188,
                                  "name": "counter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2185,
                                  "src": "1043:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                                    "typeString": "struct CountersUpgradeable.Counter storage pointer"
                                  }
                                },
                                "id": 2190,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "_value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2169,
                                "src": "1043:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "hexValue": "31",
                                "id": 2191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1061:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1043:19:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2193,
                            "nodeType": "ExpressionStatement",
                            "src": "1043:19:13"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 2196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increment",
                  "nameLocation": "965:9:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2185,
                        "mutability": "mutable",
                        "name": "counter",
                        "nameLocation": "991:7:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2196,
                        "src": "975:23:13",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                          "typeString": "struct CountersUpgradeable.Counter"
                        },
                        "typeName": {
                          "id": 2184,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2183,
                            "name": "Counter",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2170,
                            "src": "975:7:13"
                          },
                          "referencedDeclaration": 2170,
                          "src": "975:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                            "typeString": "struct CountersUpgradeable.Counter"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "974:25:13"
                  },
                  "returnParameters": {
                    "id": 2187,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1009:0:13"
                  },
                  "scope": 2238,
                  "src": "956:123:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2223,
                    "nodeType": "Block",
                    "src": "1138:176:13",
                    "statements": [
                      {
                        "assignments": [
                          2203
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2203,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "1156:5:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2223,
                            "src": "1148:13:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2202,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1148:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2206,
                        "initialValue": {
                          "expression": {
                            "id": 2204,
                            "name": "counter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2199,
                            "src": "1164:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                              "typeString": "struct CountersUpgradeable.Counter storage pointer"
                            }
                          },
                          "id": 2205,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2169,
                          "src": "1164:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1148:30:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2208,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2203,
                                "src": "1196:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 2209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1204:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1196:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77",
                              "id": 2211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1207:29:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f",
                                "typeString": "literal_string \"Counter: decrement overflow\""
                              },
                              "value": "Counter: decrement overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f",
                                "typeString": "literal_string \"Counter: decrement overflow\""
                              }
                            ],
                            "id": 2207,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1188:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1188:49:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2213,
                        "nodeType": "ExpressionStatement",
                        "src": "1188:49:13"
                      },
                      {
                        "id": 2222,
                        "nodeType": "UncheckedBlock",
                        "src": "1247:61:13",
                        "statements": [
                          {
                            "expression": {
                              "id": 2220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 2214,
                                  "name": "counter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2199,
                                  "src": "1271:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                                    "typeString": "struct CountersUpgradeable.Counter storage pointer"
                                  }
                                },
                                "id": 2216,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "_value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2169,
                                "src": "1271:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2217,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2203,
                                  "src": "1288:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 2218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1296:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1288:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1271:26:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2221,
                            "nodeType": "ExpressionStatement",
                            "src": "1271:26:13"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 2224,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decrement",
                  "nameLocation": "1094:9:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2200,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2199,
                        "mutability": "mutable",
                        "name": "counter",
                        "nameLocation": "1120:7:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2224,
                        "src": "1104:23:13",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                          "typeString": "struct CountersUpgradeable.Counter"
                        },
                        "typeName": {
                          "id": 2198,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2197,
                            "name": "Counter",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2170,
                            "src": "1104:7:13"
                          },
                          "referencedDeclaration": 2170,
                          "src": "1104:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                            "typeString": "struct CountersUpgradeable.Counter"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1103:25:13"
                  },
                  "returnParameters": {
                    "id": 2201,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1138:0:13"
                  },
                  "scope": 2238,
                  "src": "1085:229:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2236,
                    "nodeType": "Block",
                    "src": "1369:35:13",
                    "statements": [
                      {
                        "expression": {
                          "id": 2234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 2230,
                              "name": "counter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2227,
                              "src": "1379:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                                "typeString": "struct CountersUpgradeable.Counter storage pointer"
                              }
                            },
                            "id": 2232,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2169,
                            "src": "1379:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 2233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1396:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1379:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2235,
                        "nodeType": "ExpressionStatement",
                        "src": "1379:18:13"
                      }
                    ]
                  },
                  "id": 2237,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reset",
                  "nameLocation": "1329:5:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2227,
                        "mutability": "mutable",
                        "name": "counter",
                        "nameLocation": "1351:7:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2237,
                        "src": "1335:23:13",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                          "typeString": "struct CountersUpgradeable.Counter"
                        },
                        "typeName": {
                          "id": 2226,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2225,
                            "name": "Counter",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2170,
                            "src": "1335:7:13"
                          },
                          "referencedDeclaration": 2170,
                          "src": "1335:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                            "typeString": "struct CountersUpgradeable.Counter"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1334:25:13"
                  },
                  "returnParameters": {
                    "id": 2229,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1369:0:13"
                  },
                  "scope": 2238,
                  "src": "1320:84:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2239,
              "src": "424:982:13",
              "usedErrors": []
            }
          ],
          "src": "87:1320:13"
        },
        "id": 13
      },
      "@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol",
          "exportedSymbols": {
            "StorageSlotUpgradeable": [
              2298
            ]
          },
          "id": 2299,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2240,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "105:23:14"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "StorageSlotUpgradeable",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2241,
                "nodeType": "StructuredDocumentation",
                "src": "130:1148:14",
                "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._"
              },
              "fullyImplemented": true,
              "id": 2298,
              "linearizedBaseContracts": [
                2298
              ],
              "name": "StorageSlotUpgradeable",
              "nameLocation": "1287:22:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "StorageSlotUpgradeable.AddressSlot",
                  "id": 2244,
                  "members": [
                    {
                      "constant": false,
                      "id": 2243,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1353:5:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 2244,
                      "src": "1345:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2242,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1345:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "AddressSlot",
                  "nameLocation": "1323:11:14",
                  "nodeType": "StructDefinition",
                  "scope": 2298,
                  "src": "1316:49:14",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlotUpgradeable.BooleanSlot",
                  "id": 2247,
                  "members": [
                    {
                      "constant": false,
                      "id": 2246,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1405:5:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 2247,
                      "src": "1400:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2245,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1400:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BooleanSlot",
                  "nameLocation": "1378:11:14",
                  "nodeType": "StructDefinition",
                  "scope": 2298,
                  "src": "1371:46:14",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlotUpgradeable.Bytes32Slot",
                  "id": 2250,
                  "members": [
                    {
                      "constant": false,
                      "id": 2249,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1460:5:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 2250,
                      "src": "1452:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2248,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1452:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Bytes32Slot",
                  "nameLocation": "1430:11:14",
                  "nodeType": "StructDefinition",
                  "scope": 2298,
                  "src": "1423:49:14",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlotUpgradeable.Uint256Slot",
                  "id": 2253,
                  "members": [
                    {
                      "constant": false,
                      "id": 2252,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1515:5:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 2253,
                      "src": "1507:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2251,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1507:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Uint256Slot",
                  "nameLocation": "1485:11:14",
                  "nodeType": "StructDefinition",
                  "scope": 2298,
                  "src": "1478:49:14",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2263,
                    "nodeType": "Block",
                    "src": "1709:106:14",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1771:38:14",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1785:14:14",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "1795:4:14"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "1785:6:14"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 2260,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "1785:6:14",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2256,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1795:4:14",
                            "valueSize": 1
                          }
                        ],
                        "id": 2262,
                        "nodeType": "InlineAssembly",
                        "src": "1762:47:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2254,
                    "nodeType": "StructuredDocumentation",
                    "src": "1533:87:14",
                    "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."
                  },
                  "id": 2264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressSlot",
                  "nameLocation": "1634:14:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2256,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "1657:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "1649:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2255,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1649:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1648:14:14"
                  },
                  "returnParameters": {
                    "id": 2261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2260,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1706:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "1686:21:14",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                          "typeString": "struct StorageSlotUpgradeable.AddressSlot"
                        },
                        "typeName": {
                          "id": 2259,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2258,
                            "name": "AddressSlot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2244,
                            "src": "1686:11:14"
                          },
                          "referencedDeclaration": 2244,
                          "src": "1686:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSlot_$2244_storage_ptr",
                            "typeString": "struct StorageSlotUpgradeable.AddressSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1685:23:14"
                  },
                  "scope": 2298,
                  "src": "1625:190:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2274,
                    "nodeType": "Block",
                    "src": "1997:106:14",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2059:38:14",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2073:14:14",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2083:4:14"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2073:6:14"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 2271,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2073:6:14",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2267,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2083:4:14",
                            "valueSize": 1
                          }
                        ],
                        "id": 2273,
                        "nodeType": "InlineAssembly",
                        "src": "2050:47:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2265,
                    "nodeType": "StructuredDocumentation",
                    "src": "1821:87:14",
                    "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`."
                  },
                  "id": 2275,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBooleanSlot",
                  "nameLocation": "1922:14:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2267,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "1945:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2275,
                        "src": "1937:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2266,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1937:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1936:14:14"
                  },
                  "returnParameters": {
                    "id": 2272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2271,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1994:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2275,
                        "src": "1974:21:14",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BooleanSlot_$2247_storage_ptr",
                          "typeString": "struct StorageSlotUpgradeable.BooleanSlot"
                        },
                        "typeName": {
                          "id": 2270,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2269,
                            "name": "BooleanSlot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2247,
                            "src": "1974:11:14"
                          },
                          "referencedDeclaration": 2247,
                          "src": "1974:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BooleanSlot_$2247_storage_ptr",
                            "typeString": "struct StorageSlotUpgradeable.BooleanSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1973:23:14"
                  },
                  "scope": 2298,
                  "src": "1913:190:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2285,
                    "nodeType": "Block",
                    "src": "2285:106:14",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2347:38:14",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2361:14:14",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2371:4:14"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2361:6:14"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 2282,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2361:6:14",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2278,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2371:4:14",
                            "valueSize": 1
                          }
                        ],
                        "id": 2284,
                        "nodeType": "InlineAssembly",
                        "src": "2338:47:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2276,
                    "nodeType": "StructuredDocumentation",
                    "src": "2109:87:14",
                    "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`."
                  },
                  "id": 2286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBytes32Slot",
                  "nameLocation": "2210:14:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2278,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2233:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2286,
                        "src": "2225:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2277,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2225:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2224:14:14"
                  },
                  "returnParameters": {
                    "id": 2283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2282,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2282:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2286,
                        "src": "2262:21:14",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Slot_$2250_storage_ptr",
                          "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"
                        },
                        "typeName": {
                          "id": 2281,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2280,
                            "name": "Bytes32Slot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2250,
                            "src": "2262:11:14"
                          },
                          "referencedDeclaration": 2250,
                          "src": "2262:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Slot_$2250_storage_ptr",
                            "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2261:23:14"
                  },
                  "scope": 2298,
                  "src": "2201:190:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2296,
                    "nodeType": "Block",
                    "src": "2573:106:14",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2635:38:14",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2649:14:14",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2659:4:14"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2649:6:14"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 2293,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2649:6:14",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2289,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2659:4:14",
                            "valueSize": 1
                          }
                        ],
                        "id": 2295,
                        "nodeType": "InlineAssembly",
                        "src": "2626:47:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2287,
                    "nodeType": "StructuredDocumentation",
                    "src": "2397:87:14",
                    "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`."
                  },
                  "id": 2297,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUint256Slot",
                  "nameLocation": "2498:14:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2290,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2289,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2521:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2297,
                        "src": "2513:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2288,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2513:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2512:14:14"
                  },
                  "returnParameters": {
                    "id": 2294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2293,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2570:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2297,
                        "src": "2550:21:14",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Uint256Slot_$2253_storage_ptr",
                          "typeString": "struct StorageSlotUpgradeable.Uint256Slot"
                        },
                        "typeName": {
                          "id": 2292,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2291,
                            "name": "Uint256Slot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "2550:11:14"
                          },
                          "referencedDeclaration": 2253,
                          "src": "2550:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Uint256Slot_$2253_storage_ptr",
                            "typeString": "struct StorageSlotUpgradeable.Uint256Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2549:23:14"
                  },
                  "scope": 2298,
                  "src": "2489:190:14",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2299,
              "src": "1279:1402:14",
              "usedErrors": []
            }
          ],
          "src": "105:2577:14"
        },
        "id": 14
      },
      "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol",
          "exportedSymbols": {
            "StringsUpgradeable": [
              2524
            ]
          },
          "id": 2525,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2300,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "StringsUpgradeable",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2301,
                "nodeType": "StructuredDocumentation",
                "src": "126:34:15",
                "text": " @dev String operations."
              },
              "fullyImplemented": true,
              "id": 2524,
              "linearizedBaseContracts": [
                2524
              ],
              "name": "StringsUpgradeable",
              "nameLocation": "169:18:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 2304,
                  "mutability": "constant",
                  "name": "_HEX_SYMBOLS",
                  "nameLocation": "219:12:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 2524,
                  "src": "194:58:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 2302,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "194:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "value": {
                    "hexValue": "30313233343536373839616263646566",
                    "id": 2303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "234:18:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                      "typeString": "literal_string \"0123456789abcdef\""
                    },
                    "value": "0123456789abcdef"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 2307,
                  "mutability": "constant",
                  "name": "_ADDRESS_LENGTH",
                  "nameLocation": "281:15:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 2524,
                  "src": "258:43:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2305,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "258:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3230",
                    "id": 2306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "299:2:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_20_by_1",
                      "typeString": "int_const 20"
                    },
                    "value": "20"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2385,
                    "nodeType": "Block",
                    "src": "474:632:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2315,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2310,
                            "src": "676:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "685:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "676:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2321,
                        "nodeType": "IfStatement",
                        "src": "672:51:15",
                        "trueBody": {
                          "id": 2320,
                          "nodeType": "Block",
                          "src": "688:35:15",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 2318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "709:3:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 2314,
                              "id": 2319,
                              "nodeType": "Return",
                              "src": "702:10:15"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2323
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2323,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "740:4:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2385,
                            "src": "732:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2322,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "732:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2325,
                        "initialValue": {
                          "id": 2324,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2310,
                          "src": "747:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "732:20:15"
                      },
                      {
                        "assignments": [
                          2327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2327,
                            "mutability": "mutable",
                            "name": "digits",
                            "nameLocation": "770:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2385,
                            "src": "762:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2326,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "762:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2328,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "762:14:15"
                      },
                      {
                        "body": {
                          "id": 2339,
                          "nodeType": "Block",
                          "src": "804:57:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 2333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "818:8:15",
                                "subExpression": {
                                  "id": 2332,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2327,
                                  "src": "818:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2334,
                              "nodeType": "ExpressionStatement",
                              "src": "818:8:15"
                            },
                            {
                              "expression": {
                                "id": 2337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2335,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2323,
                                  "src": "840:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 2336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "848:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "840:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2338,
                              "nodeType": "ExpressionStatement",
                              "src": "840:10:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2329,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2323,
                            "src": "793:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "801:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "793:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2340,
                        "nodeType": "WhileStatement",
                        "src": "786:75:15"
                      },
                      {
                        "assignments": [
                          2342
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2342,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "883:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2385,
                            "src": "870:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2341,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "870:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2347,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2345,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2327,
                              "src": "902:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "892:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 2343,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "896:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 2346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "892:17:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "870:39:15"
                      },
                      {
                        "body": {
                          "id": 2378,
                          "nodeType": "Block",
                          "src": "938:131:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 2353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2351,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2327,
                                  "src": "952:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2352,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "962:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "952:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2354,
                              "nodeType": "ExpressionStatement",
                              "src": "952:11:15"
                            },
                            {
                              "expression": {
                                "id": 2372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2355,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2342,
                                    "src": "977:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2357,
                                  "indexExpression": {
                                    "id": 2356,
                                    "name": "digits",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2327,
                                    "src": "984:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "977:14:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2369,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 2362,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1007:2:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_48_by_1",
                                              "typeString": "int_const 48"
                                            },
                                            "value": "48"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 2367,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 2365,
                                                  "name": "value",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2310,
                                                  "src": "1020:5:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 2366,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "1028:2:15",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "1020:10:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 2364,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1012:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 2363,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1012:7:15",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 2368,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1012:19:15",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1007:24:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2361,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1001:5:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 2360,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1001:5:15",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1001:31:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 2359,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "994:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 2358,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "994:6:15",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "994:39:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "977:56:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 2373,
                              "nodeType": "ExpressionStatement",
                              "src": "977:56:15"
                            },
                            {
                              "expression": {
                                "id": 2376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2374,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2310,
                                  "src": "1047:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 2375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1056:2:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "1047:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2377,
                              "nodeType": "ExpressionStatement",
                              "src": "1047:11:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2348,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2310,
                            "src": "926:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "935:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "926:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2379,
                        "nodeType": "WhileStatement",
                        "src": "919:150:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2382,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2342,
                              "src": "1092:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1085:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 2380,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1085:6:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1085:14:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2314,
                        "id": 2384,
                        "nodeType": "Return",
                        "src": "1078:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2308,
                    "nodeType": "StructuredDocumentation",
                    "src": "308:90:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                  },
                  "id": 2386,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "412:8:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2310,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "429:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2386,
                        "src": "421:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "421:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "420:15:15"
                  },
                  "returnParameters": {
                    "id": 2314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2313,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2386,
                        "src": "459:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2312,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "459:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "458:15:15"
                  },
                  "scope": 2524,
                  "src": "403:703:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2426,
                    "nodeType": "Block",
                    "src": "1285:255:15",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2394,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2389,
                            "src": "1299:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1308:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1299:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2400,
                        "nodeType": "IfStatement",
                        "src": "1295:54:15",
                        "trueBody": {
                          "id": 2399,
                          "nodeType": "Block",
                          "src": "1311:38:15",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30783030",
                                "id": 2397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1332:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4",
                                  "typeString": "literal_string \"0x00\""
                                },
                                "value": "0x00"
                              },
                              "functionReturnParameters": 2393,
                              "id": 2398,
                              "nodeType": "Return",
                              "src": "1325:13:15"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2402
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2402,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "1366:4:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2426,
                            "src": "1358:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2401,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1358:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2404,
                        "initialValue": {
                          "id": 2403,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2389,
                          "src": "1373:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1358:20:15"
                      },
                      {
                        "assignments": [
                          2406
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2406,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1396:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2426,
                            "src": "1388:14:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2405,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1388:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2408,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 2407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1405:1:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1388:18:15"
                      },
                      {
                        "body": {
                          "id": 2419,
                          "nodeType": "Block",
                          "src": "1434:57:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 2413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "1448:8:15",
                                "subExpression": {
                                  "id": 2412,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2406,
                                  "src": "1448:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2414,
                              "nodeType": "ExpressionStatement",
                              "src": "1448:8:15"
                            },
                            {
                              "expression": {
                                "id": 2417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2415,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2402,
                                  "src": "1470:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "38",
                                  "id": 2416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1479:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "1470:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2418,
                              "nodeType": "ExpressionStatement",
                              "src": "1470:10:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2409,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2402,
                            "src": "1423:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1431:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1423:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2420,
                        "nodeType": "WhileStatement",
                        "src": "1416:75:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2422,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2389,
                              "src": "1519:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2423,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2406,
                              "src": "1526:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2421,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2427,
                              2503,
                              2523
                            ],
                            "referencedDeclaration": 2503,
                            "src": "1507:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 2424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1507:26:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2393,
                        "id": 2425,
                        "nodeType": "Return",
                        "src": "1500:33:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2387,
                    "nodeType": "StructuredDocumentation",
                    "src": "1112:94:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                  },
                  "id": 2427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1220:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2389,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1240:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2427,
                        "src": "1232:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2388,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1232:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1231:15:15"
                  },
                  "returnParameters": {
                    "id": 2393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2392,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2427,
                        "src": "1270:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2391,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1270:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1269:15:15"
                  },
                  "scope": 2524,
                  "src": "1211:329:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2502,
                    "nodeType": "Block",
                    "src": "1753:351:15",
                    "statements": [
                      {
                        "assignments": [
                          2438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2438,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "1776:6:15",
                            "nodeType": "VariableDeclaration",
                            "scope": 2502,
                            "src": "1763:19:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2437,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1763:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2447,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 2441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1795:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 2442,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2432,
                                  "src": "1799:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1795:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 2444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1808:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1795:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1785:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 2439,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1789:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 2446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1785:25:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1763:47:15"
                      },
                      {
                        "expression": {
                          "id": 2452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2448,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2438,
                              "src": "1820:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2450,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 2449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1827:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1820:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 2451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1832:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                              "typeString": "literal_string \"0\""
                            },
                            "value": "0"
                          },
                          "src": "1820:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 2453,
                        "nodeType": "ExpressionStatement",
                        "src": "1820:15:15"
                      },
                      {
                        "expression": {
                          "id": 2458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2454,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2438,
                              "src": "1845:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2456,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 2455,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1852:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1845:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "78",
                            "id": 2457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1857:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                              "typeString": "literal_string \"x\""
                            },
                            "value": "x"
                          },
                          "src": "1845:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 2459,
                        "nodeType": "ExpressionStatement",
                        "src": "1845:15:15"
                      },
                      {
                        "body": {
                          "id": 2488,
                          "nodeType": "Block",
                          "src": "1915:87:15",
                          "statements": [
                            {
                              "expression": {
                                "id": 2482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2474,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2438,
                                    "src": "1929:6:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 2476,
                                  "indexExpression": {
                                    "id": 2475,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2461,
                                    "src": "1936:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1929:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 2477,
                                    "name": "_HEX_SYMBOLS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2304,
                                    "src": "1941:12:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  },
                                  "id": 2481,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2478,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2430,
                                      "src": "1954:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 2479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1962:3:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "1954:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1941:25:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "1929:37:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 2483,
                              "nodeType": "ExpressionStatement",
                              "src": "1929:37:15"
                            },
                            {
                              "expression": {
                                "id": 2486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2484,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2430,
                                  "src": "1980:5:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 2485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1990:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "1980:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2487,
                              "nodeType": "ExpressionStatement",
                              "src": "1980:11:15"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2468,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2461,
                            "src": "1903:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 2469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1907:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1903:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2489,
                        "initializationExpression": {
                          "assignments": [
                            2461
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2461,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1883:1:15",
                              "nodeType": "VariableDeclaration",
                              "scope": 2489,
                              "src": "1875:9:15",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2460,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1875:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2467,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 2462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1887:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 2463,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2432,
                                "src": "1891:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1887:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 2465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1900:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1887:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1875:26:15"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "1910:3:15",
                            "subExpression": {
                              "id": 2471,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2461,
                              "src": "1912:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2473,
                          "nodeType": "ExpressionStatement",
                          "src": "1910:3:15"
                        },
                        "nodeType": "ForStatement",
                        "src": "1870:132:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2491,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2430,
                                "src": "2019:5:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 2492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2028:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2019:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                              "id": 2494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2031:34:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              },
                              "value": "Strings: hex length insufficient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              }
                            ],
                            "id": 2490,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2011:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2011:55:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2496,
                        "nodeType": "ExpressionStatement",
                        "src": "2011:55:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2499,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2438,
                              "src": "2090:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2083:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 2497,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2083:6:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2083:14:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2436,
                        "id": 2501,
                        "nodeType": "Return",
                        "src": "2076:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2428,
                    "nodeType": "StructuredDocumentation",
                    "src": "1546:112:15",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                  },
                  "id": 2503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1672:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2430,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1692:5:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "1684:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1684:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2432,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "1707:6:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "1699:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1699:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1683:31:15"
                  },
                  "returnParameters": {
                    "id": 2436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2435,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2503,
                        "src": "1738:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2434,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1738:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1737:15:15"
                  },
                  "scope": 2524,
                  "src": "1663:441:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2522,
                    "nodeType": "Block",
                    "src": "2329:76:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2516,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2506,
                                      "src": "2374:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2515,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2366:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 2514,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2366:7:15",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2366:13:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 2513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2358:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 2512,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2358:7:15",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2358:22:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2519,
                              "name": "_ADDRESS_LENGTH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2307,
                              "src": "2382:15:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 2511,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2427,
                              2503,
                              2523
                            ],
                            "referencedDeclaration": 2503,
                            "src": "2346:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 2520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2346:52:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2510,
                        "id": 2521,
                        "nodeType": "Return",
                        "src": "2339:59:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2504,
                    "nodeType": "StructuredDocumentation",
                    "src": "2110:141:15",
                    "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."
                  },
                  "id": 2523,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "2265:11:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2506,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "2285:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2523,
                        "src": "2277:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2277:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2276:14:15"
                  },
                  "returnParameters": {
                    "id": 2510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2509,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2523,
                        "src": "2314:13:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2508,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2314:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2313:15:15"
                  },
                  "scope": 2524,
                  "src": "2256:149:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2525,
              "src": "161:2246:15",
              "usedErrors": []
            }
          ],
          "src": "101:2307:15"
        },
        "id": 15
      },
      "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
          "exportedSymbols": {
            "ECDSAUpgradeable": [
              2931
            ],
            "StringsUpgradeable": [
              2524
            ]
          },
          "id": 2932,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2526,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:23:16"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol",
              "file": "../StringsUpgradeable.sol",
              "id": 2527,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2932,
              "sourceUnit": 2525,
              "src": "137:35:16",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ECDSAUpgradeable",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2528,
                "nodeType": "StructuredDocumentation",
                "src": "174:205:16",
                "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."
              },
              "fullyImplemented": true,
              "id": 2931,
              "linearizedBaseContracts": [
                2931
              ],
              "name": "ECDSAUpgradeable",
              "nameLocation": "388:16:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ECDSAUpgradeable.RecoverError",
                  "id": 2534,
                  "members": [
                    {
                      "id": 2529,
                      "name": "NoError",
                      "nameLocation": "439:7:16",
                      "nodeType": "EnumValue",
                      "src": "439:7:16"
                    },
                    {
                      "id": 2530,
                      "name": "InvalidSignature",
                      "nameLocation": "456:16:16",
                      "nodeType": "EnumValue",
                      "src": "456:16:16"
                    },
                    {
                      "id": 2531,
                      "name": "InvalidSignatureLength",
                      "nameLocation": "482:22:16",
                      "nodeType": "EnumValue",
                      "src": "482:22:16"
                    },
                    {
                      "id": 2532,
                      "name": "InvalidSignatureS",
                      "nameLocation": "514:17:16",
                      "nodeType": "EnumValue",
                      "src": "514:17:16"
                    },
                    {
                      "id": 2533,
                      "name": "InvalidSignatureV",
                      "nameLocation": "541:17:16",
                      "nodeType": "EnumValue",
                      "src": "541:17:16"
                    }
                  ],
                  "name": "RecoverError",
                  "nameLocation": "416:12:16",
                  "nodeType": "EnumDefinition",
                  "src": "411:153:16"
                },
                {
                  "body": {
                    "id": 2587,
                    "nodeType": "Block",
                    "src": "624:577:16",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_RecoverError_$2534",
                            "typeString": "enum ECDSAUpgradeable.RecoverError"
                          },
                          "id": 2543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2540,
                            "name": "error",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2537,
                            "src": "638:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2534",
                              "typeString": "enum ECDSAUpgradeable.RecoverError"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 2541,
                              "name": "RecoverError",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2534,
                              "src": "647:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                              }
                            },
                            "id": 2542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NoError",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2529,
                            "src": "647:20:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2534",
                              "typeString": "enum ECDSAUpgradeable.RecoverError"
                            }
                          },
                          "src": "638:29:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_RecoverError_$2534",
                              "typeString": "enum ECDSAUpgradeable.RecoverError"
                            },
                            "id": 2549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2546,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2537,
                              "src": "734:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 2547,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2534,
                                "src": "743:12:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                  "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                }
                              },
                              "id": 2548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "InvalidSignature",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2530,
                              "src": "743:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            },
                            "src": "734:38:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              },
                              "id": 2558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2555,
                                "name": "error",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2537,
                                "src": "843:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$2534",
                                  "typeString": "enum ECDSAUpgradeable.RecoverError"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 2556,
                                  "name": "RecoverError",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2534,
                                  "src": "852:12:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                    "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                  }
                                },
                                "id": 2557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "InvalidSignatureLength",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2531,
                                "src": "852:35:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$2534",
                                  "typeString": "enum ECDSAUpgradeable.RecoverError"
                                }
                              },
                              "src": "843:44:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_RecoverError_$2534",
                                  "typeString": "enum ECDSAUpgradeable.RecoverError"
                                },
                                "id": 2567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2564,
                                  "name": "error",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2537,
                                  "src": "965:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$2534",
                                    "typeString": "enum ECDSAUpgradeable.RecoverError"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 2565,
                                    "name": "RecoverError",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2534,
                                    "src": "974:12:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                      "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                    }
                                  },
                                  "id": 2566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "InvalidSignatureS",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2532,
                                  "src": "974:30:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$2534",
                                    "typeString": "enum ECDSAUpgradeable.RecoverError"
                                  }
                                },
                                "src": "965:39:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_RecoverError_$2534",
                                    "typeString": "enum ECDSAUpgradeable.RecoverError"
                                  },
                                  "id": 2576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2573,
                                    "name": "error",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2537,
                                    "src": "1085:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2534",
                                      "typeString": "enum ECDSAUpgradeable.RecoverError"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 2574,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2534,
                                      "src": "1094:12:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                        "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                      }
                                    },
                                    "id": 2575,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureV",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2533,
                                    "src": "1094:30:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2534",
                                      "typeString": "enum ECDSAUpgradeable.RecoverError"
                                    }
                                  },
                                  "src": "1085:39:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 2582,
                                "nodeType": "IfStatement",
                                "src": "1081:114:16",
                                "trueBody": {
                                  "id": 2581,
                                  "nodeType": "Block",
                                  "src": "1126:69:16",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c7565",
                                            "id": 2578,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1147:36:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4",
                                              "typeString": "literal_string \"ECDSA: invalid signature 'v' value\""
                                            },
                                            "value": "ECDSA: invalid signature 'v' value"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4",
                                              "typeString": "literal_string \"ECDSA: invalid signature 'v' value\""
                                            }
                                          ],
                                          "id": 2577,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "1140:6:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 2579,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1140:44:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2580,
                                      "nodeType": "ExpressionStatement",
                                      "src": "1140:44:16"
                                    }
                                  ]
                                }
                              },
                              "id": 2583,
                              "nodeType": "IfStatement",
                              "src": "961:234:16",
                              "trueBody": {
                                "id": 2572,
                                "nodeType": "Block",
                                "src": "1006:69:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c7565",
                                          "id": 2569,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1027:36:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd",
                                            "typeString": "literal_string \"ECDSA: invalid signature 's' value\""
                                          },
                                          "value": "ECDSA: invalid signature 's' value"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd",
                                            "typeString": "literal_string \"ECDSA: invalid signature 's' value\""
                                          }
                                        ],
                                        "id": 2568,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "1020:6:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 2570,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1020:44:16",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2571,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1020:44:16"
                                  }
                                ]
                              }
                            },
                            "id": 2584,
                            "nodeType": "IfStatement",
                            "src": "839:356:16",
                            "trueBody": {
                              "id": 2563,
                              "nodeType": "Block",
                              "src": "889:66:16",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                        "id": 2560,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "910:33:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77",
                                          "typeString": "literal_string \"ECDSA: invalid signature length\""
                                        },
                                        "value": "ECDSA: invalid signature length"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77",
                                          "typeString": "literal_string \"ECDSA: invalid signature length\""
                                        }
                                      ],
                                      "id": 2559,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -19,
                                        -19
                                      ],
                                      "referencedDeclaration": -19,
                                      "src": "903:6:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 2561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "903:41:16",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 2562,
                                  "nodeType": "ExpressionStatement",
                                  "src": "903:41:16"
                                }
                              ]
                            }
                          },
                          "id": 2585,
                          "nodeType": "IfStatement",
                          "src": "730:465:16",
                          "trueBody": {
                            "id": 2554,
                            "nodeType": "Block",
                            "src": "774:59:16",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                      "id": 2551,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "795:26:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be",
                                        "typeString": "literal_string \"ECDSA: invalid signature\""
                                      },
                                      "value": "ECDSA: invalid signature"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be",
                                        "typeString": "literal_string \"ECDSA: invalid signature\""
                                      }
                                    ],
                                    "id": 2550,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "788:6:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 2552,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "788:34:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2553,
                                "nodeType": "ExpressionStatement",
                                "src": "788:34:16"
                              }
                            ]
                          }
                        },
                        "id": 2586,
                        "nodeType": "IfStatement",
                        "src": "634:561:16",
                        "trueBody": {
                          "id": 2545,
                          "nodeType": "Block",
                          "src": "669:55:16",
                          "statements": [
                            {
                              "functionReturnParameters": 2539,
                              "id": 2544,
                              "nodeType": "Return",
                              "src": "683:7:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 2588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_throwError",
                  "nameLocation": "579:11:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2537,
                        "mutability": "mutable",
                        "name": "error",
                        "nameLocation": "604:5:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2588,
                        "src": "591:18:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2534",
                          "typeString": "enum ECDSAUpgradeable.RecoverError"
                        },
                        "typeName": {
                          "id": 2536,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2535,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2534,
                            "src": "591:12:16"
                          },
                          "referencedDeclaration": 2534,
                          "src": "591:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2534",
                            "typeString": "enum ECDSAUpgradeable.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "590:20:16"
                  },
                  "returnParameters": {
                    "id": 2539,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "624:0:16"
                  },
                  "scope": 2931,
                  "src": "570:631:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2652,
                    "nodeType": "Block",
                    "src": "2369:1269:16",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2601,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2593,
                              "src": "2576:9:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2576:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "3635",
                            "id": 2603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2596:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_65_by_1",
                              "typeString": "int_const 65"
                            },
                            "value": "65"
                          },
                          "src": "2576:22:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2623,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2593,
                                "src": "3105:9:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3105:16:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "3634",
                              "id": 2625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3125:2:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              },
                              "value": "64"
                            },
                            "src": "3105:22:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 2649,
                            "nodeType": "Block",
                            "src": "3551:81:16",
                            "statements": [
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 2643,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3581:1:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 2642,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3573:7:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 2641,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3573:7:16",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2644,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3573:10:16",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2645,
                                        "name": "RecoverError",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2534,
                                        "src": "3585:12:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                          "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                        }
                                      },
                                      "id": 2646,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "InvalidSignatureLength",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2531,
                                      "src": "3585:35:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_RecoverError_$2534",
                                        "typeString": "enum ECDSAUpgradeable.RecoverError"
                                      }
                                    }
                                  ],
                                  "id": 2647,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3572:49:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                                    "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                                  }
                                },
                                "functionReturnParameters": 2600,
                                "id": 2648,
                                "nodeType": "Return",
                                "src": "3565:56:16"
                              }
                            ]
                          },
                          "id": 2650,
                          "nodeType": "IfStatement",
                          "src": "3101:531:16",
                          "trueBody": {
                            "id": 2640,
                            "nodeType": "Block",
                            "src": "3129:416:16",
                            "statements": [
                              {
                                "assignments": [
                                  2628
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2628,
                                    "mutability": "mutable",
                                    "name": "r",
                                    "nameLocation": "3151:1:16",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2640,
                                    "src": "3143:9:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 2627,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3143:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2629,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3143:9:16"
                              },
                              {
                                "assignments": [
                                  2631
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2631,
                                    "mutability": "mutable",
                                    "name": "vs",
                                    "nameLocation": "3174:2:16",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2640,
                                    "src": "3166:10:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 2630,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3166:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2632,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3166:10:16"
                              },
                              {
                                "AST": {
                                  "nodeType": "YulBlock",
                                  "src": "3377:114:16",
                                  "statements": [
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "3395:32:16",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "3410:9:16"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3421:4:16",
                                                "type": "",
                                                "value": "0x20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3406:3:16"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3406:20:16"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3400:5:16"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3400:27:16"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "r",
                                          "nodeType": "YulIdentifier",
                                          "src": "3395:1:16"
                                        }
                                      ]
                                    },
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "3444:33:16",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "3460:9:16"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3471:4:16",
                                                "type": "",
                                                "value": "0x40"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3456:3:16"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3456:20:16"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3450:5:16"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3450:27:16"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "vs",
                                          "nodeType": "YulIdentifier",
                                          "src": "3444:2:16"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "documentation": "@solidity memory-safe-assembly",
                                "evmVersion": "london",
                                "externalReferences": [
                                  {
                                    "declaration": 2628,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3395:1:16",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 2593,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3410:9:16",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 2593,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3460:9:16",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 2631,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3444:2:16",
                                    "valueSize": 1
                                  }
                                ],
                                "id": 2633,
                                "nodeType": "InlineAssembly",
                                "src": "3368:123:16"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2635,
                                      "name": "hash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2591,
                                      "src": "3522:4:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 2636,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2628,
                                      "src": "3528:1:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 2637,
                                      "name": "vs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2631,
                                      "src": "3531:2:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 2634,
                                    "name": "tryRecover",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      2653,
                                      2727,
                                      2838
                                    ],
                                    "referencedDeclaration": 2727,
                                    "src": "3511:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2534_$",
                                      "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"
                                    }
                                  },
                                  "id": 2638,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3511:23:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                                    "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                                  }
                                },
                                "functionReturnParameters": 2600,
                                "id": 2639,
                                "nodeType": "Return",
                                "src": "3504:30:16"
                              }
                            ]
                          }
                        },
                        "id": 2651,
                        "nodeType": "IfStatement",
                        "src": "2572:1060:16",
                        "trueBody": {
                          "id": 2622,
                          "nodeType": "Block",
                          "src": "2600:495:16",
                          "statements": [
                            {
                              "assignments": [
                                2606
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2606,
                                  "mutability": "mutable",
                                  "name": "r",
                                  "nameLocation": "2622:1:16",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2622,
                                  "src": "2614:9:16",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 2605,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2614:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2607,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2614:9:16"
                            },
                            {
                              "assignments": [
                                2609
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2609,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nameLocation": "2645:1:16",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2622,
                                  "src": "2637:9:16",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 2608,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2637:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2610,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2637:9:16"
                            },
                            {
                              "assignments": [
                                2612
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2612,
                                  "mutability": "mutable",
                                  "name": "v",
                                  "nameLocation": "2666:1:16",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2622,
                                  "src": "2660:7:16",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 2611,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2660:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2613,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2660:7:16"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "2868:171:16",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2886:32:16",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "2901:9:16"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2912:4:16",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2897:3:16"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2897:20:16"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2891:5:16"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2891:27:16"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "2886:1:16"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2935:32:16",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "2950:9:16"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2961:4:16",
                                              "type": "",
                                              "value": "0x40"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2946:3:16"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2946:20:16"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2940:5:16"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2940:27:16"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "s",
                                        "nodeType": "YulIdentifier",
                                        "src": "2935:1:16"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2984:41:16",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2994:1:16",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "signature",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3007:9:16"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3018:4:16",
                                                  "type": "",
                                                  "value": "0x60"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3003:3:16"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3003:20:16"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2997:5:16"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2997:27:16"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "byte",
                                        "nodeType": "YulIdentifier",
                                        "src": "2989:4:16"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2989:36:16"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "v",
                                        "nodeType": "YulIdentifier",
                                        "src": "2984:1:16"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "documentation": "@solidity memory-safe-assembly",
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 2606,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2886:1:16",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2609,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2935:1:16",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2593,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2901:9:16",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2593,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2950:9:16",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2593,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "3007:9:16",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2612,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2984:1:16",
                                  "valueSize": 1
                                }
                              ],
                              "id": 2614,
                              "nodeType": "InlineAssembly",
                              "src": "2859:180:16"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2616,
                                    "name": "hash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2591,
                                    "src": "3070:4:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 2617,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2612,
                                    "src": "3076:1:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "id": 2618,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2606,
                                    "src": "3079:1:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 2619,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2609,
                                    "src": "3082:1:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 2615,
                                  "name": "tryRecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2653,
                                    2727,
                                    2838
                                  ],
                                  "referencedDeclaration": 2838,
                                  "src": "3059:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2534_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"
                                  }
                                },
                                "id": 2620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3059:25:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                                  "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 2600,
                              "id": 2621,
                              "nodeType": "Return",
                              "src": "3052:32:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2589,
                    "nodeType": "StructuredDocumentation",
                    "src": "1207:1053:16",
                    "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"
                  },
                  "id": 2653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "2274:10:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2591,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "2293:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2653,
                        "src": "2285:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2590,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2285:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2593,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2312:9:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2653,
                        "src": "2299:22:16",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2592,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2299:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2284:38:16"
                  },
                  "returnParameters": {
                    "id": 2600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2596,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2653,
                        "src": "2346:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2595,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2346:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2599,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2653,
                        "src": "2355:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2534",
                          "typeString": "enum ECDSAUpgradeable.RecoverError"
                        },
                        "typeName": {
                          "id": 2598,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2597,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2534,
                            "src": "2355:12:16"
                          },
                          "referencedDeclaration": 2534,
                          "src": "2355:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2534",
                            "typeString": "enum ECDSAUpgradeable.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2345:23:16"
                  },
                  "scope": 2931,
                  "src": "2265:1373:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2679,
                    "nodeType": "Block",
                    "src": "4511:140:16",
                    "statements": [
                      {
                        "assignments": [
                          2664,
                          2667
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2664,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "4530:9:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2679,
                            "src": "4522:17:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2663,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4522:7:16",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2667,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "4554:5:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2679,
                            "src": "4541:18:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2534",
                              "typeString": "enum ECDSAUpgradeable.RecoverError"
                            },
                            "typeName": {
                              "id": 2666,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2665,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2534,
                                "src": "4541:12:16"
                              },
                              "referencedDeclaration": 2534,
                              "src": "4541:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2672,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2669,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2656,
                              "src": "4574:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2670,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2658,
                              "src": "4580:9:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2668,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2653,
                              2727,
                              2838
                            ],
                            "referencedDeclaration": 2653,
                            "src": "4563:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$2534_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSAUpgradeable.RecoverError)"
                            }
                          },
                          "id": 2671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4563:27:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                            "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4521:69:16"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2674,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2667,
                              "src": "4612:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            ],
                            "id": 2673,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2588,
                            "src": "4600:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2534_$returns$__$",
                              "typeString": "function (enum ECDSAUpgradeable.RecoverError) pure"
                            }
                          },
                          "id": 2675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4600:18:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2676,
                        "nodeType": "ExpressionStatement",
                        "src": "4600:18:16"
                      },
                      {
                        "expression": {
                          "id": 2677,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2664,
                          "src": "4635:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2662,
                        "id": 2678,
                        "nodeType": "Return",
                        "src": "4628:16:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2654,
                    "nodeType": "StructuredDocumentation",
                    "src": "3644:775:16",
                    "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."
                  },
                  "id": 2680,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "4433:7:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2656,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4449:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "4441:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2655,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4441:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2658,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "4468:9:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "4455:22:16",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2657,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4455:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4440:38:16"
                  },
                  "returnParameters": {
                    "id": 2662,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2661,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "4502:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2660,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4502:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4501:9:16"
                  },
                  "scope": 2931,
                  "src": "4424:227:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2726,
                    "nodeType": "Block",
                    "src": "5038:203:16",
                    "statements": [
                      {
                        "assignments": [
                          2696
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2696,
                            "mutability": "mutable",
                            "name": "s",
                            "nameLocation": "5056:1:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2726,
                            "src": "5048:9:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2695,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5048:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2703,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 2702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2697,
                            "name": "vs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2687,
                            "src": "5060:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
                                "id": 2700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5073:66:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                                  "typeString": "int_const 5789...(69 digits omitted)...9967"
                                },
                                "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                                  "typeString": "int_const 5789...(69 digits omitted)...9967"
                                }
                              ],
                              "id": 2699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5065:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 2698,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "5065:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5065:75:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5060:80:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5048:92:16"
                      },
                      {
                        "assignments": [
                          2705
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2705,
                            "mutability": "mutable",
                            "name": "v",
                            "nameLocation": "5156:1:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2726,
                            "src": "5150:7:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 2704,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5150:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2718,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 2710,
                                          "name": "vs",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2687,
                                          "src": "5175:2:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 2709,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5167:7:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 2708,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5167:7:16",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2711,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5167:11:16",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">>",
                                    "rightExpression": {
                                      "hexValue": "323535",
                                      "id": 2712,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5182:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_255_by_1",
                                        "typeString": "int_const 255"
                                      },
                                      "value": "255"
                                    },
                                    "src": "5167:18:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2714,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5166:20:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "3237",
                                "id": 2715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5189:2:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_27_by_1",
                                  "typeString": "int_const 27"
                                },
                                "value": "27"
                              },
                              "src": "5166:25:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5160:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 2706,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5160:5:16",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5160:32:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5150:42:16"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2720,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2683,
                              "src": "5220:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2721,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2705,
                              "src": "5226:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 2722,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2685,
                              "src": "5229:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2723,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2696,
                              "src": "5232:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2719,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2653,
                              2727,
                              2838
                            ],
                            "referencedDeclaration": 2838,
                            "src": "5209:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2534_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"
                            }
                          },
                          "id": 2724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5209:25:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                            "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                          }
                        },
                        "functionReturnParameters": 2694,
                        "id": 2725,
                        "nodeType": "Return",
                        "src": "5202:32:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2681,
                    "nodeType": "StructuredDocumentation",
                    "src": "4657:243:16",
                    "text": " @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"
                  },
                  "id": 2727,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "4914:10:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2688,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2683,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4942:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2727,
                        "src": "4934:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2682,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4934:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2685,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4964:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2727,
                        "src": "4956:9:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2684,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4956:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2687,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "4983:2:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2727,
                        "src": "4975:10:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2686,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4975:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4924:67:16"
                  },
                  "returnParameters": {
                    "id": 2694,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2690,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2727,
                        "src": "5015:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2689,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5015:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2693,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2727,
                        "src": "5024:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2534",
                          "typeString": "enum ECDSAUpgradeable.RecoverError"
                        },
                        "typeName": {
                          "id": 2692,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2691,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2534,
                            "src": "5024:12:16"
                          },
                          "referencedDeclaration": 2534,
                          "src": "5024:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2534",
                            "typeString": "enum ECDSAUpgradeable.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5014:23:16"
                  },
                  "scope": 2931,
                  "src": "4905:336:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2756,
                    "nodeType": "Block",
                    "src": "5522:136:16",
                    "statements": [
                      {
                        "assignments": [
                          2740,
                          2743
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2740,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "5541:9:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2756,
                            "src": "5533:17:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2739,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5533:7:16",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2743,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "5565:5:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2756,
                            "src": "5552:18:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2534",
                              "typeString": "enum ECDSAUpgradeable.RecoverError"
                            },
                            "typeName": {
                              "id": 2742,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2741,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2534,
                                "src": "5552:12:16"
                              },
                              "referencedDeclaration": 2534,
                              "src": "5552:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2749,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2745,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2730,
                              "src": "5585:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2746,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2732,
                              "src": "5591:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2747,
                              "name": "vs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2734,
                              "src": "5594:2:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2744,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2653,
                              2727,
                              2838
                            ],
                            "referencedDeclaration": 2727,
                            "src": "5574:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2534_$",
                              "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"
                            }
                          },
                          "id": 2748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5574:23:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                            "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5532:65:16"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2751,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2743,
                              "src": "5619:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            ],
                            "id": 2750,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2588,
                            "src": "5607:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2534_$returns$__$",
                              "typeString": "function (enum ECDSAUpgradeable.RecoverError) pure"
                            }
                          },
                          "id": 2752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5607:18:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2753,
                        "nodeType": "ExpressionStatement",
                        "src": "5607:18:16"
                      },
                      {
                        "expression": {
                          "id": 2754,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2740,
                          "src": "5642:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2738,
                        "id": 2755,
                        "nodeType": "Return",
                        "src": "5635:16:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2728,
                    "nodeType": "StructuredDocumentation",
                    "src": "5247:154:16",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"
                  },
                  "id": 2757,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "5415:7:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2730,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5440:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2757,
                        "src": "5432:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2729,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5432:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2732,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "5462:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2757,
                        "src": "5454:9:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2731,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5454:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2734,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "5481:2:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2757,
                        "src": "5473:10:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2733,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5473:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5422:67:16"
                  },
                  "returnParameters": {
                    "id": 2738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2737,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2757,
                        "src": "5513:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2736,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5513:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5512:9:16"
                  },
                  "scope": 2931,
                  "src": "5406:252:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2837,
                    "nodeType": "Block",
                    "src": "5981:1454:16",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 2776,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2766,
                                "src": "6877:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6869:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 2774,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6869:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6869:10:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130",
                            "id": 2778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6882:66:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1",
                              "typeString": "int_const 5789...(69 digits omitted)...7168"
                            },
                            "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
                          },
                          "src": "6869:79:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2789,
                        "nodeType": "IfStatement",
                        "src": "6865:161:16",
                        "trueBody": {
                          "id": 2788,
                          "nodeType": "Block",
                          "src": "6950:76:16",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 2782,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6980:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6972:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2780,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6972:7:16",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2783,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6972:10:16",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2784,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2534,
                                      "src": "6984:12:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                        "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                      }
                                    },
                                    "id": 2785,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureS",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2532,
                                    "src": "6984:30:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2534",
                                      "typeString": "enum ECDSAUpgradeable.RecoverError"
                                    }
                                  }
                                ],
                                "id": 2786,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6971:44:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                                  "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 2773,
                              "id": 2787,
                              "nodeType": "Return",
                              "src": "6964:51:16"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2790,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2762,
                              "src": "7039:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "3237",
                              "id": 2791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7044:2:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_27_by_1",
                                "typeString": "int_const 27"
                              },
                              "value": "27"
                            },
                            "src": "7039:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2793,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2762,
                              "src": "7050:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "3238",
                              "id": 2794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7055:2:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_28_by_1",
                                "typeString": "int_const 28"
                              },
                              "value": "28"
                            },
                            "src": "7050:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7039:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2806,
                        "nodeType": "IfStatement",
                        "src": "7035:100:16",
                        "trueBody": {
                          "id": 2805,
                          "nodeType": "Block",
                          "src": "7059:76:16",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 2799,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7089:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2798,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7081:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2797,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7081:7:16",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7081:10:16",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2801,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2534,
                                      "src": "7093:12:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                        "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                      }
                                    },
                                    "id": 2802,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureV",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2533,
                                    "src": "7093:30:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2534",
                                      "typeString": "enum ECDSAUpgradeable.RecoverError"
                                    }
                                  }
                                ],
                                "id": 2803,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7080:44:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                                  "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 2773,
                              "id": 2804,
                              "nodeType": "Return",
                              "src": "7073:51:16"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2808
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2808,
                            "mutability": "mutable",
                            "name": "signer",
                            "nameLocation": "7237:6:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2837,
                            "src": "7229:14:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2807,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7229:7:16",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2815,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2810,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2760,
                              "src": "7256:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2811,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2762,
                              "src": "7262:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 2812,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2764,
                              "src": "7265:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2813,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2766,
                              "src": "7268:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2809,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "7246:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 2814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7246:24:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7229:41:16"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2816,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2808,
                            "src": "7284:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 2819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7302:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 2818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7294:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2817,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7294:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7294:10:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7284:20:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2831,
                        "nodeType": "IfStatement",
                        "src": "7280:101:16",
                        "trueBody": {
                          "id": 2830,
                          "nodeType": "Block",
                          "src": "7306:75:16",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 2824,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7336:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2823,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7328:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2822,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7328:7:16",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7328:10:16",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2826,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2534,
                                      "src": "7340:12:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                        "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                      }
                                    },
                                    "id": 2827,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignature",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2530,
                                    "src": "7340:29:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$2534",
                                      "typeString": "enum ECDSAUpgradeable.RecoverError"
                                    }
                                  }
                                ],
                                "id": 2828,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7327:43:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                                  "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 2773,
                              "id": 2829,
                              "nodeType": "Return",
                              "src": "7320:50:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 2832,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2808,
                              "src": "7399:6:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 2833,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2534,
                                "src": "7407:12:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$2534_$",
                                  "typeString": "type(enum ECDSAUpgradeable.RecoverError)"
                                }
                              },
                              "id": 2834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "NoError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2529,
                              "src": "7407:20:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            }
                          ],
                          "id": 2835,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7398:30:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                            "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                          }
                        },
                        "functionReturnParameters": 2773,
                        "id": 2836,
                        "nodeType": "Return",
                        "src": "7391:37:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2758,
                    "nodeType": "StructuredDocumentation",
                    "src": "5664:163:16",
                    "text": " @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"
                  },
                  "id": 2838,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "5841:10:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2767,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2760,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5869:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2838,
                        "src": "5861:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2759,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5861:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2762,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "5889:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2838,
                        "src": "5883:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2761,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5883:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2764,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "5908:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2838,
                        "src": "5900:9:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2763,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5900:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2766,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "5927:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2838,
                        "src": "5919:9:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2765,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5919:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5851:83:16"
                  },
                  "returnParameters": {
                    "id": 2773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2769,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2838,
                        "src": "5958:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5958:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2772,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2838,
                        "src": "5967:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$2534",
                          "typeString": "enum ECDSAUpgradeable.RecoverError"
                        },
                        "typeName": {
                          "id": 2771,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2770,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2534,
                            "src": "5967:12:16"
                          },
                          "referencedDeclaration": 2534,
                          "src": "5967:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$2534",
                            "typeString": "enum ECDSAUpgradeable.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5957:23:16"
                  },
                  "scope": 2931,
                  "src": "5832:1603:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2870,
                    "nodeType": "Block",
                    "src": "7700:138:16",
                    "statements": [
                      {
                        "assignments": [
                          2853,
                          2856
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2853,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "7719:9:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2870,
                            "src": "7711:17:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2852,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7711:7:16",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2856,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "7743:5:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 2870,
                            "src": "7730:18:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$2534",
                              "typeString": "enum ECDSAUpgradeable.RecoverError"
                            },
                            "typeName": {
                              "id": 2855,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2854,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2534,
                                "src": "7730:12:16"
                              },
                              "referencedDeclaration": 2534,
                              "src": "7730:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2863,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2858,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2841,
                              "src": "7763:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2859,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2843,
                              "src": "7769:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 2860,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2845,
                              "src": "7772:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2861,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2847,
                              "src": "7775:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2857,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2653,
                              2727,
                              2838
                            ],
                            "referencedDeclaration": 2838,
                            "src": "7752:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2534_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"
                            }
                          },
                          "id": 2862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7752:25:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2534_$",
                            "typeString": "tuple(address,enum ECDSAUpgradeable.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7710:67:16"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2865,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2856,
                              "src": "7799:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$2534",
                                "typeString": "enum ECDSAUpgradeable.RecoverError"
                              }
                            ],
                            "id": 2864,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2588,
                            "src": "7787:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2534_$returns$__$",
                              "typeString": "function (enum ECDSAUpgradeable.RecoverError) pure"
                            }
                          },
                          "id": 2866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7787:18:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2867,
                        "nodeType": "ExpressionStatement",
                        "src": "7787:18:16"
                      },
                      {
                        "expression": {
                          "id": 2868,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2853,
                          "src": "7822:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2851,
                        "id": 2869,
                        "nodeType": "Return",
                        "src": "7815:16:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2839,
                    "nodeType": "StructuredDocumentation",
                    "src": "7441:122:16",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."
                  },
                  "id": 2871,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "7577:7:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2841,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "7602:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2871,
                        "src": "7594:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2840,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7594:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2843,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "7622:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2871,
                        "src": "7616:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2842,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "7616:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2845,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "7641:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2871,
                        "src": "7633:9:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2844,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7633:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2847,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "7660:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2871,
                        "src": "7652:9:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2846,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7652:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7584:83:16"
                  },
                  "returnParameters": {
                    "id": 2851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2850,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2871,
                        "src": "7691:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2849,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7691:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7690:9:16"
                  },
                  "scope": 2931,
                  "src": "7568:270:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2887,
                    "nodeType": "Block",
                    "src": "8206:187:16",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                                  "id": 2882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8344:34:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                  },
                                  "value": "\u0019Ethereum Signed Message:\n32"
                                },
                                {
                                  "id": 2883,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2874,
                                  "src": "8380:4:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 2880,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8327:3:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8327:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 2884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8327:58:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2879,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8317:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8317:69:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2878,
                        "id": 2886,
                        "nodeType": "Return",
                        "src": "8310:76:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2872,
                    "nodeType": "StructuredDocumentation",
                    "src": "7844:279:16",
                    "text": " @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."
                  },
                  "id": 2888,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "8137:22:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2875,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2874,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "8168:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2888,
                        "src": "8160:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2873,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8160:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8159:14:16"
                  },
                  "returnParameters": {
                    "id": 2878,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2877,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2888,
                        "src": "8197:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2876,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8197:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8196:9:16"
                  },
                  "scope": 2931,
                  "src": "8128:265:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2909,
                    "nodeType": "Block",
                    "src": "8758:127:16",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a",
                                  "id": 2899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8802:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""
                                  },
                                  "value": "\u0019Ethereum Signed Message:\n"
                                },
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 2902,
                                        "name": "s",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2891,
                                        "src": "8864:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 2903,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "8864:8:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2900,
                                      "name": "StringsUpgradeable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2524,
                                      "src": "8836:18:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_StringsUpgradeable_$2524_$",
                                        "typeString": "type(library StringsUpgradeable)"
                                      }
                                    },
                                    "id": 2901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2386,
                                    "src": "8836:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 2904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8836:37:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 2905,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2891,
                                  "src": "8875:1:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 2897,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8785:3:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8785:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 2906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8785:92:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2896,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8775:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8775:103:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2895,
                        "id": 2908,
                        "nodeType": "Return",
                        "src": "8768:110:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2889,
                    "nodeType": "StructuredDocumentation",
                    "src": "8399:274:16",
                    "text": " @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."
                  },
                  "id": 2910,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "8687:22:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2891,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "8723:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2910,
                        "src": "8710:14:16",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2890,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8710:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8709:16:16"
                  },
                  "returnParameters": {
                    "id": 2895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2894,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2910,
                        "src": "8749:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2893,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8749:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8748:9:16"
                  },
                  "scope": 2931,
                  "src": "8678:207:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2929,
                    "nodeType": "Block",
                    "src": "9326:92:16",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 2923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9370:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 2924,
                                  "name": "domainSeparator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2913,
                                  "src": "9382:15:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 2925,
                                  "name": "structHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2915,
                                  "src": "9399:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 2921,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9353:3:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "9353:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 2926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9353:57:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2920,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9343:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9343:68:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2919,
                        "id": 2928,
                        "nodeType": "Return",
                        "src": "9336:75:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2911,
                    "nodeType": "StructuredDocumentation",
                    "src": "8891:328:16",
                    "text": " @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."
                  },
                  "id": 2930,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toTypedDataHash",
                  "nameLocation": "9233:15:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2913,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "9257:15:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2930,
                        "src": "9249:23:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2912,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9249:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2915,
                        "mutability": "mutable",
                        "name": "structHash",
                        "nameLocation": "9282:10:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2930,
                        "src": "9274:18:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2914,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9274:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9248:45:16"
                  },
                  "returnParameters": {
                    "id": 2919,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2918,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2930,
                        "src": "9317:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2917,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9317:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9316:9:16"
                  },
                  "scope": 2931,
                  "src": "9224:194:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2932,
              "src": "380:9040:16",
              "usedErrors": []
            }
          ],
          "src": "112:9309:16"
        },
        "id": 16
      },
      "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              2122
            ],
            "ERC165Upgradeable": [
              2975
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "Initializable": [
              690
            ]
          },
          "id": 2976,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2933,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:23:17"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol",
              "file": "./IERC165Upgradeable.sol",
              "id": 2934,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2976,
              "sourceUnit": 2988,
              "src": "124:34:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "../../proxy/utils/Initializable.sol",
              "id": 2935,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2976,
              "sourceUnit": 691,
              "src": "159:45:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2937,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "822:13:17"
                  },
                  "id": 2938,
                  "nodeType": "InheritanceSpecifier",
                  "src": "822:13:17"
                },
                {
                  "baseName": {
                    "id": 2939,
                    "name": "IERC165Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2987,
                    "src": "837:18:17"
                  },
                  "id": 2940,
                  "nodeType": "InheritanceSpecifier",
                  "src": "837:18:17"
                }
              ],
              "canonicalName": "ERC165Upgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2936,
                "nodeType": "StructuredDocumentation",
                "src": "206:576:17",
                "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."
              },
              "fullyImplemented": true,
              "id": 2975,
              "linearizedBaseContracts": [
                2975,
                2987,
                690
              ],
              "name": "ERC165Upgradeable",
              "nameLocation": "801:17:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2945,
                    "nodeType": "Block",
                    "src": "913:7:17",
                    "statements": []
                  },
                  "id": 2946,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2943,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2942,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "896:16:17"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "896:16:17"
                    }
                  ],
                  "name": "__ERC165_init",
                  "nameLocation": "871:13:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2941,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "884:2:17"
                  },
                  "returnParameters": {
                    "id": 2944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "913:0:17"
                  },
                  "scope": 2975,
                  "src": "862:58:17",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2951,
                    "nodeType": "Block",
                    "src": "987:7:17",
                    "statements": []
                  },
                  "id": 2952,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2949,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2948,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "970:16:17"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "970:16:17"
                    }
                  ],
                  "name": "__ERC165_init_unchained",
                  "nameLocation": "935:23:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2947,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "958:2:17"
                  },
                  "returnParameters": {
                    "id": 2950,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "987:0:17"
                  },
                  "scope": 2975,
                  "src": "926:68:17",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2986
                  ],
                  "body": {
                    "id": 2968,
                    "nodeType": "Block",
                    "src": "1151:75:17",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 2966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2961,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2955,
                            "src": "1168:11:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2963,
                                  "name": "IERC165Upgradeable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2987,
                                  "src": "1188:18:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2987_$",
                                    "typeString": "type(contract IERC165Upgradeable)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2987_$",
                                    "typeString": "type(contract IERC165Upgradeable)"
                                  }
                                ],
                                "id": 2962,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "1183:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 2964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1183:24:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165Upgradeable_$2987",
                                "typeString": "type(contract IERC165Upgradeable)"
                              }
                            },
                            "id": 2965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "1183:36:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1168:51:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2960,
                        "id": 2967,
                        "nodeType": "Return",
                        "src": "1161:58:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2953,
                    "nodeType": "StructuredDocumentation",
                    "src": "999:56:17",
                    "text": " @dev See {IERC165-supportsInterface}."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 2969,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "1069:17:17",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2957,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1127:8:17"
                  },
                  "parameters": {
                    "id": 2956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2955,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "1094:11:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2969,
                        "src": "1087:18:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2954,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1087:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1086:20:17"
                  },
                  "returnParameters": {
                    "id": 2960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2959,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2969,
                        "src": "1145:4:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2958,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1145:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1144:6:17"
                  },
                  "scope": 2975,
                  "src": "1060:166:17",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2970,
                    "nodeType": "StructuredDocumentation",
                    "src": "1232:254:17",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 2974,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "1511:5:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 2975,
                  "src": "1491:25:17",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$50_storage",
                    "typeString": "uint256[50]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2971,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1491:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2973,
                    "length": {
                      "hexValue": "3530",
                      "id": 2972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1499:2:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1491:11:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                      "typeString": "uint256[50]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 2976,
              "src": "783:736:17",
              "usedErrors": []
            }
          ],
          "src": "99:1421:17"
        },
        "id": 17
      },
      "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol",
          "exportedSymbols": {
            "IERC165Upgradeable": [
              2987
            ]
          },
          "id": 2988,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2977,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:23:18"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC165Upgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2978,
                "nodeType": "StructuredDocumentation",
                "src": "125:279:18",
                "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."
              },
              "fullyImplemented": false,
              "id": 2987,
              "linearizedBaseContracts": [
                2987
              ],
              "name": "IERC165Upgradeable",
              "nameLocation": "415:18:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2979,
                    "nodeType": "StructuredDocumentation",
                    "src": "440:340:18",
                    "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 2986,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "794:17:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2981,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "819:11:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 2986,
                        "src": "812:18:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2980,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "812:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "811:20:18"
                  },
                  "returnParameters": {
                    "id": 2985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2984,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2986,
                        "src": "855:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2983,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "855:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "854:6:18"
                  },
                  "scope": 2987,
                  "src": "785:76:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2988,
              "src": "405:458:18",
              "usedErrors": []
            }
          ],
          "src": "100:764:18"
        },
        "id": 18
      },
      "@openzeppelin/contracts/access/Ownable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
          "exportedSymbols": {
            "Context": [
              3985
            ],
            "Ownable": [
              3100
            ]
          },
          "id": 3101,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2989,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "102:23:19"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../utils/Context.sol",
              "id": 2990,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3101,
              "sourceUnit": 3986,
              "src": "127:30:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2992,
                    "name": "Context",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3985,
                    "src": "683:7:19"
                  },
                  "id": 2993,
                  "nodeType": "InheritanceSpecifier",
                  "src": "683:7:19"
                }
              ],
              "canonicalName": "Ownable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2991,
                "nodeType": "StructuredDocumentation",
                "src": "159:494:19",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 3100,
              "linearizedBaseContracts": [
                3100,
                3985
              ],
              "name": "Ownable",
              "nameLocation": "672:7:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 2995,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "713:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3100,
                  "src": "697:22:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2994,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 3001,
                  "name": "OwnershipTransferred",
                  "nameLocation": "732:20:19",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2997,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "769:13:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3001,
                        "src": "753:29:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2996,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "753:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2999,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "800:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3001,
                        "src": "784:24:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2998,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "784:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "752:57:19"
                  },
                  "src": "726:84:19"
                },
                {
                  "body": {
                    "id": 3010,
                    "nodeType": "Block",
                    "src": "926:49:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3006,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3975,
                                "src": "955:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "955:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3005,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3099,
                            "src": "936:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "936:32:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3009,
                        "nodeType": "ExpressionStatement",
                        "src": "936:32:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3002,
                    "nodeType": "StructuredDocumentation",
                    "src": "816:91:19",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 3011,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3003,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "923:2:19"
                  },
                  "returnParameters": {
                    "id": 3004,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "926:0:19"
                  },
                  "scope": 3100,
                  "src": "912:63:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3018,
                    "nodeType": "Block",
                    "src": "1084:41:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3014,
                            "name": "_checkOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3042,
                            "src": "1094:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 3015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1094:13:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3016,
                        "nodeType": "ExpressionStatement",
                        "src": "1094:13:19"
                      },
                      {
                        "id": 3017,
                        "nodeType": "PlaceholderStatement",
                        "src": "1117:1:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3012,
                    "nodeType": "StructuredDocumentation",
                    "src": "981:77:19",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 3019,
                  "name": "onlyOwner",
                  "nameLocation": "1072:9:19",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 3013,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1081:2:19"
                  },
                  "src": "1063:62:19",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3027,
                    "nodeType": "Block",
                    "src": "1256:30:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 3025,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2995,
                          "src": "1273:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3024,
                        "id": 3026,
                        "nodeType": "Return",
                        "src": "1266:13:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3020,
                    "nodeType": "StructuredDocumentation",
                    "src": "1131:65:19",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 3028,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "1210:5:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3021,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1215:2:19"
                  },
                  "returnParameters": {
                    "id": 3024,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3023,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3028,
                        "src": "1247:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3022,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1247:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1246:9:19"
                  },
                  "scope": 3100,
                  "src": "1201:85:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3041,
                    "nodeType": "Block",
                    "src": "1404:85:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3033,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3028,
                                  "src": "1422:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 3034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1422:7:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3035,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3975,
                                  "src": "1433:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 3036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1433:12:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1422:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 3038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1447:34:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 3032,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1414:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1414:68:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3040,
                        "nodeType": "ExpressionStatement",
                        "src": "1414:68:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3029,
                    "nodeType": "StructuredDocumentation",
                    "src": "1292:62:19",
                    "text": " @dev Throws if the sender is not the owner."
                  },
                  "id": 3042,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkOwner",
                  "nameLocation": "1368:11:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3030,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1379:2:19"
                  },
                  "returnParameters": {
                    "id": 3031,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1404:0:19"
                  },
                  "scope": 3100,
                  "src": "1359:130:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3055,
                    "nodeType": "Block",
                    "src": "1885:47:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1922:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 3050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1914:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3049,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1914:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1914:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3048,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3099,
                            "src": "1895:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1895:30:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3054,
                        "nodeType": "ExpressionStatement",
                        "src": "1895:30:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3043,
                    "nodeType": "StructuredDocumentation",
                    "src": "1495:331:19",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 3056,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 3046,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3045,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3019,
                        "src": "1875:9:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1875:9:19"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nameLocation": "1840:17:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3044,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1857:2:19"
                  },
                  "returnParameters": {
                    "id": 3047,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1885:0:19"
                  },
                  "scope": 3100,
                  "src": "1831:101:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3078,
                    "nodeType": "Block",
                    "src": "2151:128:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3065,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3059,
                                "src": "2169:8:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2189:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3067,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2181:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3066,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2181:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2181:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2169:22:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 3071,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2193:40:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 3064,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2161:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2161:73:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3073,
                        "nodeType": "ExpressionStatement",
                        "src": "2161:73:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3075,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3059,
                              "src": "2263:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3074,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3099,
                            "src": "2244:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2244:28:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3077,
                        "nodeType": "ExpressionStatement",
                        "src": "2244:28:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3057,
                    "nodeType": "StructuredDocumentation",
                    "src": "1938:138:19",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 3079,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 3062,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3061,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3019,
                        "src": "2141:9:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2141:9:19"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "2090:17:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3059,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2116:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3079,
                        "src": "2108:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3058,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2108:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2107:18:19"
                  },
                  "returnParameters": {
                    "id": 3063,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2151:0:19"
                  },
                  "scope": 3100,
                  "src": "2081:198:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3098,
                    "nodeType": "Block",
                    "src": "2496:124:19",
                    "statements": [
                      {
                        "assignments": [
                          3086
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3086,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "2514:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 3098,
                            "src": "2506:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3085,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2506:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3088,
                        "initialValue": {
                          "id": 3087,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2995,
                          "src": "2525:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2506:25:19"
                      },
                      {
                        "expression": {
                          "id": 3091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3089,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2995,
                            "src": "2541:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3090,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3082,
                            "src": "2550:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2541:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3092,
                        "nodeType": "ExpressionStatement",
                        "src": "2541:17:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3094,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3086,
                              "src": "2594:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3095,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3082,
                              "src": "2604:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3093,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3001,
                            "src": "2573:20:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 3096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2573:40:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3097,
                        "nodeType": "EmitStatement",
                        "src": "2568:45:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3080,
                    "nodeType": "StructuredDocumentation",
                    "src": "2285:143:19",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                  },
                  "id": 3099,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferOwnership",
                  "nameLocation": "2442:18:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3083,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3082,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2469:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 3099,
                        "src": "2461:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3081,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2461:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2460:18:19"
                  },
                  "returnParameters": {
                    "id": 3084,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2496:0:19"
                  },
                  "scope": 3100,
                  "src": "2433:187:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3101,
              "src": "654:1968:19",
              "usedErrors": []
            }
          ],
          "src": "102:2521:19"
        },
        "id": 19
      },
      "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol",
          "exportedSymbols": {
            "IERC1822Proxiable": [
              3110
            ]
          },
          "id": 3111,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3102,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:23:20"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC1822Proxiable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3103,
                "nodeType": "StructuredDocumentation",
                "src": "138:203:20",
                "text": " @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."
              },
              "fullyImplemented": false,
              "id": 3110,
              "linearizedBaseContracts": [
                3110
              ],
              "name": "IERC1822Proxiable",
              "nameLocation": "352:17:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3104,
                    "nodeType": "StructuredDocumentation",
                    "src": "376:438:20",
                    "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."
                  },
                  "functionSelector": "52d1902d",
                  "id": 3109,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proxiableUUID",
                  "nameLocation": "828:13:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3105,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "841:2:20"
                  },
                  "returnParameters": {
                    "id": 3108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3107,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3109,
                        "src": "867:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3106,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "867:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "866:9:20"
                  },
                  "scope": 3110,
                  "src": "819:57:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3111,
              "src": "342:536:20",
              "usedErrors": []
            }
          ],
          "src": "113:766:20"
        },
        "id": 20
      },
      "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "ERC1967Proxy": [
              3147
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "IBeacon": [
              3593
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "Proxy": [
              3517
            ],
            "StorageSlot": [
              4045
            ]
          },
          "id": 3148,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3112,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "114:23:21"
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol",
              "file": "../Proxy.sol",
              "id": 3113,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3148,
              "sourceUnit": 3518,
              "src": "139:22:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol",
              "file": "./ERC1967Upgrade.sol",
              "id": 3114,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3148,
              "sourceUnit": 3466,
              "src": "162:30:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3116,
                    "name": "Proxy",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3517,
                    "src": "592:5:21"
                  },
                  "id": 3117,
                  "nodeType": "InheritanceSpecifier",
                  "src": "592:5:21"
                },
                {
                  "baseName": {
                    "id": 3118,
                    "name": "ERC1967Upgrade",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3465,
                    "src": "599:14:21"
                  },
                  "id": 3119,
                  "nodeType": "InheritanceSpecifier",
                  "src": "599:14:21"
                }
              ],
              "canonicalName": "ERC1967Proxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3115,
                "nodeType": "StructuredDocumentation",
                "src": "194:372:21",
                "text": " @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."
              },
              "fullyImplemented": true,
              "id": 3147,
              "linearizedBaseContracts": [
                3147,
                3465,
                3517
              ],
              "name": "ERC1967Proxy",
              "nameLocation": "576:12:21",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3133,
                    "nodeType": "Block",
                    "src": "1014:56:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3128,
                              "name": "_logic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3122,
                              "src": "1042:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3129,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3124,
                              "src": "1050:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 3130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1057:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3127,
                            "name": "_upgradeToAndCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3248,
                            "src": "1024:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,bytes memory,bool)"
                            }
                          },
                          "id": 3131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1024:39:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3132,
                        "nodeType": "ExpressionStatement",
                        "src": "1024:39:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3120,
                    "nodeType": "StructuredDocumentation",
                    "src": "620:333:21",
                    "text": " @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."
                  },
                  "id": 3134,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3122,
                        "mutability": "mutable",
                        "name": "_logic",
                        "nameLocation": "978:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "970:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "970:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3124,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "999:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "986:18:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3123,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "986:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "969:36:21"
                  },
                  "returnParameters": {
                    "id": 3126,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1014:0:21"
                  },
                  "scope": 3147,
                  "src": "958:112:21",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3482
                  ],
                  "body": {
                    "id": 3145,
                    "nodeType": "Block",
                    "src": "1229:59:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3141,
                              "name": "ERC1967Upgrade",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3465,
                              "src": "1246:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC1967Upgrade_$3465_$",
                                "typeString": "type(contract ERC1967Upgrade)"
                              }
                            },
                            "id": 3142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_getImplementation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3179,
                            "src": "1246:33:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 3143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1246:35:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3140,
                        "id": 3144,
                        "nodeType": "Return",
                        "src": "1239:42:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3135,
                    "nodeType": "StructuredDocumentation",
                    "src": "1076:67:21",
                    "text": " @dev Returns the current implementation address."
                  },
                  "id": 3146,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_implementation",
                  "nameLocation": "1157:15:21",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3137,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1197:8:21"
                  },
                  "parameters": {
                    "id": 3136,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1172:2:21"
                  },
                  "returnParameters": {
                    "id": 3140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3139,
                        "mutability": "mutable",
                        "name": "impl",
                        "nameLocation": "1223:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 3146,
                        "src": "1215:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3138,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1215:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1214:14:21"
                  },
                  "scope": 3147,
                  "src": "1148:140:21",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3148,
              "src": "567:723:21",
              "usedErrors": []
            }
          ],
          "src": "114:1177:21"
        },
        "id": 21
      },
      "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "IBeacon": [
              3593
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "StorageSlot": [
              4045
            ]
          },
          "id": 3466,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3149,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "116:23:22"
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
              "file": "../beacon/IBeacon.sol",
              "id": 3150,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3466,
              "sourceUnit": 3594,
              "src": "141:31:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol",
              "file": "../../interfaces/draft-IERC1822.sol",
              "id": 3151,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3466,
              "sourceUnit": 3111,
              "src": "173:45:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 3152,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3466,
              "sourceUnit": 3964,
              "src": "219:33:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol",
              "file": "../../utils/StorageSlot.sol",
              "id": 3153,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3466,
              "sourceUnit": 4046,
              "src": "253:37:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "ERC1967Upgrade",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3154,
                "nodeType": "StructuredDocumentation",
                "src": "292:236:22",
                "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._\n @custom:oz-upgrades-unsafe-allow delegatecall"
              },
              "fullyImplemented": true,
              "id": 3465,
              "linearizedBaseContracts": [
                3465
              ],
              "name": "ERC1967Upgrade",
              "nameLocation": "547:14:22",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3157,
                  "mutability": "constant",
                  "name": "_ROLLBACK_SLOT",
                  "nameLocation": "672:14:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 3465,
                  "src": "647:108:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3155,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "647:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433",
                    "id": 3156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "689:66:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1",
                      "typeString": "int_const 3304...(69 digits omitted)...9347"
                    },
                    "value": "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3158,
                    "nodeType": "StructuredDocumentation",
                    "src": "762:214:22",
                    "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 3161,
                  "mutability": "constant",
                  "name": "_IMPLEMENTATION_SLOT",
                  "nameLocation": "1007:20:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 3465,
                  "src": "981:115:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3159,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "981:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263",
                    "id": 3160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1030:66:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1",
                      "typeString": "int_const 2444...(69 digits omitted)...5612"
                    },
                    "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3162,
                    "nodeType": "StructuredDocumentation",
                    "src": "1103:68:22",
                    "text": " @dev Emitted when the implementation is upgraded."
                  },
                  "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
                  "id": 3166,
                  "name": "Upgraded",
                  "nameLocation": "1182:8:22",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3164,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nameLocation": "1207:14:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3166,
                        "src": "1191:30:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3163,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1190:32:22"
                  },
                  "src": "1176:47:22"
                },
                {
                  "body": {
                    "id": 3178,
                    "nodeType": "Block",
                    "src": "1363:78:22",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 3174,
                                "name": "_IMPLEMENTATION_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3161,
                                "src": "1407:20:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 3172,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4045,
                                "src": "1380:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$4045_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 3173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4011,
                              "src": "1380:26:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3991_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                              }
                            },
                            "id": 3175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1380:48:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                              "typeString": "struct StorageSlot.AddressSlot storage pointer"
                            }
                          },
                          "id": 3176,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3990,
                          "src": "1380:54:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3171,
                        "id": 3177,
                        "nodeType": "Return",
                        "src": "1373:61:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3167,
                    "nodeType": "StructuredDocumentation",
                    "src": "1229:67:22",
                    "text": " @dev Returns the current implementation address."
                  },
                  "id": 3179,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getImplementation",
                  "nameLocation": "1310:18:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3168,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1328:2:22"
                  },
                  "returnParameters": {
                    "id": 3171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3170,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3179,
                        "src": "1354:7:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1354:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1353:9:22"
                  },
                  "scope": 3465,
                  "src": "1301:140:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3202,
                    "nodeType": "Block",
                    "src": "1595:196:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3188,
                                  "name": "newImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3182,
                                  "src": "1632:17:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 3186,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3963,
                                  "src": "1613:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3963_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 3187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3686,
                                "src": "1613:18:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1613:37:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 3190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1652:47:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65",
                                "typeString": "literal_string \"ERC1967: new implementation is not a contract\""
                              },
                              "value": "ERC1967: new implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65",
                                "typeString": "literal_string \"ERC1967: new implementation is not a contract\""
                              }
                            ],
                            "id": 3185,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1605:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1605:95:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3192,
                        "nodeType": "ExpressionStatement",
                        "src": "1605:95:22"
                      },
                      {
                        "expression": {
                          "id": 3200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3196,
                                  "name": "_IMPLEMENTATION_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3161,
                                  "src": "1737:20:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 3193,
                                  "name": "StorageSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4045,
                                  "src": "1710:11:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlot_$4045_$",
                                    "typeString": "type(library StorageSlot)"
                                  }
                                },
                                "id": 3195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4011,
                                "src": "1710:26:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3991_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                                }
                              },
                              "id": 3197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1710:48:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                                "typeString": "struct StorageSlot.AddressSlot storage pointer"
                              }
                            },
                            "id": 3198,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3990,
                            "src": "1710:54:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3199,
                            "name": "newImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3182,
                            "src": "1767:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1710:74:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3201,
                        "nodeType": "ExpressionStatement",
                        "src": "1710:74:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3180,
                    "nodeType": "StructuredDocumentation",
                    "src": "1447:80:22",
                    "text": " @dev Stores a new address in the EIP1967 implementation slot."
                  },
                  "id": 3203,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setImplementation",
                  "nameLocation": "1541:18:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3183,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3182,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1568:17:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3203,
                        "src": "1560:25:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3181,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1560:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1559:27:22"
                  },
                  "returnParameters": {
                    "id": 3184,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1595:0:22"
                  },
                  "scope": 3465,
                  "src": "1532:259:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3217,
                    "nodeType": "Block",
                    "src": "1953:96:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3210,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3206,
                              "src": "1982:17:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3209,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3203,
                            "src": "1963:18:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1963:37:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3212,
                        "nodeType": "ExpressionStatement",
                        "src": "1963:37:22"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3214,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3206,
                              "src": "2024:17:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3213,
                            "name": "Upgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3166,
                            "src": "2015:8:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2015:27:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3216,
                        "nodeType": "EmitStatement",
                        "src": "2010:32:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3204,
                    "nodeType": "StructuredDocumentation",
                    "src": "1797:95:22",
                    "text": " @dev Perform implementation upgrade\n Emits an {Upgraded} event."
                  },
                  "id": 3218,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeTo",
                  "nameLocation": "1906:10:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3207,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3206,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1925:17:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3218,
                        "src": "1917:25:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3205,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1917:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1916:27:22"
                  },
                  "returnParameters": {
                    "id": 3208,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1953:0:22"
                  },
                  "scope": 3465,
                  "src": "1897:152:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3247,
                    "nodeType": "Block",
                    "src": "2311:167:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3229,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3221,
                              "src": "2332:17:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3228,
                            "name": "_upgradeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3218,
                            "src": "2321:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2321:29:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3231,
                        "nodeType": "ExpressionStatement",
                        "src": "2321:29:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 3232,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3223,
                                "src": "2364:4:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2364:11:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 3234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2378:1:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2364:15:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "id": 3236,
                            "name": "forceCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3225,
                            "src": "2383:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2364:28:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3246,
                        "nodeType": "IfStatement",
                        "src": "2360:112:22",
                        "trueBody": {
                          "id": 3245,
                          "nodeType": "Block",
                          "src": "2394:78:22",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3241,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3221,
                                    "src": "2437:17:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3242,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3223,
                                    "src": "2456:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3238,
                                    "name": "Address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3963,
                                    "src": "2408:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Address_$3963_$",
                                      "typeString": "type(library Address)"
                                    }
                                  },
                                  "id": 3240,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "functionDelegateCall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3896,
                                  "src": "2408:28:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (address,bytes memory) returns (bytes memory)"
                                  }
                                },
                                "id": 3243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2408:53:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3244,
                              "nodeType": "ExpressionStatement",
                              "src": "2408:53:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3219,
                    "nodeType": "StructuredDocumentation",
                    "src": "2055:123:22",
                    "text": " @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."
                  },
                  "id": 3248,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeToAndCall",
                  "nameLocation": "2192:17:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3221,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "2227:17:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3248,
                        "src": "2219:25:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2219:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3223,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2267:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3248,
                        "src": "2254:17:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3222,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2254:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3225,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "2286:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3248,
                        "src": "2281:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3224,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2281:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2209:92:22"
                  },
                  "returnParameters": {
                    "id": 3227,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2311:0:22"
                  },
                  "scope": 3465,
                  "src": "2183:295:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3300,
                    "nodeType": "Block",
                    "src": "2782:820:22",
                    "statements": [
                      {
                        "condition": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 3260,
                                "name": "_ROLLBACK_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3157,
                                "src": "3123:14:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 3258,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4045,
                                "src": "3096:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$4045_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 3259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBooleanSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4022,
                              "src": "3096:26:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$3994_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"
                              }
                            },
                            "id": 3261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3096:42:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BooleanSlot_$3994_storage_ptr",
                              "typeString": "struct StorageSlot.BooleanSlot storage pointer"
                            }
                          },
                          "id": 3262,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3993,
                          "src": "3096:48:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3298,
                          "nodeType": "Block",
                          "src": "3214:382:22",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 3283,
                                    "nodeType": "Block",
                                    "src": "3308:115:22",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              "id": 3279,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3277,
                                                "name": "slot",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3274,
                                                "src": "3334:4:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "id": 3278,
                                                "name": "_IMPLEMENTATION_SLOT",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3161,
                                                "src": "3342:20:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "src": "3334:28:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            {
                                              "hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944",
                                              "id": 3280,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3364:43:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c",
                                                "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""
                                              },
                                              "value": "ERC1967Upgrade: unsupported proxiableUUID"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c",
                                                "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""
                                              }
                                            ],
                                            "id": 3276,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -18,
                                              -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "3326:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (bool,string memory) pure"
                                            }
                                          },
                                          "id": 3281,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3326:82:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 3282,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3326:82:22"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 3284,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 3275,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 3274,
                                        "mutability": "mutable",
                                        "name": "slot",
                                        "nameLocation": "3302:4:22",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 3284,
                                        "src": "3294:12:22",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 3273,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3294:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "3293:14:22"
                                  },
                                  "src": "3285:138:22"
                                },
                                {
                                  "block": {
                                    "id": 3289,
                                    "nodeType": "Block",
                                    "src": "3430:89:22",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053",
                                              "id": 3286,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3455:48:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24",
                                                "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""
                                              },
                                              "value": "ERC1967Upgrade: new implementation is not UUPS"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24",
                                                "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""
                                              }
                                            ],
                                            "id": 3285,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "3448:6:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 3287,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3448:56:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 3288,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3448:56:22"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 3290,
                                  "nodeType": "TryCatchClause",
                                  "src": "3424:95:22"
                                }
                              ],
                              "externalCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3269,
                                        "name": "newImplementation",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3251,
                                        "src": "3250:17:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3268,
                                      "name": "IERC1822Proxiable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3110,
                                      "src": "3232:17:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1822Proxiable_$3110_$",
                                        "typeString": "type(contract IERC1822Proxiable)"
                                      }
                                    },
                                    "id": 3270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3232:36:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1822Proxiable_$3110",
                                      "typeString": "contract IERC1822Proxiable"
                                    }
                                  },
                                  "id": 3271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "proxiableUUID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3109,
                                  "src": "3232:50:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 3272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3232:52:22",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3291,
                              "nodeType": "TryStatement",
                              "src": "3228:291:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3293,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3251,
                                    "src": "3550:17:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3294,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3253,
                                    "src": "3569:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 3295,
                                    "name": "forceCall",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3255,
                                    "src": "3575:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 3292,
                                  "name": "_upgradeToAndCall",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3248,
                                  "src": "3532:17:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bytes memory,bool)"
                                  }
                                },
                                "id": 3296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3532:53:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3297,
                              "nodeType": "ExpressionStatement",
                              "src": "3532:53:22"
                            }
                          ]
                        },
                        "id": 3299,
                        "nodeType": "IfStatement",
                        "src": "3092:504:22",
                        "trueBody": {
                          "id": 3267,
                          "nodeType": "Block",
                          "src": "3146:62:22",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3264,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3251,
                                    "src": "3179:17:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3263,
                                  "name": "_setImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3203,
                                  "src": "3160:18:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 3265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3160:37:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3266,
                              "nodeType": "ExpressionStatement",
                              "src": "3160:37:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3249,
                    "nodeType": "StructuredDocumentation",
                    "src": "2484:161:22",
                    "text": " @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."
                  },
                  "id": 3301,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeToAndCallUUPS",
                  "nameLocation": "2659:21:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3251,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "2698:17:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3301,
                        "src": "2690:25:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3250,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2690:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3253,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2738:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3301,
                        "src": "2725:17:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3252,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2725:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3255,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "2757:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3301,
                        "src": "2752:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3254,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2752:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2680:92:22"
                  },
                  "returnParameters": {
                    "id": 3257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2782:0:22"
                  },
                  "scope": 3465,
                  "src": "2650:952:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3302,
                    "nodeType": "StructuredDocumentation",
                    "src": "3608:189:22",
                    "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 3305,
                  "mutability": "constant",
                  "name": "_ADMIN_SLOT",
                  "nameLocation": "3828:11:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 3465,
                  "src": "3802:106:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3802:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033",
                    "id": 3304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3842:66:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1",
                      "typeString": "int_const 8195...(69 digits omitted)...7091"
                    },
                    "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3306,
                    "nodeType": "StructuredDocumentation",
                    "src": "3915:67:22",
                    "text": " @dev Emitted when the admin account has changed."
                  },
                  "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f",
                  "id": 3312,
                  "name": "AdminChanged",
                  "nameLocation": "3993:12:22",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3308,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "previousAdmin",
                        "nameLocation": "4014:13:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3312,
                        "src": "4006:21:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4006:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3310,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4037:8:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3312,
                        "src": "4029:16:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4029:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4005:41:22"
                  },
                  "src": "3987:60:22"
                },
                {
                  "body": {
                    "id": 3324,
                    "nodeType": "Block",
                    "src": "4161:69:22",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 3320,
                                "name": "_ADMIN_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3305,
                                "src": "4205:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 3318,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4045,
                                "src": "4178:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$4045_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 3319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4011,
                              "src": "4178:26:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3991_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                              }
                            },
                            "id": 3321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4178:39:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                              "typeString": "struct StorageSlot.AddressSlot storage pointer"
                            }
                          },
                          "id": 3322,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3990,
                          "src": "4178:45:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3317,
                        "id": 3323,
                        "nodeType": "Return",
                        "src": "4171:52:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3313,
                    "nodeType": "StructuredDocumentation",
                    "src": "4053:50:22",
                    "text": " @dev Returns the current admin."
                  },
                  "id": 3325,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAdmin",
                  "nameLocation": "4117:9:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3314,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4126:2:22"
                  },
                  "returnParameters": {
                    "id": 3317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3316,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3325,
                        "src": "4152:7:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3315,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4152:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4151:9:22"
                  },
                  "scope": 3465,
                  "src": "4108:122:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3350,
                    "nodeType": "Block",
                    "src": "4357:156:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3332,
                                "name": "newAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3328,
                                "src": "4375:8:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3335,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4395:1:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4387:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3333,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4387:7:22",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4387:10:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4375:22:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373",
                              "id": 3338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4399:40:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5",
                                "typeString": "literal_string \"ERC1967: new admin is the zero address\""
                              },
                              "value": "ERC1967: new admin is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5",
                                "typeString": "literal_string \"ERC1967: new admin is the zero address\""
                              }
                            ],
                            "id": 3331,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4367:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4367:73:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3340,
                        "nodeType": "ExpressionStatement",
                        "src": "4367:73:22"
                      },
                      {
                        "expression": {
                          "id": 3348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3344,
                                  "name": "_ADMIN_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3305,
                                  "src": "4477:11:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 3341,
                                  "name": "StorageSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4045,
                                  "src": "4450:11:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlot_$4045_$",
                                    "typeString": "type(library StorageSlot)"
                                  }
                                },
                                "id": 3343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4011,
                                "src": "4450:26:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3991_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                                }
                              },
                              "id": 3345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4450:39:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                                "typeString": "struct StorageSlot.AddressSlot storage pointer"
                              }
                            },
                            "id": 3346,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3990,
                            "src": "4450:45:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3347,
                            "name": "newAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3328,
                            "src": "4498:8:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4450:56:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3349,
                        "nodeType": "ExpressionStatement",
                        "src": "4450:56:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3326,
                    "nodeType": "StructuredDocumentation",
                    "src": "4236:71:22",
                    "text": " @dev Stores a new address in the EIP1967 admin slot."
                  },
                  "id": 3351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setAdmin",
                  "nameLocation": "4321:9:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3328,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4339:8:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3351,
                        "src": "4331:16:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3327,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4331:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4330:18:22"
                  },
                  "returnParameters": {
                    "id": 3330,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4357:0:22"
                  },
                  "scope": 3465,
                  "src": "4312:201:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3367,
                    "nodeType": "Block",
                    "src": "4673:86:22",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3358,
                                "name": "_getAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3325,
                                "src": "4701:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4701:11:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3360,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3354,
                              "src": "4714:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3357,
                            "name": "AdminChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3312,
                            "src": "4688:12:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 3361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4688:35:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3362,
                        "nodeType": "EmitStatement",
                        "src": "4683:40:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3364,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3354,
                              "src": "4743:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3363,
                            "name": "_setAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3351,
                            "src": "4733:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4733:19:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3366,
                        "nodeType": "ExpressionStatement",
                        "src": "4733:19:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3352,
                    "nodeType": "StructuredDocumentation",
                    "src": "4519:100:22",
                    "text": " @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."
                  },
                  "id": 3368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_changeAdmin",
                  "nameLocation": "4633:12:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3354,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4654:8:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3368,
                        "src": "4646:16:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4646:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4645:18:22"
                  },
                  "returnParameters": {
                    "id": 3356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4673:0:22"
                  },
                  "scope": 3465,
                  "src": "4624:135:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3369,
                    "nodeType": "StructuredDocumentation",
                    "src": "4765:232:22",
                    "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."
                  },
                  "id": 3372,
                  "mutability": "constant",
                  "name": "_BEACON_SLOT",
                  "nameLocation": "5028:12:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 3465,
                  "src": "5002:107:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3370,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5002:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530",
                    "id": 3371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5043:66:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1",
                      "typeString": "int_const 7415...(69 digits omitted)...4704"
                    },
                    "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3373,
                    "nodeType": "StructuredDocumentation",
                    "src": "5116:60:22",
                    "text": " @dev Emitted when the beacon is upgraded."
                  },
                  "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e",
                  "id": 3377,
                  "name": "BeaconUpgraded",
                  "nameLocation": "5187:14:22",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3375,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "5218:6:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3377,
                        "src": "5202:22:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3374,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5202:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5201:24:22"
                  },
                  "src": "5181:45:22"
                },
                {
                  "body": {
                    "id": 3389,
                    "nodeType": "Block",
                    "src": "5342:70:22",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 3385,
                                "name": "_BEACON_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3372,
                                "src": "5386:12:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 3383,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4045,
                                "src": "5359:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$4045_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 3384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4011,
                              "src": "5359:26:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3991_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                              }
                            },
                            "id": 3386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5359:40:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                              "typeString": "struct StorageSlot.AddressSlot storage pointer"
                            }
                          },
                          "id": 3387,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3990,
                          "src": "5359:46:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3382,
                        "id": 3388,
                        "nodeType": "Return",
                        "src": "5352:53:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3378,
                    "nodeType": "StructuredDocumentation",
                    "src": "5232:51:22",
                    "text": " @dev Returns the current beacon."
                  },
                  "id": 3390,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBeacon",
                  "nameLocation": "5297:10:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3379,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5307:2:22"
                  },
                  "returnParameters": {
                    "id": 3382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3381,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3390,
                        "src": "5333:7:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3380,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5333:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5332:9:22"
                  },
                  "scope": 3465,
                  "src": "5288:124:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3425,
                    "nodeType": "Block",
                    "src": "5541:324:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3399,
                                  "name": "newBeacon",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3393,
                                  "src": "5578:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 3397,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3963,
                                  "src": "5559:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3963_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 3398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3686,
                                "src": "5559:18:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5559:29:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374",
                              "id": 3401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5590:39:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470",
                                "typeString": "literal_string \"ERC1967: new beacon is not a contract\""
                              },
                              "value": "ERC1967: new beacon is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470",
                                "typeString": "literal_string \"ERC1967: new beacon is not a contract\""
                              }
                            ],
                            "id": 3396,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5551:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5551:79:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3403,
                        "nodeType": "ExpressionStatement",
                        "src": "5551:79:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3408,
                                          "name": "newBeacon",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3393,
                                          "src": "5688:9:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 3407,
                                        "name": "IBeacon",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3593,
                                        "src": "5680:7:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IBeacon_$3593_$",
                                          "typeString": "type(contract IBeacon)"
                                        }
                                      },
                                      "id": 3409,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5680:18:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IBeacon_$3593",
                                        "typeString": "contract IBeacon"
                                      }
                                    },
                                    "id": 3410,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "implementation",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3592,
                                    "src": "5680:33:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 3411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5680:35:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 3405,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3963,
                                  "src": "5661:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3963_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 3406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3686,
                                "src": "5661:18:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5661:55:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 3413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5730:50:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8",
                                "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""
                              },
                              "value": "ERC1967: beacon implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8",
                                "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""
                              }
                            ],
                            "id": 3404,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5640:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5640:150:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3415,
                        "nodeType": "ExpressionStatement",
                        "src": "5640:150:22"
                      },
                      {
                        "expression": {
                          "id": 3423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3419,
                                  "name": "_BEACON_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3372,
                                  "src": "5827:12:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 3416,
                                  "name": "StorageSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4045,
                                  "src": "5800:11:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlot_$4045_$",
                                    "typeString": "type(library StorageSlot)"
                                  }
                                },
                                "id": 3418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4011,
                                "src": "5800:26:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3991_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                                }
                              },
                              "id": 3420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5800:40:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                                "typeString": "struct StorageSlot.AddressSlot storage pointer"
                              }
                            },
                            "id": 3421,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3990,
                            "src": "5800:46:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3422,
                            "name": "newBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3393,
                            "src": "5849:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5800:58:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3424,
                        "nodeType": "ExpressionStatement",
                        "src": "5800:58:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3391,
                    "nodeType": "StructuredDocumentation",
                    "src": "5418:71:22",
                    "text": " @dev Stores a new beacon in the EIP1967 beacon slot."
                  },
                  "id": 3426,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setBeacon",
                  "nameLocation": "5503:10:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3393,
                        "mutability": "mutable",
                        "name": "newBeacon",
                        "nameLocation": "5522:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3426,
                        "src": "5514:17:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3392,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5514:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5513:19:22"
                  },
                  "returnParameters": {
                    "id": 3395,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5541:0:22"
                  },
                  "scope": 3465,
                  "src": "5494:371:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3463,
                    "nodeType": "Block",
                    "src": "6294:217:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3437,
                              "name": "newBeacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3429,
                              "src": "6315:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3436,
                            "name": "_setBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3426,
                            "src": "6304:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6304:21:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3439,
                        "nodeType": "ExpressionStatement",
                        "src": "6304:21:22"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3441,
                              "name": "newBeacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3429,
                              "src": "6355:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3440,
                            "name": "BeaconUpgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3377,
                            "src": "6340:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6340:25:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3443,
                        "nodeType": "EmitStatement",
                        "src": "6335:30:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 3444,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3431,
                                "src": "6379:4:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "6379:11:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 3446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6393:1:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6379:15:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "id": 3448,
                            "name": "forceCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3433,
                            "src": "6398:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6379:28:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3462,
                        "nodeType": "IfStatement",
                        "src": "6375:130:22",
                        "trueBody": {
                          "id": 3461,
                          "nodeType": "Block",
                          "src": "6409:96:22",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3454,
                                            "name": "newBeacon",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3429,
                                            "src": "6460:9:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 3453,
                                          "name": "IBeacon",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3593,
                                          "src": "6452:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IBeacon_$3593_$",
                                            "typeString": "type(contract IBeacon)"
                                          }
                                        },
                                        "id": 3455,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6452:18:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IBeacon_$3593",
                                          "typeString": "contract IBeacon"
                                        }
                                      },
                                      "id": 3456,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "implementation",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3592,
                                      "src": "6452:33:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                        "typeString": "function () view external returns (address)"
                                      }
                                    },
                                    "id": 3457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6452:35:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3458,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3431,
                                    "src": "6489:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3450,
                                    "name": "Address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3963,
                                    "src": "6423:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Address_$3963_$",
                                      "typeString": "type(library Address)"
                                    }
                                  },
                                  "id": 3452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "functionDelegateCall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3896,
                                  "src": "6423:28:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (address,bytes memory) returns (bytes memory)"
                                  }
                                },
                                "id": 3459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6423:71:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3460,
                              "nodeType": "ExpressionStatement",
                              "src": "6423:71:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3427,
                    "nodeType": "StructuredDocumentation",
                    "src": "5871:292:22",
                    "text": " @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."
                  },
                  "id": 3464,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeBeaconToAndCall",
                  "nameLocation": "6177:23:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3429,
                        "mutability": "mutable",
                        "name": "newBeacon",
                        "nameLocation": "6218:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3464,
                        "src": "6210:17:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6210:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3431,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6250:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3464,
                        "src": "6237:17:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3430,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6237:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3433,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "6269:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3464,
                        "src": "6264:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3432,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6264:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6200:84:22"
                  },
                  "returnParameters": {
                    "id": 3435,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6294:0:22"
                  },
                  "scope": 3465,
                  "src": "6168:343:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3466,
              "src": "529:5984:22",
              "usedErrors": []
            }
          ],
          "src": "116:6398:22"
        },
        "id": 22
      },
      "@openzeppelin/contracts/proxy/Proxy.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol",
          "exportedSymbols": {
            "Proxy": [
              3517
            ]
          },
          "id": 3518,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3467,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:23:23"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Proxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3468,
                "nodeType": "StructuredDocumentation",
                "src": "124:598:23",
                "text": " @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."
              },
              "fullyImplemented": false,
              "id": 3517,
              "linearizedBaseContracts": [
                3517
              ],
              "name": "Proxy",
              "nameLocation": "741:5:23",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3475,
                    "nodeType": "Block",
                    "src": "1008:835:23",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1027:810:23",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1280:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1283:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1286:12:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1286:14:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1267:12:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1267:34:23"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1267:34:23"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1428:74:23",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "1455:3:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1455:5:23"
                                  },
                                  {
                                    "name": "implementation",
                                    "nodeType": "YulIdentifier",
                                    "src": "1462:14:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1478:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1481:12:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1481:14:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1497:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1500:1:23",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "delegatecall",
                                  "nodeType": "YulIdentifier",
                                  "src": "1442:12:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1442:60:23"
                              },
                              "variables": [
                                {
                                  "name": "result",
                                  "nodeType": "YulTypedName",
                                  "src": "1432:6:23",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1570:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1573:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1576:14:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1576:16:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1555:14:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1555:38:23"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1555:38:23"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1688:59:23",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1713:1:23",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "1716:14:23"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1716:16:23"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "1706:6:23"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1706:27:23"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1706:27:23"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1681:66:23",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1686:1:23",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1768:59:23",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1793:1:23",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "1796:14:23"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1796:16:23"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "return",
                                            "nodeType": "YulIdentifier",
                                            "src": "1786:6:23"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1786:27:23"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1786:27:23"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1760:67:23",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "name": "result",
                                "nodeType": "YulIdentifier",
                                "src": "1614:6:23"
                              },
                              "nodeType": "YulSwitch",
                              "src": "1607:220:23"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3471,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1462:14:23",
                            "valueSize": 1
                          }
                        ],
                        "id": 3474,
                        "nodeType": "InlineAssembly",
                        "src": "1018:819:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3469,
                    "nodeType": "StructuredDocumentation",
                    "src": "753:190:23",
                    "text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."
                  },
                  "id": 3476,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_delegate",
                  "nameLocation": "957:9:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3471,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nameLocation": "975:14:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3476,
                        "src": "967:22:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3470,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "967:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "966:24:23"
                  },
                  "returnParameters": {
                    "id": 3473,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1008:0:23"
                  },
                  "scope": 3517,
                  "src": "948:895:23",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "documentation": {
                    "id": 3477,
                    "nodeType": "StructuredDocumentation",
                    "src": "1849:173:23",
                    "text": " @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n and {_fallback} should delegate."
                  },
                  "id": 3482,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_implementation",
                  "nameLocation": "2036:15:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3478,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2051:2:23"
                  },
                  "returnParameters": {
                    "id": 3481,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3480,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3482,
                        "src": "2085:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2085:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2084:9:23"
                  },
                  "scope": 3517,
                  "src": "2027:67:23",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3494,
                    "nodeType": "Block",
                    "src": "2360:72:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3486,
                            "name": "_beforeFallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3516,
                            "src": "2370:15:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 3487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2370:17:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3488,
                        "nodeType": "ExpressionStatement",
                        "src": "2370:17:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3490,
                                "name": "_implementation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3482,
                                "src": "2407:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2407:17:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3489,
                            "name": "_delegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3476,
                            "src": "2397:9:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2397:28:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3493,
                        "nodeType": "ExpressionStatement",
                        "src": "2397:28:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3483,
                    "nodeType": "StructuredDocumentation",
                    "src": "2100:217:23",
                    "text": " @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."
                  },
                  "id": 3495,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_fallback",
                  "nameLocation": "2331:9:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3484,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2340:2:23"
                  },
                  "returnParameters": {
                    "id": 3485,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2360:0:23"
                  },
                  "scope": 3517,
                  "src": "2322:110:23",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3502,
                    "nodeType": "Block",
                    "src": "2665:28:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3499,
                            "name": "_fallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3495,
                            "src": "2675:9:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 3500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2675:11:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3501,
                        "nodeType": "ExpressionStatement",
                        "src": "2675:11:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3496,
                    "nodeType": "StructuredDocumentation",
                    "src": "2438:186:23",
                    "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."
                  },
                  "id": 3503,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3497,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2637:2:23"
                  },
                  "returnParameters": {
                    "id": 3498,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2665:0:23"
                  },
                  "scope": 3517,
                  "src": "2629:64:23",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3510,
                    "nodeType": "Block",
                    "src": "2888:28:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3507,
                            "name": "_fallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3495,
                            "src": "2898:9:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 3508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2898:11:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3509,
                        "nodeType": "ExpressionStatement",
                        "src": "2898:11:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3504,
                    "nodeType": "StructuredDocumentation",
                    "src": "2699:149:23",
                    "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."
                  },
                  "id": 3511,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3505,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2860:2:23"
                  },
                  "returnParameters": {
                    "id": 3506,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2888:0:23"
                  },
                  "scope": 3517,
                  "src": "2853:63:23",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3515,
                    "nodeType": "Block",
                    "src": "3242:2:23",
                    "statements": []
                  },
                  "documentation": {
                    "id": 3512,
                    "nodeType": "StructuredDocumentation",
                    "src": "2922:271:23",
                    "text": " @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overridden should call `super._beforeFallback()`."
                  },
                  "id": 3516,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeFallback",
                  "nameLocation": "3207:15:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3222:2:23"
                  },
                  "returnParameters": {
                    "id": 3514,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3242:0:23"
                  },
                  "scope": 3517,
                  "src": "3198:46:23",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3518,
              "src": "723:2523:23",
              "usedErrors": []
            }
          ],
          "src": "99:3148:23"
        },
        "id": 23
      },
      "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "BeaconProxy": [
              3583
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "IBeacon": [
              3593
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "Proxy": [
              3517
            ],
            "StorageSlot": [
              4045
            ]
          },
          "id": 3584,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3519,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:23:24"
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
              "file": "./IBeacon.sol",
              "id": 3520,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3584,
              "sourceUnit": 3594,
              "src": "137:23:24",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol",
              "file": "../Proxy.sol",
              "id": 3521,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3584,
              "sourceUnit": 3518,
              "src": "161:22:24",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol",
              "file": "../ERC1967/ERC1967Upgrade.sol",
              "id": 3522,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3584,
              "sourceUnit": 3466,
              "src": "184:39:24",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3524,
                    "name": "Proxy",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3517,
                    "src": "604:5:24"
                  },
                  "id": 3525,
                  "nodeType": "InheritanceSpecifier",
                  "src": "604:5:24"
                },
                {
                  "baseName": {
                    "id": 3526,
                    "name": "ERC1967Upgrade",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3465,
                    "src": "611:14:24"
                  },
                  "id": 3527,
                  "nodeType": "InheritanceSpecifier",
                  "src": "611:14:24"
                }
              ],
              "canonicalName": "BeaconProxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3523,
                "nodeType": "StructuredDocumentation",
                "src": "225:354:24",
                "text": " @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\n The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n conflict with the storage layout of the implementation behind the proxy.\n _Available since v3.4._"
              },
              "fullyImplemented": true,
              "id": 3583,
              "linearizedBaseContracts": [
                3583,
                3465,
                3517
              ],
              "name": "BeaconProxy",
              "nameLocation": "589:11:24",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3541,
                    "nodeType": "Block",
                    "src": "1115:61:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3536,
                              "name": "beacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3530,
                              "src": "1149:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3537,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3532,
                              "src": "1157:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 3538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1163:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3535,
                            "name": "_upgradeBeaconToAndCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3464,
                            "src": "1125:23:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,bytes memory,bool)"
                            }
                          },
                          "id": 3539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1125:44:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3540,
                        "nodeType": "ExpressionStatement",
                        "src": "1125:44:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3528,
                    "nodeType": "StructuredDocumentation",
                    "src": "632:423:24",
                    "text": " @dev Initializes the proxy with `beacon`.\n If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\n constructor.\n Requirements:\n - `beacon` must be a contract with the interface {IBeacon}."
                  },
                  "id": 3542,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3530,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "1080:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3542,
                        "src": "1072:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3529,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1072:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3532,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1101:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3542,
                        "src": "1088:17:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3531,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1088:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1071:35:24"
                  },
                  "returnParameters": {
                    "id": 3534,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1115:0:24"
                  },
                  "scope": 3583,
                  "src": "1060:116:24",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3551,
                    "nodeType": "Block",
                    "src": "1305:36:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3548,
                            "name": "_getBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3390,
                            "src": "1322:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 3549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1322:12:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3547,
                        "id": 3550,
                        "nodeType": "Return",
                        "src": "1315:19:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3543,
                    "nodeType": "StructuredDocumentation",
                    "src": "1182:59:24",
                    "text": " @dev Returns the current beacon address."
                  },
                  "id": 3552,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beacon",
                  "nameLocation": "1255:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3544,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1262:2:24"
                  },
                  "returnParameters": {
                    "id": 3547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3546,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3552,
                        "src": "1296:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3545,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1296:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1295:9:24"
                  },
                  "scope": 3583,
                  "src": "1246:95:24",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3482
                  ],
                  "body": {
                    "id": 3566,
                    "nodeType": "Block",
                    "src": "1520:62:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 3560,
                                    "name": "_getBeacon",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3390,
                                    "src": "1545:10:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 3561,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1545:12:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3559,
                                "name": "IBeacon",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3593,
                                "src": "1537:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IBeacon_$3593_$",
                                  "typeString": "type(contract IBeacon)"
                                }
                              },
                              "id": 3562,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1537:21:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBeacon_$3593",
                                "typeString": "contract IBeacon"
                              }
                            },
                            "id": 3563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "implementation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3592,
                            "src": "1537:36:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 3564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1537:38:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3558,
                        "id": 3565,
                        "nodeType": "Return",
                        "src": "1530:45:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3553,
                    "nodeType": "StructuredDocumentation",
                    "src": "1347:92:24",
                    "text": " @dev Returns the current implementation address of the associated beacon."
                  },
                  "id": 3567,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_implementation",
                  "nameLocation": "1453:15:24",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3555,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1493:8:24"
                  },
                  "parameters": {
                    "id": 3554,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1468:2:24"
                  },
                  "returnParameters": {
                    "id": 3558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3557,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3567,
                        "src": "1511:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3556,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1511:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1510:9:24"
                  },
                  "scope": 3583,
                  "src": "1444:138:24",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3581,
                    "nodeType": "Block",
                    "src": "2032:61:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3576,
                              "name": "beacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3570,
                              "src": "2066:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3577,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3572,
                              "src": "2074:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 3578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2080:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3575,
                            "name": "_upgradeBeaconToAndCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3464,
                            "src": "2042:23:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,bytes memory,bool)"
                            }
                          },
                          "id": 3579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2042:44:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3580,
                        "nodeType": "ExpressionStatement",
                        "src": "2042:44:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3568,
                    "nodeType": "StructuredDocumentation",
                    "src": "1588:367:24",
                    "text": " @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n Requirements:\n - `beacon` must be a contract.\n - The implementation returned by `beacon` must be a contract."
                  },
                  "id": 3582,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setBeacon",
                  "nameLocation": "1969:10:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3570,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "1988:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3582,
                        "src": "1980:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3569,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1980:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3572,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2009:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3582,
                        "src": "1996:17:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3571,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1996:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1979:35:24"
                  },
                  "returnParameters": {
                    "id": 3574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2032:0:24"
                  },
                  "scope": 3583,
                  "src": "1960:133:24",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3584,
              "src": "580:1515:24",
              "usedErrors": []
            }
          ],
          "src": "112:1984:24"
        },
        "id": 24
      },
      "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
          "exportedSymbols": {
            "IBeacon": [
              3593
            ]
          },
          "id": 3594,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3585,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "93:23:25"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IBeacon",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3586,
                "nodeType": "StructuredDocumentation",
                "src": "118:79:25",
                "text": " @dev This is the interface that {BeaconProxy} expects of its beacon."
              },
              "fullyImplemented": false,
              "id": 3593,
              "linearizedBaseContracts": [
                3593
              ],
              "name": "IBeacon",
              "nameLocation": "208:7:25",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3587,
                    "nodeType": "StructuredDocumentation",
                    "src": "222:162:25",
                    "text": " @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."
                  },
                  "functionSelector": "5c60da1b",
                  "id": 3592,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "implementation",
                  "nameLocation": "398:14:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3588,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "412:2:25"
                  },
                  "returnParameters": {
                    "id": 3591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3590,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3592,
                        "src": "438:7:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3589,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "438:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "437:9:25"
                  },
                  "scope": 3593,
                  "src": "389:58:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3594,
              "src": "198:251:25",
              "usedErrors": []
            }
          ],
          "src": "93:357:25"
        },
        "id": 25
      },
      "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "Context": [
              3985
            ],
            "IBeacon": [
              3593
            ],
            "Ownable": [
              3100
            ],
            "UpgradeableBeacon": [
              3668
            ]
          },
          "id": 3669,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3595,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "103:23:26"
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
              "file": "./IBeacon.sol",
              "id": 3596,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3669,
              "sourceUnit": 3594,
              "src": "128:23:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
              "file": "../../access/Ownable.sol",
              "id": 3597,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3669,
              "sourceUnit": 3101,
              "src": "152:34:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 3598,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3669,
              "sourceUnit": 3964,
              "src": "187:33:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3600,
                    "name": "IBeacon",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3593,
                    "src": "573:7:26"
                  },
                  "id": 3601,
                  "nodeType": "InheritanceSpecifier",
                  "src": "573:7:26"
                },
                {
                  "baseName": {
                    "id": 3602,
                    "name": "Ownable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3100,
                    "src": "582:7:26"
                  },
                  "id": 3603,
                  "nodeType": "InheritanceSpecifier",
                  "src": "582:7:26"
                }
              ],
              "canonicalName": "UpgradeableBeacon",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3599,
                "nodeType": "StructuredDocumentation",
                "src": "222:320:26",
                "text": " @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n implementation contract, which is where they will delegate all function calls.\n An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon."
              },
              "fullyImplemented": true,
              "id": 3668,
              "linearizedBaseContracts": [
                3668,
                3100,
                3985,
                3593
              ],
              "name": "UpgradeableBeacon",
              "nameLocation": "552:17:26",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 3605,
                  "mutability": "mutable",
                  "name": "_implementation",
                  "nameLocation": "612:15:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3668,
                  "src": "596:31:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3604,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "596:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3606,
                    "nodeType": "StructuredDocumentation",
                    "src": "634:90:26",
                    "text": " @dev Emitted when the implementation returned by the beacon is changed."
                  },
                  "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
                  "id": 3610,
                  "name": "Upgraded",
                  "nameLocation": "735:8:26",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3608,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nameLocation": "760:14:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3610,
                        "src": "744:30:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3607,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "744:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "743:32:26"
                  },
                  "src": "729:47:26"
                },
                {
                  "body": {
                    "id": 3620,
                    "nodeType": "Block",
                    "src": "968:52:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3617,
                              "name": "implementation_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3613,
                              "src": "997:15:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3616,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3667,
                            "src": "978:18:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "978:35:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3619,
                        "nodeType": "ExpressionStatement",
                        "src": "978:35:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3611,
                    "nodeType": "StructuredDocumentation",
                    "src": "782:144:26",
                    "text": " @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n beacon."
                  },
                  "id": 3621,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3613,
                        "mutability": "mutable",
                        "name": "implementation_",
                        "nameLocation": "951:15:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3621,
                        "src": "943:23:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "943:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "942:25:26"
                  },
                  "returnParameters": {
                    "id": 3615,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "968:0:26"
                  },
                  "scope": 3668,
                  "src": "931:89:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3592
                  ],
                  "body": {
                    "id": 3630,
                    "nodeType": "Block",
                    "src": "1171:39:26",
                    "statements": [
                      {
                        "expression": {
                          "id": 3628,
                          "name": "_implementation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3605,
                          "src": "1188:15:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3627,
                        "id": 3629,
                        "nodeType": "Return",
                        "src": "1181:22:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3622,
                    "nodeType": "StructuredDocumentation",
                    "src": "1026:67:26",
                    "text": " @dev Returns the current implementation address."
                  },
                  "functionSelector": "5c60da1b",
                  "id": 3631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "implementation",
                  "nameLocation": "1107:14:26",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3624,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1144:8:26"
                  },
                  "parameters": {
                    "id": 3623,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1121:2:26"
                  },
                  "returnParameters": {
                    "id": 3627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3626,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3631,
                        "src": "1162:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1162:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1161:9:26"
                  },
                  "scope": 3668,
                  "src": "1098:112:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3647,
                    "nodeType": "Block",
                    "src": "1540:96:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3640,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3634,
                              "src": "1569:17:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3639,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3667,
                            "src": "1550:18:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1550:37:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3642,
                        "nodeType": "ExpressionStatement",
                        "src": "1550:37:26"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3644,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3634,
                              "src": "1611:17:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3643,
                            "name": "Upgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3610,
                            "src": "1602:8:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1602:27:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3646,
                        "nodeType": "EmitStatement",
                        "src": "1597:32:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3632,
                    "nodeType": "StructuredDocumentation",
                    "src": "1216:248:26",
                    "text": " @dev Upgrades the beacon to a new implementation.\n Emits an {Upgraded} event.\n Requirements:\n - msg.sender must be the owner of the contract.\n - `newImplementation` must be a contract."
                  },
                  "functionSelector": "3659cfe6",
                  "id": 3648,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 3637,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 3636,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3019,
                        "src": "1530:9:26"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1530:9:26"
                    }
                  ],
                  "name": "upgradeTo",
                  "nameLocation": "1478:9:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3634,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1496:17:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3648,
                        "src": "1488:25:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3633,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1488:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1487:27:26"
                  },
                  "returnParameters": {
                    "id": 3638,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1540:0:26"
                  },
                  "scope": 3668,
                  "src": "1469:167:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3666,
                    "nodeType": "Block",
                    "src": "1874:163:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3657,
                                  "name": "newImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3651,
                                  "src": "1911:17:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 3655,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3963,
                                  "src": "1892:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3963_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 3656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3686,
                                "src": "1892:18:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1892:37:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 3659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1931:53:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6",
                                "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\""
                              },
                              "value": "UpgradeableBeacon: implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6",
                                "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\""
                              }
                            ],
                            "id": 3654,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1884:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1884:101:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3661,
                        "nodeType": "ExpressionStatement",
                        "src": "1884:101:26"
                      },
                      {
                        "expression": {
                          "id": 3664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3662,
                            "name": "_implementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3605,
                            "src": "1995:15:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3663,
                            "name": "newImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3651,
                            "src": "2013:17:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1995:35:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3665,
                        "nodeType": "ExpressionStatement",
                        "src": "1995:35:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3649,
                    "nodeType": "StructuredDocumentation",
                    "src": "1642:164:26",
                    "text": " @dev Sets the implementation contract address for this beacon\n Requirements:\n - `newImplementation` must be a contract."
                  },
                  "id": 3667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setImplementation",
                  "nameLocation": "1820:18:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3651,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1847:17:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3667,
                        "src": "1839:25:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1839:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1838:27:26"
                  },
                  "returnParameters": {
                    "id": 3653,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1874:0:26"
                  },
                  "scope": 3668,
                  "src": "1811:226:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 3669,
              "src": "543:1496:26",
              "usedErrors": []
            }
          ],
          "src": "103:1937:26"
        },
        "id": 26
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ]
          },
          "id": 3964,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3670,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".1"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:27"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Address",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3671,
                "nodeType": "StructuredDocumentation",
                "src": "126:67:27",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 3963,
              "linearizedBaseContracts": [
                3963
              ],
              "name": "Address",
              "nameLocation": "202:7:27",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3685,
                    "nodeType": "Block",
                    "src": "1241:254:27",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 3679,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3674,
                                "src": "1465:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3680,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1465:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1465:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1487:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1465:23:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3678,
                        "id": 3684,
                        "nodeType": "Return",
                        "src": "1458:30:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3672,
                    "nodeType": "StructuredDocumentation",
                    "src": "216:954:27",
                    "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="
                  },
                  "id": 3686,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nameLocation": "1184:10:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3674,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1203:7:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3686,
                        "src": "1195:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3673,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1195:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1194:17:27"
                  },
                  "returnParameters": {
                    "id": 3678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3677,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3686,
                        "src": "1235:4:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3676,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1235:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1234:6:27"
                  },
                  "scope": 3963,
                  "src": "1175:320:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3719,
                    "nodeType": "Block",
                    "src": "2483:241:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3697,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2509:4:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$3963",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$3963",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 3696,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2501:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3695,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2501:7:27",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2501:13:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 3699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "2501:21:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3700,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3691,
                                "src": "2526:6:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2501:31:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 3702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2534:31:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              },
                              "value": "Address: insufficient balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              }
                            ],
                            "id": 3694,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2493:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2493:73:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3704,
                        "nodeType": "ExpressionStatement",
                        "src": "2493:73:27"
                      },
                      {
                        "assignments": [
                          3706,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3706,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2583:7:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3719,
                            "src": "2578:12:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3705,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2578:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 3713,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 3711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2626:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 3707,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3689,
                                "src": "2596:9:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 3708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "2596:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 3710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 3709,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3691,
                                "src": "2618:6:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2596:29:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 3712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2596:33:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2577:52:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3715,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3706,
                              "src": "2647:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 3716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2656:60:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              },
                              "value": "Address: unable to send value, recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              }
                            ],
                            "id": 3714,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2639:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2639:78:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3718,
                        "nodeType": "ExpressionStatement",
                        "src": "2639:78:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3687,
                    "nodeType": "StructuredDocumentation",
                    "src": "1501:906:27",
                    "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 3720,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "2421:9:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3689,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2447:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3720,
                        "src": "2431:25:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:15:27",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3691,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2466:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3720,
                        "src": "2458:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2458:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2430:43:27"
                  },
                  "returnParameters": {
                    "id": 3693,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2483:0:27"
                  },
                  "scope": 3963,
                  "src": "2412:312:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3736,
                    "nodeType": "Block",
                    "src": "3555:84:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3731,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3723,
                              "src": "3585:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3732,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3725,
                              "src": "3593:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 3733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3599:32:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              },
                              "value": "Address: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              }
                            ],
                            "id": 3730,
                            "name": "functionCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3737,
                              3757
                            ],
                            "referencedDeclaration": 3757,
                            "src": "3572:12:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3572:60:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3729,
                        "id": 3735,
                        "nodeType": "Return",
                        "src": "3565:67:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3721,
                    "nodeType": "StructuredDocumentation",
                    "src": "2730:731:27",
                    "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                  },
                  "id": 3737,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3475:12:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3723,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3496:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3737,
                        "src": "3488:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3722,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3488:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3725,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3517:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3737,
                        "src": "3504:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3724,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3504:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3487:35:27"
                  },
                  "returnParameters": {
                    "id": 3729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3728,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3737,
                        "src": "3541:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3727,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3541:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3540:14:27"
                  },
                  "scope": 3963,
                  "src": "3466:173:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3756,
                    "nodeType": "Block",
                    "src": "4008:76:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3750,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3740,
                              "src": "4047:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3751,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3742,
                              "src": "4055:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 3752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4061:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 3753,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3744,
                              "src": "4064:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3749,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3777,
                              3827
                            ],
                            "referencedDeclaration": 3827,
                            "src": "4025:21:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4025:52:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3748,
                        "id": 3755,
                        "nodeType": "Return",
                        "src": "4018:59:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3738,
                    "nodeType": "StructuredDocumentation",
                    "src": "3645:211:27",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 3757,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3870:12:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3740,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3900:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3757,
                        "src": "3892:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3739,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3892:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3742,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3929:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3757,
                        "src": "3916:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3741,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3916:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3744,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "3957:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3757,
                        "src": "3943:26:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3743,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3943:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3882:93:27"
                  },
                  "returnParameters": {
                    "id": 3748,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3747,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3757,
                        "src": "3994:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3746,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3994:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3993:14:27"
                  },
                  "scope": 3963,
                  "src": "3861:223:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3776,
                    "nodeType": "Block",
                    "src": "4589:111:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3770,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "4628:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3771,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3762,
                              "src": "4636:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3772,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3764,
                              "src": "4642:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                              "id": 3773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4649:43:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              },
                              "value": "Address: low-level call with value failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              }
                            ],
                            "id": 3769,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3777,
                              3827
                            ],
                            "referencedDeclaration": 3827,
                            "src": "4606:21:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4606:87:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3768,
                        "id": 3775,
                        "nodeType": "Return",
                        "src": "4599:94:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3758,
                    "nodeType": "StructuredDocumentation",
                    "src": "4090:351:27",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                  },
                  "id": 3777,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4455:21:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3765,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3760,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4494:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3777,
                        "src": "4486:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3759,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4486:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3762,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4523:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3777,
                        "src": "4510:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3761,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4510:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3764,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4545:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3777,
                        "src": "4537:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3763,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4537:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4476:80:27"
                  },
                  "returnParameters": {
                    "id": 3768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3767,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3777,
                        "src": "4575:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3766,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4575:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4574:14:27"
                  },
                  "scope": 3963,
                  "src": "4446:254:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3826,
                    "nodeType": "Block",
                    "src": "5127:320:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3794,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5153:4:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$3963",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$3963",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 3793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5145:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3792,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5145:7:27",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3795,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5145:13:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 3796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "5145:21:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3797,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3784,
                                "src": "5170:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5145:30:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                              "id": 3799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5177:40:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              },
                              "value": "Address: insufficient balance for call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              }
                            ],
                            "id": 3791,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5137:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5137:81:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3801,
                        "nodeType": "ExpressionStatement",
                        "src": "5137:81:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3804,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3780,
                                  "src": "5247:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3803,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3686,
                                "src": "5236:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5236:18:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 3806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5256:31:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              },
                              "value": "Address: call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              }
                            ],
                            "id": 3802,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5228:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5228:60:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3808,
                        "nodeType": "ExpressionStatement",
                        "src": "5228:60:27"
                      },
                      {
                        "assignments": [
                          3810,
                          3812
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3810,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5305:7:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3826,
                            "src": "5300:12:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3809,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5300:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3812,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "5327:10:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3826,
                            "src": "5314:23:27",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3811,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5314:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3819,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3817,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3782,
                              "src": "5367:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 3813,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3780,
                                "src": "5341:6:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "5341:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 3816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 3815,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3784,
                                "src": "5360:5:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5341:25:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 3818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5341:31:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5299:73:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3821,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "5406:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3822,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3812,
                              "src": "5415:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3823,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3786,
                              "src": "5427:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3820,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3962,
                            "src": "5389:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 3824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5389:51:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3790,
                        "id": 3825,
                        "nodeType": "Return",
                        "src": "5382:58:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3778,
                    "nodeType": "StructuredDocumentation",
                    "src": "4706:237:27",
                    "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 3827,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4957:21:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3787,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3780,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4996:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3827,
                        "src": "4988:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4988:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3782,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5025:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3827,
                        "src": "5012:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3781,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5012:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3784,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5047:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3827,
                        "src": "5039:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3783,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5039:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3786,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "5076:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3827,
                        "src": "5062:26:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3785,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5062:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4978:116:27"
                  },
                  "returnParameters": {
                    "id": 3790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3789,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3827,
                        "src": "5113:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3788,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5113:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5112:14:27"
                  },
                  "scope": 3963,
                  "src": "4948:499:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3843,
                    "nodeType": "Block",
                    "src": "5724:97:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3838,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3830,
                              "src": "5760:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3839,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3832,
                              "src": "5768:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                              "id": 3840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5774:39:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              },
                              "value": "Address: low-level static call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              }
                            ],
                            "id": 3837,
                            "name": "functionStaticCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3844,
                              3879
                            ],
                            "referencedDeclaration": 3879,
                            "src": "5741:18:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                            }
                          },
                          "id": 3841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5741:73:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3836,
                        "id": 3842,
                        "nodeType": "Return",
                        "src": "5734:80:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3828,
                    "nodeType": "StructuredDocumentation",
                    "src": "5453:166:27",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 3844,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "5633:18:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3830,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5660:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3844,
                        "src": "5652:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5652:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3832,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5681:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3844,
                        "src": "5668:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3831,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5668:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5651:35:27"
                  },
                  "returnParameters": {
                    "id": 3836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3835,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3844,
                        "src": "5710:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3834,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5710:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5709:14:27"
                  },
                  "scope": 3963,
                  "src": "5624:197:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3878,
                    "nodeType": "Block",
                    "src": "6163:228:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3858,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3847,
                                  "src": "6192:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3857,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3686,
                                "src": "6181:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6181:18:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 3860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6201:38:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              },
                              "value": "Address: static call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              }
                            ],
                            "id": 3856,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6173:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6173:67:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3862,
                        "nodeType": "ExpressionStatement",
                        "src": "6173:67:27"
                      },
                      {
                        "assignments": [
                          3864,
                          3866
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3864,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "6257:7:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3878,
                            "src": "6252:12:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3863,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6252:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3866,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "6279:10:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3878,
                            "src": "6266:23:27",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3865,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6266:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3871,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3869,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3849,
                              "src": "6311:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3867,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3847,
                              "src": "6293:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "6293:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 3870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6293:23:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6251:65:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3873,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3864,
                              "src": "6350:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3874,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3866,
                              "src": "6359:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3875,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3851,
                              "src": "6371:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3872,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3962,
                            "src": "6333:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 3876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6333:51:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3855,
                        "id": 3877,
                        "nodeType": "Return",
                        "src": "6326:58:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3845,
                    "nodeType": "StructuredDocumentation",
                    "src": "5827:173:27",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 3879,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "6014:18:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3847,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6050:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3879,
                        "src": "6042:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6042:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3849,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6079:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3879,
                        "src": "6066:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3848,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6066:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3851,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6107:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3879,
                        "src": "6093:26:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3850,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6093:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6032:93:27"
                  },
                  "returnParameters": {
                    "id": 3855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3854,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3879,
                        "src": "6149:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3853,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6149:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6148:14:27"
                  },
                  "scope": 3963,
                  "src": "6005:386:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3895,
                    "nodeType": "Block",
                    "src": "6667:101:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3890,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3882,
                              "src": "6705:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3891,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3884,
                              "src": "6713:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                              "id": 3892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6719:41:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              },
                              "value": "Address: low-level delegate call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              }
                            ],
                            "id": 3889,
                            "name": "functionDelegateCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3896,
                              3931
                            ],
                            "referencedDeclaration": 3931,
                            "src": "6684:20:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6684:77:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3888,
                        "id": 3894,
                        "nodeType": "Return",
                        "src": "6677:84:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3880,
                    "nodeType": "StructuredDocumentation",
                    "src": "6397:168:27",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 3896,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6579:20:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3882,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6608:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3896,
                        "src": "6600:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3881,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6600:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3884,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6629:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3896,
                        "src": "6616:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3883,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6616:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6599:35:27"
                  },
                  "returnParameters": {
                    "id": 3888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3887,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3896,
                        "src": "6653:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3886,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6653:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6652:14:27"
                  },
                  "scope": 3963,
                  "src": "6570:198:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3930,
                    "nodeType": "Block",
                    "src": "7109:232:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3910,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3899,
                                  "src": "7138:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3909,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3686,
                                "src": "7127:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7127:18:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 3912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7147:40:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              },
                              "value": "Address: delegate call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              }
                            ],
                            "id": 3908,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7119:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7119:69:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3914,
                        "nodeType": "ExpressionStatement",
                        "src": "7119:69:27"
                      },
                      {
                        "assignments": [
                          3916,
                          3918
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3916,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "7205:7:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3930,
                            "src": "7200:12:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3915,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7200:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3918,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "7227:10:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3930,
                            "src": "7214:23:27",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3917,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7214:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3923,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3921,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3901,
                              "src": "7261:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3919,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3899,
                              "src": "7241:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "7241:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 3922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7241:25:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7199:67:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3925,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3916,
                              "src": "7300:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3926,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3918,
                              "src": "7309:10:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3927,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3903,
                              "src": "7321:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3924,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3962,
                            "src": "7283:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 3928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7283:51:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3907,
                        "id": 3929,
                        "nodeType": "Return",
                        "src": "7276:58:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3897,
                    "nodeType": "StructuredDocumentation",
                    "src": "6774:175:27",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 3931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6963:20:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3899,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "7001:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3931,
                        "src": "6993:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6993:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3901,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7030:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3931,
                        "src": "7017:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3900,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7017:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3903,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7058:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3931,
                        "src": "7044:26:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3902,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7044:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6983:93:27"
                  },
                  "returnParameters": {
                    "id": 3907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3906,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3931,
                        "src": "7095:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3905,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7095:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7094:14:27"
                  },
                  "scope": 3963,
                  "src": "6954:387:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3961,
                    "nodeType": "Block",
                    "src": "7721:582:27",
                    "statements": [
                      {
                        "condition": {
                          "id": 3943,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3934,
                          "src": "7735:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3959,
                          "nodeType": "Block",
                          "src": "7792:505:27",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3947,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3936,
                                    "src": "7876:10:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "7876:17:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3949,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7896:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7876:21:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3957,
                                "nodeType": "Block",
                                "src": "8234:53:27",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3954,
                                          "name": "errorMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3938,
                                          "src": "8259:12:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 3953,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "8252:6:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 3955,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8252:20:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3956,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8252:20:27"
                                  }
                                ]
                              },
                              "id": 3958,
                              "nodeType": "IfStatement",
                              "src": "7872:415:27",
                              "trueBody": {
                                "id": 3952,
                                "nodeType": "Block",
                                "src": "7899:329:27",
                                "statements": [
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "8069:145:27",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "8091:40:27",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "returndata",
                                                "nodeType": "YulIdentifier",
                                                "src": "8120:10:27"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "8114:5:27"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8114:17:27"
                                          },
                                          "variables": [
                                            {
                                              "name": "returndata_size",
                                              "nodeType": "YulTypedName",
                                              "src": "8095:15:27",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8163:2:27",
                                                    "type": "",
                                                    "value": "32"
                                                  },
                                                  {
                                                    "name": "returndata",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8167:10:27"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8159:3:27"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8159:19:27"
                                              },
                                              {
                                                "name": "returndata_size",
                                                "nodeType": "YulIdentifier",
                                                "src": "8180:15:27"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "8152:6:27"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8152:44:27"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "8152:44:27"
                                        }
                                      ]
                                    },
                                    "documentation": "@solidity memory-safe-assembly",
                                    "evmVersion": "london",
                                    "externalReferences": [
                                      {
                                        "declaration": 3936,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8120:10:27",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 3936,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8167:10:27",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 3951,
                                    "nodeType": "InlineAssembly",
                                    "src": "8060:154:27"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 3960,
                        "nodeType": "IfStatement",
                        "src": "7731:566:27",
                        "trueBody": {
                          "id": 3946,
                          "nodeType": "Block",
                          "src": "7744:42:27",
                          "statements": [
                            {
                              "expression": {
                                "id": 3944,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3936,
                                "src": "7765:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 3942,
                              "id": 3945,
                              "nodeType": "Return",
                              "src": "7758:17:27"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3932,
                    "nodeType": "StructuredDocumentation",
                    "src": "7347:209:27",
                    "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"
                  },
                  "id": 3962,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "7570:16:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3934,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "7601:7:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3962,
                        "src": "7596:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3933,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7596:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3936,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "7631:10:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3962,
                        "src": "7618:23:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3935,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7618:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3938,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7665:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3962,
                        "src": "7651:26:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3937,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7651:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7586:97:27"
                  },
                  "returnParameters": {
                    "id": 3942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3941,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3962,
                        "src": "7707:12:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3940,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7707:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7706:14:27"
                  },
                  "scope": 3963,
                  "src": "7561:742:27",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3964,
              "src": "194:8111:27",
              "usedErrors": []
            }
          ],
          "src": "101:8205:27"
        },
        "id": 27
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
          "exportedSymbols": {
            "Context": [
              3985
            ]
          },
          "id": 3986,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3965,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:28"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Context",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3966,
                "nodeType": "StructuredDocumentation",
                "src": "111:496:28",
                "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
              },
              "fullyImplemented": true,
              "id": 3985,
              "linearizedBaseContracts": [
                3985
              ],
              "name": "Context",
              "nameLocation": "626:7:28",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3974,
                    "nodeType": "Block",
                    "src": "702:34:28",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 3971,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "719:3:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "719:10:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3970,
                        "id": 3973,
                        "nodeType": "Return",
                        "src": "712:17:28"
                      }
                    ]
                  },
                  "id": 3975,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "649:10:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3967,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "659:2:28"
                  },
                  "returnParameters": {
                    "id": 3970,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3969,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3975,
                        "src": "693:7:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3968,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "693:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "692:9:28"
                  },
                  "scope": 3985,
                  "src": "640:96:28",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3983,
                    "nodeType": "Block",
                    "src": "809:32:28",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 3980,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "826:3:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "826:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 3979,
                        "id": 3982,
                        "nodeType": "Return",
                        "src": "819:15:28"
                      }
                    ]
                  },
                  "id": 3984,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "751:8:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3976,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "759:2:28"
                  },
                  "returnParameters": {
                    "id": 3979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3978,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3984,
                        "src": "793:14:28",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3977,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "792:16:28"
                  },
                  "scope": 3985,
                  "src": "742:99:28",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3986,
              "src": "608:235:28",
              "usedErrors": []
            }
          ],
          "src": "86:758:28"
        },
        "id": 28
      },
      "@openzeppelin/contracts/utils/StorageSlot.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol",
          "exportedSymbols": {
            "StorageSlot": [
              4045
            ]
          },
          "id": 4046,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3987,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "105:23:29"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "StorageSlot",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3988,
                "nodeType": "StructuredDocumentation",
                "src": "130:1148:29",
                "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._"
              },
              "fullyImplemented": true,
              "id": 4045,
              "linearizedBaseContracts": [
                4045
              ],
              "name": "StorageSlot",
              "nameLocation": "1287:11:29",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "StorageSlot.AddressSlot",
                  "id": 3991,
                  "members": [
                    {
                      "constant": false,
                      "id": 3990,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1342:5:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 3991,
                      "src": "1334:13:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3989,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1334:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "AddressSlot",
                  "nameLocation": "1312:11:29",
                  "nodeType": "StructDefinition",
                  "scope": 4045,
                  "src": "1305:49:29",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.BooleanSlot",
                  "id": 3994,
                  "members": [
                    {
                      "constant": false,
                      "id": 3993,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1394:5:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 3994,
                      "src": "1389:10:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3992,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1389:4:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BooleanSlot",
                  "nameLocation": "1367:11:29",
                  "nodeType": "StructDefinition",
                  "scope": 4045,
                  "src": "1360:46:29",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.Bytes32Slot",
                  "id": 3997,
                  "members": [
                    {
                      "constant": false,
                      "id": 3996,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1449:5:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 3997,
                      "src": "1441:13:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3995,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1441:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Bytes32Slot",
                  "nameLocation": "1419:11:29",
                  "nodeType": "StructDefinition",
                  "scope": 4045,
                  "src": "1412:49:29",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.Uint256Slot",
                  "id": 4000,
                  "members": [
                    {
                      "constant": false,
                      "id": 3999,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1504:5:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 4000,
                      "src": "1496:13:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3998,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1496:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Uint256Slot",
                  "nameLocation": "1474:11:29",
                  "nodeType": "StructDefinition",
                  "scope": 4045,
                  "src": "1467:49:29",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4010,
                    "nodeType": "Block",
                    "src": "1698:106:29",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1760:38:29",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1774:14:29",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "1784:4:29"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "1774:6:29"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4007,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "1774:6:29",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4003,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1784:4:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 4009,
                        "nodeType": "InlineAssembly",
                        "src": "1751:47:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4001,
                    "nodeType": "StructuredDocumentation",
                    "src": "1522:87:29",
                    "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."
                  },
                  "id": 4011,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressSlot",
                  "nameLocation": "1623:14:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4003,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "1646:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4011,
                        "src": "1638:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4002,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1638:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1637:14:29"
                  },
                  "returnParameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4007,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1695:1:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4011,
                        "src": "1675:21:29",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                          "typeString": "struct StorageSlot.AddressSlot"
                        },
                        "typeName": {
                          "id": 4006,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4005,
                            "name": "AddressSlot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3991,
                            "src": "1675:11:29"
                          },
                          "referencedDeclaration": 3991,
                          "src": "1675:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSlot_$3991_storage_ptr",
                            "typeString": "struct StorageSlot.AddressSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1674:23:29"
                  },
                  "scope": 4045,
                  "src": "1614:190:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4021,
                    "nodeType": "Block",
                    "src": "1986:106:29",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2048:38:29",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2062:14:29",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2072:4:29"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2062:6:29"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4018,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2062:6:29",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4014,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2072:4:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 4020,
                        "nodeType": "InlineAssembly",
                        "src": "2039:47:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4012,
                    "nodeType": "StructuredDocumentation",
                    "src": "1810:87:29",
                    "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`."
                  },
                  "id": 4022,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBooleanSlot",
                  "nameLocation": "1911:14:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4014,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "1934:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4022,
                        "src": "1926:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4013,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1926:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1925:14:29"
                  },
                  "returnParameters": {
                    "id": 4019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4018,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1983:1:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4022,
                        "src": "1963:21:29",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BooleanSlot_$3994_storage_ptr",
                          "typeString": "struct StorageSlot.BooleanSlot"
                        },
                        "typeName": {
                          "id": 4017,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4016,
                            "name": "BooleanSlot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3994,
                            "src": "1963:11:29"
                          },
                          "referencedDeclaration": 3994,
                          "src": "1963:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BooleanSlot_$3994_storage_ptr",
                            "typeString": "struct StorageSlot.BooleanSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1962:23:29"
                  },
                  "scope": 4045,
                  "src": "1902:190:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4032,
                    "nodeType": "Block",
                    "src": "2274:106:29",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2336:38:29",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2350:14:29",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2360:4:29"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2350:6:29"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4029,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2350:6:29",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4025,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2360:4:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 4031,
                        "nodeType": "InlineAssembly",
                        "src": "2327:47:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4023,
                    "nodeType": "StructuredDocumentation",
                    "src": "2098:87:29",
                    "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`."
                  },
                  "id": 4033,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBytes32Slot",
                  "nameLocation": "2199:14:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4025,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2222:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4033,
                        "src": "2214:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4024,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2214:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2213:14:29"
                  },
                  "returnParameters": {
                    "id": 4030,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4029,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2271:1:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4033,
                        "src": "2251:21:29",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Slot_$3997_storage_ptr",
                          "typeString": "struct StorageSlot.Bytes32Slot"
                        },
                        "typeName": {
                          "id": 4028,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4027,
                            "name": "Bytes32Slot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3997,
                            "src": "2251:11:29"
                          },
                          "referencedDeclaration": 3997,
                          "src": "2251:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Slot_$3997_storage_ptr",
                            "typeString": "struct StorageSlot.Bytes32Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2250:23:29"
                  },
                  "scope": 4045,
                  "src": "2190:190:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4043,
                    "nodeType": "Block",
                    "src": "2562:106:29",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2624:38:29",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2638:14:29",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2648:4:29"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2638:6:29"
                                }
                              ]
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4040,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2638:6:29",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4036,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2648:4:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 4042,
                        "nodeType": "InlineAssembly",
                        "src": "2615:47:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4034,
                    "nodeType": "StructuredDocumentation",
                    "src": "2386:87:29",
                    "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`."
                  },
                  "id": 4044,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUint256Slot",
                  "nameLocation": "2487:14:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4036,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2510:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4044,
                        "src": "2502:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4035,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2502:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2501:14:29"
                  },
                  "returnParameters": {
                    "id": 4041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4040,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2559:1:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4044,
                        "src": "2539:21:29",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Uint256Slot_$4000_storage_ptr",
                          "typeString": "struct StorageSlot.Uint256Slot"
                        },
                        "typeName": {
                          "id": 4039,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4038,
                            "name": "Uint256Slot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4000,
                            "src": "2539:11:29"
                          },
                          "referencedDeclaration": 4000,
                          "src": "2539:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Uint256Slot_$4000_storage_ptr",
                            "typeString": "struct StorageSlot.Uint256Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2538:23:29"
                  },
                  "scope": 4045,
                  "src": "2478:190:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4046,
              "src": "1279:1391:29",
              "usedErrors": []
            }
          ],
          "src": "105:2566:29"
        },
        "id": 29
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
          "exportedSymbols": {
            "Strings": [
              4271
            ]
          },
          "id": 4272,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4047,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Strings",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 4048,
                "nodeType": "StructuredDocumentation",
                "src": "126:34:30",
                "text": " @dev String operations."
              },
              "fullyImplemented": true,
              "id": 4271,
              "linearizedBaseContracts": [
                4271
              ],
              "name": "Strings",
              "nameLocation": "169:7:30",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 4051,
                  "mutability": "constant",
                  "name": "_HEX_SYMBOLS",
                  "nameLocation": "208:12:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 4271,
                  "src": "183:58:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 4049,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "183:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "value": {
                    "hexValue": "30313233343536373839616263646566",
                    "id": 4050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "223:18:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                      "typeString": "literal_string \"0123456789abcdef\""
                    },
                    "value": "0123456789abcdef"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 4054,
                  "mutability": "constant",
                  "name": "_ADDRESS_LENGTH",
                  "nameLocation": "270:15:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 4271,
                  "src": "247:43:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4052,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "247:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3230",
                    "id": 4053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "288:2:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_20_by_1",
                      "typeString": "int_const 20"
                    },
                    "value": "20"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4132,
                    "nodeType": "Block",
                    "src": "463:632:30",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4062,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4057,
                            "src": "665:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "674:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "665:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4068,
                        "nodeType": "IfStatement",
                        "src": "661:51:30",
                        "trueBody": {
                          "id": 4067,
                          "nodeType": "Block",
                          "src": "677:35:30",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 4065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "698:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 4061,
                              "id": 4066,
                              "nodeType": "Return",
                              "src": "691:10:30"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4070
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4070,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "729:4:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 4132,
                            "src": "721:12:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4069,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "721:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4072,
                        "initialValue": {
                          "id": 4071,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4057,
                          "src": "736:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "721:20:30"
                      },
                      {
                        "assignments": [
                          4074
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4074,
                            "mutability": "mutable",
                            "name": "digits",
                            "nameLocation": "759:6:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 4132,
                            "src": "751:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4073,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "751:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4075,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "751:14:30"
                      },
                      {
                        "body": {
                          "id": 4086,
                          "nodeType": "Block",
                          "src": "793:57:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 4080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "807:8:30",
                                "subExpression": {
                                  "id": 4079,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4074,
                                  "src": "807:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4081,
                              "nodeType": "ExpressionStatement",
                              "src": "807:8:30"
                            },
                            {
                              "expression": {
                                "id": 4084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4082,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4070,
                                  "src": "829:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 4083,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "837:2:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "829:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4085,
                              "nodeType": "ExpressionStatement",
                              "src": "829:10:30"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4076,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4070,
                            "src": "782:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "790:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "782:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4087,
                        "nodeType": "WhileStatement",
                        "src": "775:75:30"
                      },
                      {
                        "assignments": [
                          4089
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4089,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "872:6:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 4132,
                            "src": "859:19:30",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4088,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "859:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4094,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4092,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4074,
                              "src": "891:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "881:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 4090,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "885:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 4093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "881:17:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "859:39:30"
                      },
                      {
                        "body": {
                          "id": 4125,
                          "nodeType": "Block",
                          "src": "927:131:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 4100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4098,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4074,
                                  "src": "941:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 4099,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "951:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "941:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4101,
                              "nodeType": "ExpressionStatement",
                              "src": "941:11:30"
                            },
                            {
                              "expression": {
                                "id": 4119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4102,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4089,
                                    "src": "966:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 4104,
                                  "indexExpression": {
                                    "id": 4103,
                                    "name": "digits",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4074,
                                    "src": "973:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "966:14:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4116,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 4109,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "996:2:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_48_by_1",
                                              "typeString": "int_const 48"
                                            },
                                            "value": "48"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 4114,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 4112,
                                                  "name": "value",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4057,
                                                  "src": "1009:5:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 4113,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "1017:2:30",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "1009:10:30",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 4111,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1001:7:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4110,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1001:7:30",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4115,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1001:19:30",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "996:24:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 4108,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "990:5:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 4107,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "990:5:30",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4117,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "990:31:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 4106,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "983:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 4105,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "983:6:30",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "983:39:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "966:56:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 4120,
                              "nodeType": "ExpressionStatement",
                              "src": "966:56:30"
                            },
                            {
                              "expression": {
                                "id": 4123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4121,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4057,
                                  "src": "1036:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 4122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1045:2:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "1036:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4124,
                              "nodeType": "ExpressionStatement",
                              "src": "1036:11:30"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4095,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4057,
                            "src": "915:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "924:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "915:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4126,
                        "nodeType": "WhileStatement",
                        "src": "908:150:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4129,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4089,
                              "src": "1081:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1074:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 4127,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1074:6:30",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1074:14:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4061,
                        "id": 4131,
                        "nodeType": "Return",
                        "src": "1067:21:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4055,
                    "nodeType": "StructuredDocumentation",
                    "src": "297:90:30",
                    "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                  },
                  "id": 4133,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "401:8:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4057,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "418:5:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4133,
                        "src": "410:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "410:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "409:15:30"
                  },
                  "returnParameters": {
                    "id": 4061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4060,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4133,
                        "src": "448:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4059,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "447:15:30"
                  },
                  "scope": 4271,
                  "src": "392:703:30",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4173,
                    "nodeType": "Block",
                    "src": "1274:255:30",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4141,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4136,
                            "src": "1288:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1297:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1288:10:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4147,
                        "nodeType": "IfStatement",
                        "src": "1284:54:30",
                        "trueBody": {
                          "id": 4146,
                          "nodeType": "Block",
                          "src": "1300:38:30",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30783030",
                                "id": 4144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1321:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4",
                                  "typeString": "literal_string \"0x00\""
                                },
                                "value": "0x00"
                              },
                              "functionReturnParameters": 4140,
                              "id": 4145,
                              "nodeType": "Return",
                              "src": "1314:13:30"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4149
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4149,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "1355:4:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 4173,
                            "src": "1347:12:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4148,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1347:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4151,
                        "initialValue": {
                          "id": 4150,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4136,
                          "src": "1362:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1347:20:30"
                      },
                      {
                        "assignments": [
                          4153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4153,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1385:6:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 4173,
                            "src": "1377:14:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4152,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1377:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4155,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 4154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1394:1:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1377:18:30"
                      },
                      {
                        "body": {
                          "id": 4166,
                          "nodeType": "Block",
                          "src": "1423:57:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 4160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "1437:8:30",
                                "subExpression": {
                                  "id": 4159,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4153,
                                  "src": "1437:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4161,
                              "nodeType": "ExpressionStatement",
                              "src": "1437:8:30"
                            },
                            {
                              "expression": {
                                "id": 4164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4162,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4149,
                                  "src": "1459:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "38",
                                  "id": 4163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1468:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "1459:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4165,
                              "nodeType": "ExpressionStatement",
                              "src": "1459:10:30"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4156,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4149,
                            "src": "1412:4:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1420:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1412:9:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4167,
                        "nodeType": "WhileStatement",
                        "src": "1405:75:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4169,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4136,
                              "src": "1508:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4170,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4153,
                              "src": "1515:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4168,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4174,
                              4250,
                              4270
                            ],
                            "referencedDeclaration": 4250,
                            "src": "1496:11:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 4171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1496:26:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4140,
                        "id": 4172,
                        "nodeType": "Return",
                        "src": "1489:33:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4134,
                    "nodeType": "StructuredDocumentation",
                    "src": "1101:94:30",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                  },
                  "id": 4174,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1209:11:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4137,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4136,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1229:5:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4174,
                        "src": "1221:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4135,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1221:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1220:15:30"
                  },
                  "returnParameters": {
                    "id": 4140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4139,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4174,
                        "src": "1259:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4138,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1259:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1258:15:30"
                  },
                  "scope": 4271,
                  "src": "1200:329:30",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4249,
                    "nodeType": "Block",
                    "src": "1742:351:30",
                    "statements": [
                      {
                        "assignments": [
                          4185
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4185,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "1765:6:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 4249,
                            "src": "1752:19:30",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4184,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1752:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4194,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 4188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1784:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 4189,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4179,
                                  "src": "1788:6:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1784:10:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 4191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1797:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1784:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1774:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 4186,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1778:5:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 4193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1774:25:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1752:47:30"
                      },
                      {
                        "expression": {
                          "id": 4199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4195,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4185,
                              "src": "1809:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4197,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1816:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1809:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 4198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1821:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                              "typeString": "literal_string \"0\""
                            },
                            "value": "0"
                          },
                          "src": "1809:15:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 4200,
                        "nodeType": "ExpressionStatement",
                        "src": "1809:15:30"
                      },
                      {
                        "expression": {
                          "id": 4205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4201,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4185,
                              "src": "1834:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4203,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 4202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1841:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1834:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "78",
                            "id": 4204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1846:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                              "typeString": "literal_string \"x\""
                            },
                            "value": "x"
                          },
                          "src": "1834:15:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 4206,
                        "nodeType": "ExpressionStatement",
                        "src": "1834:15:30"
                      },
                      {
                        "body": {
                          "id": 4235,
                          "nodeType": "Block",
                          "src": "1904:87:30",
                          "statements": [
                            {
                              "expression": {
                                "id": 4229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4221,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4185,
                                    "src": "1918:6:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 4223,
                                  "indexExpression": {
                                    "id": 4222,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4208,
                                    "src": "1925:1:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1918:9:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 4224,
                                    "name": "_HEX_SYMBOLS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4051,
                                    "src": "1930:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  },
                                  "id": 4228,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4225,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4177,
                                      "src": "1943:5:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 4226,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1951:3:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "1943:11:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1930:25:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "1918:37:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 4230,
                              "nodeType": "ExpressionStatement",
                              "src": "1918:37:30"
                            },
                            {
                              "expression": {
                                "id": 4233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4231,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4177,
                                  "src": "1969:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 4232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1979:1:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "1969:11:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4234,
                              "nodeType": "ExpressionStatement",
                              "src": "1969:11:30"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4215,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4208,
                            "src": "1892:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 4216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1896:1:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1892:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4236,
                        "initializationExpression": {
                          "assignments": [
                            4208
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4208,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1872:1:30",
                              "nodeType": "VariableDeclaration",
                              "scope": 4236,
                              "src": "1864:9:30",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4207,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1864:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4214,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 4209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1876:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 4210,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4179,
                                "src": "1880:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1876:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 4212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1889:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1876:14:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1864:26:30"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "1899:3:30",
                            "subExpression": {
                              "id": 4218,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4208,
                              "src": "1901:1:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4220,
                          "nodeType": "ExpressionStatement",
                          "src": "1899:3:30"
                        },
                        "nodeType": "ForStatement",
                        "src": "1859:132:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4238,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4177,
                                "src": "2008:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2017:1:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2008:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                              "id": 4241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2020:34:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              },
                              "value": "Strings: hex length insufficient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              }
                            ],
                            "id": 4237,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2000:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2000:55:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4243,
                        "nodeType": "ExpressionStatement",
                        "src": "2000:55:30"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4246,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4185,
                              "src": "2079:6:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2072:6:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 4244,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2072:6:30",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2072:14:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4183,
                        "id": 4248,
                        "nodeType": "Return",
                        "src": "2065:21:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4175,
                    "nodeType": "StructuredDocumentation",
                    "src": "1535:112:30",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                  },
                  "id": 4250,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1661:11:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4177,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1681:5:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4250,
                        "src": "1673:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1673:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4179,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "1696:6:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4250,
                        "src": "1688:14:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1688:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1672:31:30"
                  },
                  "returnParameters": {
                    "id": 4183,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4182,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4250,
                        "src": "1727:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4181,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1727:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1726:15:30"
                  },
                  "scope": 4271,
                  "src": "1652:441:30",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4269,
                    "nodeType": "Block",
                    "src": "2318:76:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 4263,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4253,
                                      "src": "2363:4:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 4262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2355:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 4261,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2355:7:30",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2355:13:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 4260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2347:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 4259,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2347:7:30",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2347:22:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4266,
                              "name": "_ADDRESS_LENGTH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4054,
                              "src": "2371:15:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 4258,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4174,
                              4250,
                              4270
                            ],
                            "referencedDeclaration": 4250,
                            "src": "2335:11:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 4267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2335:52:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4257,
                        "id": 4268,
                        "nodeType": "Return",
                        "src": "2328:59:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4251,
                    "nodeType": "StructuredDocumentation",
                    "src": "2099:141:30",
                    "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."
                  },
                  "id": 4270,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "2254:11:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4253,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "2274:4:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4270,
                        "src": "2266:12:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4252,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2266:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2265:14:30"
                  },
                  "returnParameters": {
                    "id": 4257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4256,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4270,
                        "src": "2303:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4255,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2303:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2302:15:30"
                  },
                  "scope": 4271,
                  "src": "2245:149:30",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4272,
              "src": "161:2235:30",
              "usedErrors": []
            }
          ],
          "src": "101:2296:30"
        },
        "id": 30
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
          "exportedSymbols": {
            "ECDSA": [
              4678
            ],
            "Strings": [
              4271
            ]
          },
          "id": 4679,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4273,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:23:31"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "../Strings.sol",
              "id": 4274,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4679,
              "sourceUnit": 4272,
              "src": "137:24:31",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ECDSA",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 4275,
                "nodeType": "StructuredDocumentation",
                "src": "163:205:31",
                "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."
              },
              "fullyImplemented": true,
              "id": 4678,
              "linearizedBaseContracts": [
                4678
              ],
              "name": "ECDSA",
              "nameLocation": "377:5:31",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ECDSA.RecoverError",
                  "id": 4281,
                  "members": [
                    {
                      "id": 4276,
                      "name": "NoError",
                      "nameLocation": "417:7:31",
                      "nodeType": "EnumValue",
                      "src": "417:7:31"
                    },
                    {
                      "id": 4277,
                      "name": "InvalidSignature",
                      "nameLocation": "434:16:31",
                      "nodeType": "EnumValue",
                      "src": "434:16:31"
                    },
                    {
                      "id": 4278,
                      "name": "InvalidSignatureLength",
                      "nameLocation": "460:22:31",
                      "nodeType": "EnumValue",
                      "src": "460:22:31"
                    },
                    {
                      "id": 4279,
                      "name": "InvalidSignatureS",
                      "nameLocation": "492:17:31",
                      "nodeType": "EnumValue",
                      "src": "492:17:31"
                    },
                    {
                      "id": 4280,
                      "name": "InvalidSignatureV",
                      "nameLocation": "519:17:31",
                      "nodeType": "EnumValue",
                      "src": "519:17:31"
                    }
                  ],
                  "name": "RecoverError",
                  "nameLocation": "394:12:31",
                  "nodeType": "EnumDefinition",
                  "src": "389:153:31"
                },
                {
                  "body": {
                    "id": 4334,
                    "nodeType": "Block",
                    "src": "602:577:31",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_RecoverError_$4281",
                            "typeString": "enum ECDSA.RecoverError"
                          },
                          "id": 4290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4287,
                            "name": "error",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4284,
                            "src": "616:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$4281",
                              "typeString": "enum ECDSA.RecoverError"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 4288,
                              "name": "RecoverError",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4281,
                              "src": "625:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                "typeString": "type(enum ECDSA.RecoverError)"
                              }
                            },
                            "id": 4289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NoError",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4276,
                            "src": "625:20:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$4281",
                              "typeString": "enum ECDSA.RecoverError"
                            }
                          },
                          "src": "616:29:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_RecoverError_$4281",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "id": 4296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4293,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4284,
                              "src": "712:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 4294,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4281,
                                "src": "721:12:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                  "typeString": "type(enum ECDSA.RecoverError)"
                                }
                              },
                              "id": 4295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "InvalidSignature",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4277,
                              "src": "721:29:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "src": "712:38:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              },
                              "id": 4305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4302,
                                "name": "error",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4284,
                                "src": "821:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$4281",
                                  "typeString": "enum ECDSA.RecoverError"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 4303,
                                  "name": "RecoverError",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4281,
                                  "src": "830:12:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                    "typeString": "type(enum ECDSA.RecoverError)"
                                  }
                                },
                                "id": 4304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "InvalidSignatureLength",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4278,
                                "src": "830:35:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$4281",
                                  "typeString": "enum ECDSA.RecoverError"
                                }
                              },
                              "src": "821:44:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_RecoverError_$4281",
                                  "typeString": "enum ECDSA.RecoverError"
                                },
                                "id": 4314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4311,
                                  "name": "error",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4284,
                                  "src": "943:5:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$4281",
                                    "typeString": "enum ECDSA.RecoverError"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 4312,
                                    "name": "RecoverError",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4281,
                                    "src": "952:12:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                      "typeString": "type(enum ECDSA.RecoverError)"
                                    }
                                  },
                                  "id": 4313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "InvalidSignatureS",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4279,
                                  "src": "952:30:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$4281",
                                    "typeString": "enum ECDSA.RecoverError"
                                  }
                                },
                                "src": "943:39:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_RecoverError_$4281",
                                    "typeString": "enum ECDSA.RecoverError"
                                  },
                                  "id": 4323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4320,
                                    "name": "error",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4284,
                                    "src": "1063:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$4281",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 4321,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4281,
                                      "src": "1072:12:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 4322,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureV",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4280,
                                    "src": "1072:30:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$4281",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  "src": "1063:39:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 4329,
                                "nodeType": "IfStatement",
                                "src": "1059:114:31",
                                "trueBody": {
                                  "id": 4328,
                                  "nodeType": "Block",
                                  "src": "1104:69:31",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c7565",
                                            "id": 4325,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1125:36:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4",
                                              "typeString": "literal_string \"ECDSA: invalid signature 'v' value\""
                                            },
                                            "value": "ECDSA: invalid signature 'v' value"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4",
                                              "typeString": "literal_string \"ECDSA: invalid signature 'v' value\""
                                            }
                                          ],
                                          "id": 4324,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "1118:6:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 4326,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1118:44:31",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4327,
                                      "nodeType": "ExpressionStatement",
                                      "src": "1118:44:31"
                                    }
                                  ]
                                }
                              },
                              "id": 4330,
                              "nodeType": "IfStatement",
                              "src": "939:234:31",
                              "trueBody": {
                                "id": 4319,
                                "nodeType": "Block",
                                "src": "984:69:31",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c7565",
                                          "id": 4316,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1005:36:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd",
                                            "typeString": "literal_string \"ECDSA: invalid signature 's' value\""
                                          },
                                          "value": "ECDSA: invalid signature 's' value"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd",
                                            "typeString": "literal_string \"ECDSA: invalid signature 's' value\""
                                          }
                                        ],
                                        "id": 4315,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "998:6:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 4317,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "998:44:31",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 4318,
                                    "nodeType": "ExpressionStatement",
                                    "src": "998:44:31"
                                  }
                                ]
                              }
                            },
                            "id": 4331,
                            "nodeType": "IfStatement",
                            "src": "817:356:31",
                            "trueBody": {
                              "id": 4310,
                              "nodeType": "Block",
                              "src": "867:66:31",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468",
                                        "id": 4307,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "888:33:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77",
                                          "typeString": "literal_string \"ECDSA: invalid signature length\""
                                        },
                                        "value": "ECDSA: invalid signature length"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77",
                                          "typeString": "literal_string \"ECDSA: invalid signature length\""
                                        }
                                      ],
                                      "id": 4306,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -19,
                                        -19
                                      ],
                                      "referencedDeclaration": -19,
                                      "src": "881:6:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 4308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "881:41:31",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 4309,
                                  "nodeType": "ExpressionStatement",
                                  "src": "881:41:31"
                                }
                              ]
                            }
                          },
                          "id": 4332,
                          "nodeType": "IfStatement",
                          "src": "708:465:31",
                          "trueBody": {
                            "id": 4301,
                            "nodeType": "Block",
                            "src": "752:59:31",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "45434453413a20696e76616c6964207369676e6174757265",
                                      "id": 4298,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "773:26:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be",
                                        "typeString": "literal_string \"ECDSA: invalid signature\""
                                      },
                                      "value": "ECDSA: invalid signature"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be",
                                        "typeString": "literal_string \"ECDSA: invalid signature\""
                                      }
                                    ],
                                    "id": 4297,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "766:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 4299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "766:34:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4300,
                                "nodeType": "ExpressionStatement",
                                "src": "766:34:31"
                              }
                            ]
                          }
                        },
                        "id": 4333,
                        "nodeType": "IfStatement",
                        "src": "612:561:31",
                        "trueBody": {
                          "id": 4292,
                          "nodeType": "Block",
                          "src": "647:55:31",
                          "statements": [
                            {
                              "functionReturnParameters": 4286,
                              "id": 4291,
                              "nodeType": "Return",
                              "src": "661:7:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 4335,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_throwError",
                  "nameLocation": "557:11:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4284,
                        "mutability": "mutable",
                        "name": "error",
                        "nameLocation": "582:5:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4335,
                        "src": "569:18:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$4281",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 4283,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4282,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4281,
                            "src": "569:12:31"
                          },
                          "referencedDeclaration": 4281,
                          "src": "569:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$4281",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "568:20:31"
                  },
                  "returnParameters": {
                    "id": 4286,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "602:0:31"
                  },
                  "scope": 4678,
                  "src": "548:631:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4399,
                    "nodeType": "Block",
                    "src": "2347:1269:31",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 4348,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4340,
                              "src": "2554:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2554:16:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "3635",
                            "id": 4350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2574:2:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_65_by_1",
                              "typeString": "int_const 65"
                            },
                            "value": "65"
                          },
                          "src": "2554:22:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 4370,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4340,
                                "src": "3083:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3083:16:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "3634",
                              "id": 4372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3103:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_64_by_1",
                                "typeString": "int_const 64"
                              },
                              "value": "64"
                            },
                            "src": "3083:22:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 4396,
                            "nodeType": "Block",
                            "src": "3529:81:31",
                            "statements": [
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 4390,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3559:1:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 4389,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3551:7:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 4388,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3551:7:31",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4391,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3551:10:31",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 4392,
                                        "name": "RecoverError",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4281,
                                        "src": "3563:12:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                          "typeString": "type(enum ECDSA.RecoverError)"
                                        }
                                      },
                                      "id": 4393,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "InvalidSignatureLength",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4278,
                                      "src": "3563:35:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_RecoverError_$4281",
                                        "typeString": "enum ECDSA.RecoverError"
                                      }
                                    }
                                  ],
                                  "id": 4394,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3550:49:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                                    "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                  }
                                },
                                "functionReturnParameters": 4347,
                                "id": 4395,
                                "nodeType": "Return",
                                "src": "3543:56:31"
                              }
                            ]
                          },
                          "id": 4397,
                          "nodeType": "IfStatement",
                          "src": "3079:531:31",
                          "trueBody": {
                            "id": 4387,
                            "nodeType": "Block",
                            "src": "3107:416:31",
                            "statements": [
                              {
                                "assignments": [
                                  4375
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 4375,
                                    "mutability": "mutable",
                                    "name": "r",
                                    "nameLocation": "3129:1:31",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4387,
                                    "src": "3121:9:31",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 4374,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3121:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 4376,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3121:9:31"
                              },
                              {
                                "assignments": [
                                  4378
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 4378,
                                    "mutability": "mutable",
                                    "name": "vs",
                                    "nameLocation": "3152:2:31",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4387,
                                    "src": "3144:10:31",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 4377,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3144:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 4379,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3144:10:31"
                              },
                              {
                                "AST": {
                                  "nodeType": "YulBlock",
                                  "src": "3355:114:31",
                                  "statements": [
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "3373:32:31",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "3388:9:31"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3399:4:31",
                                                "type": "",
                                                "value": "0x20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3384:3:31"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3384:20:31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3378:5:31"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3378:27:31"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "r",
                                          "nodeType": "YulIdentifier",
                                          "src": "3373:1:31"
                                        }
                                      ]
                                    },
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "3422:33:31",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "3438:9:31"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3449:4:31",
                                                "type": "",
                                                "value": "0x40"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3434:3:31"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3434:20:31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3428:5:31"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3428:27:31"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "vs",
                                          "nodeType": "YulIdentifier",
                                          "src": "3422:2:31"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "documentation": "@solidity memory-safe-assembly",
                                "evmVersion": "london",
                                "externalReferences": [
                                  {
                                    "declaration": 4375,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3373:1:31",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 4340,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3388:9:31",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 4340,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3438:9:31",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 4378,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3422:2:31",
                                    "valueSize": 1
                                  }
                                ],
                                "id": 4380,
                                "nodeType": "InlineAssembly",
                                "src": "3346:123:31"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 4382,
                                      "name": "hash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4338,
                                      "src": "3500:4:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 4383,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4375,
                                      "src": "3506:1:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 4384,
                                      "name": "vs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4378,
                                      "src": "3509:2:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 4381,
                                    "name": "tryRecover",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      4400,
                                      4474,
                                      4585
                                    ],
                                    "referencedDeclaration": 4474,
                                    "src": "3489:10:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$4281_$",
                                      "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                                    }
                                  },
                                  "id": 4385,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3489:23:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                                    "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                  }
                                },
                                "functionReturnParameters": 4347,
                                "id": 4386,
                                "nodeType": "Return",
                                "src": "3482:30:31"
                              }
                            ]
                          }
                        },
                        "id": 4398,
                        "nodeType": "IfStatement",
                        "src": "2550:1060:31",
                        "trueBody": {
                          "id": 4369,
                          "nodeType": "Block",
                          "src": "2578:495:31",
                          "statements": [
                            {
                              "assignments": [
                                4353
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4353,
                                  "mutability": "mutable",
                                  "name": "r",
                                  "nameLocation": "2600:1:31",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4369,
                                  "src": "2592:9:31",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 4352,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2592:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4354,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2592:9:31"
                            },
                            {
                              "assignments": [
                                4356
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4356,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nameLocation": "2623:1:31",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4369,
                                  "src": "2615:9:31",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 4355,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2615:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4357,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2615:9:31"
                            },
                            {
                              "assignments": [
                                4359
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4359,
                                  "mutability": "mutable",
                                  "name": "v",
                                  "nameLocation": "2644:1:31",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4369,
                                  "src": "2638:7:31",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 4358,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2638:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4360,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2638:7:31"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "2846:171:31",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2864:32:31",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "2879:9:31"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2890:4:31",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2875:3:31"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2875:20:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2869:5:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2869:27:31"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "2864:1:31"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2913:32:31",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "2928:9:31"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2939:4:31",
                                              "type": "",
                                              "value": "0x40"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2924:3:31"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2924:20:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2918:5:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2918:27:31"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "s",
                                        "nodeType": "YulIdentifier",
                                        "src": "2913:1:31"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2962:41:31",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2972:1:31",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "signature",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2985:9:31"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2996:4:31",
                                                  "type": "",
                                                  "value": "0x60"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2981:3:31"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2981:20:31"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2975:5:31"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2975:27:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "byte",
                                        "nodeType": "YulIdentifier",
                                        "src": "2967:4:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2967:36:31"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "v",
                                        "nodeType": "YulIdentifier",
                                        "src": "2962:1:31"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "documentation": "@solidity memory-safe-assembly",
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 4353,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2864:1:31",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4356,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2913:1:31",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4340,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2879:9:31",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4340,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2928:9:31",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4340,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2985:9:31",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4359,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2962:1:31",
                                  "valueSize": 1
                                }
                              ],
                              "id": 4361,
                              "nodeType": "InlineAssembly",
                              "src": "2837:180:31"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4363,
                                    "name": "hash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4338,
                                    "src": "3048:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 4364,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4359,
                                    "src": "3054:1:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "id": 4365,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4353,
                                    "src": "3057:1:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 4366,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4356,
                                    "src": "3060:1:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 4362,
                                  "name": "tryRecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    4400,
                                    4474,
                                    4585
                                  ],
                                  "referencedDeclaration": 4585,
                                  "src": "3037:10:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$4281_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                                  }
                                },
                                "id": 4367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3037:25:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 4347,
                              "id": 4368,
                              "nodeType": "Return",
                              "src": "3030:32:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4336,
                    "nodeType": "StructuredDocumentation",
                    "src": "1185:1053:31",
                    "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"
                  },
                  "id": 4400,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "2252:10:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4341,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4338,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "2271:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4400,
                        "src": "2263:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4337,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4340,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2290:9:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4400,
                        "src": "2277:22:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4339,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2277:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2262:38:31"
                  },
                  "returnParameters": {
                    "id": 4347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4343,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4400,
                        "src": "2324:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2324:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4346,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4400,
                        "src": "2333:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$4281",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 4345,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4344,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4281,
                            "src": "2333:12:31"
                          },
                          "referencedDeclaration": 4281,
                          "src": "2333:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$4281",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2323:23:31"
                  },
                  "scope": 4678,
                  "src": "2243:1373:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4426,
                    "nodeType": "Block",
                    "src": "4489:140:31",
                    "statements": [
                      {
                        "assignments": [
                          4411,
                          4414
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4411,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "4508:9:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4426,
                            "src": "4500:17:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4410,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4500:7:31",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4414,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "4532:5:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4426,
                            "src": "4519:18:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$4281",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 4413,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 4412,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4281,
                                "src": "4519:12:31"
                              },
                              "referencedDeclaration": 4281,
                              "src": "4519:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4419,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4416,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4403,
                              "src": "4552:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4417,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4405,
                              "src": "4558:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4415,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4400,
                              4474,
                              4585
                            ],
                            "referencedDeclaration": 4400,
                            "src": "4541:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$4281_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 4418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4541:27:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4499:69:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4421,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4414,
                              "src": "4590:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            ],
                            "id": 4420,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4335,
                            "src": "4578:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$4281_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError) pure"
                            }
                          },
                          "id": 4422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4578:18:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4423,
                        "nodeType": "ExpressionStatement",
                        "src": "4578:18:31"
                      },
                      {
                        "expression": {
                          "id": 4424,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4411,
                          "src": "4613:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4409,
                        "id": 4425,
                        "nodeType": "Return",
                        "src": "4606:16:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4401,
                    "nodeType": "StructuredDocumentation",
                    "src": "3622:775:31",
                    "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."
                  },
                  "id": 4427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "4411:7:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4406,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4403,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4427:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4427,
                        "src": "4419:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4402,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4419:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4405,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "4446:9:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4427,
                        "src": "4433:22:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4404,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4433:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4418:38:31"
                  },
                  "returnParameters": {
                    "id": 4409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4408,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4427,
                        "src": "4480:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4407,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4480:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4479:9:31"
                  },
                  "scope": 4678,
                  "src": "4402:227:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4473,
                    "nodeType": "Block",
                    "src": "5016:203:31",
                    "statements": [
                      {
                        "assignments": [
                          4443
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4443,
                            "mutability": "mutable",
                            "name": "s",
                            "nameLocation": "5034:1:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4473,
                            "src": "5026:9:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4442,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5026:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4450,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4444,
                            "name": "vs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4434,
                            "src": "5038:2:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
                                "id": 4447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5051:66:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                                  "typeString": "int_const 5789...(69 digits omitted)...9967"
                                },
                                "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                                  "typeString": "int_const 5789...(69 digits omitted)...9967"
                                }
                              ],
                              "id": 4446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5043:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4445,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "5043:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5043:75:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5038:80:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5026:92:31"
                      },
                      {
                        "assignments": [
                          4452
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4452,
                            "mutability": "mutable",
                            "name": "v",
                            "nameLocation": "5134:1:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4473,
                            "src": "5128:7:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 4451,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5128:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4465,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 4457,
                                          "name": "vs",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4434,
                                          "src": "5153:2:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 4456,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5145:7:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4455,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5145:7:31",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4458,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5145:11:31",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">>",
                                    "rightExpression": {
                                      "hexValue": "323535",
                                      "id": 4459,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5160:3:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_255_by_1",
                                        "typeString": "int_const 255"
                                      },
                                      "value": "255"
                                    },
                                    "src": "5145:18:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4461,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5144:20:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "3237",
                                "id": 4462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5167:2:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_27_by_1",
                                  "typeString": "int_const 27"
                                },
                                "value": "27"
                              },
                              "src": "5144:25:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5138:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 4453,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5138:5:31",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5138:32:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5128:42:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4467,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4430,
                              "src": "5198:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4468,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4452,
                              "src": "5204:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 4469,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4432,
                              "src": "5207:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4470,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4443,
                              "src": "5210:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4466,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4400,
                              4474,
                              4585
                            ],
                            "referencedDeclaration": 4585,
                            "src": "5187:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$4281_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 4471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5187:25:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "functionReturnParameters": 4441,
                        "id": 4472,
                        "nodeType": "Return",
                        "src": "5180:32:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4428,
                    "nodeType": "StructuredDocumentation",
                    "src": "4635:243:31",
                    "text": " @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"
                  },
                  "id": 4474,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "4892:10:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4430,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4920:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4474,
                        "src": "4912:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4429,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4912:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4432,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4942:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4474,
                        "src": "4934:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4431,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4934:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4434,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "4961:2:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4474,
                        "src": "4953:10:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4433,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4953:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4902:67:31"
                  },
                  "returnParameters": {
                    "id": 4441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4437,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4474,
                        "src": "4993:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4436,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4993:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4440,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4474,
                        "src": "5002:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$4281",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 4439,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4438,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4281,
                            "src": "5002:12:31"
                          },
                          "referencedDeclaration": 4281,
                          "src": "5002:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$4281",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4992:23:31"
                  },
                  "scope": 4678,
                  "src": "4883:336:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4503,
                    "nodeType": "Block",
                    "src": "5500:136:31",
                    "statements": [
                      {
                        "assignments": [
                          4487,
                          4490
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4487,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "5519:9:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4503,
                            "src": "5511:17:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4486,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5511:7:31",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4490,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "5543:5:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4503,
                            "src": "5530:18:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$4281",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 4489,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 4488,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4281,
                                "src": "5530:12:31"
                              },
                              "referencedDeclaration": 4281,
                              "src": "5530:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4496,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4492,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4477,
                              "src": "5563:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4493,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4479,
                              "src": "5569:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4494,
                              "name": "vs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4481,
                              "src": "5572:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4491,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4400,
                              4474,
                              4585
                            ],
                            "referencedDeclaration": 4474,
                            "src": "5552:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$4281_$",
                              "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 4495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5552:23:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5510:65:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4498,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4490,
                              "src": "5597:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            ],
                            "id": 4497,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4335,
                            "src": "5585:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$4281_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError) pure"
                            }
                          },
                          "id": 4499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5585:18:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4500,
                        "nodeType": "ExpressionStatement",
                        "src": "5585:18:31"
                      },
                      {
                        "expression": {
                          "id": 4501,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4487,
                          "src": "5620:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4485,
                        "id": 4502,
                        "nodeType": "Return",
                        "src": "5613:16:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4475,
                    "nodeType": "StructuredDocumentation",
                    "src": "5225:154:31",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"
                  },
                  "id": 4504,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "5393:7:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4477,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5418:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4504,
                        "src": "5410:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4476,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5410:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4479,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "5440:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4504,
                        "src": "5432:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4478,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5432:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4481,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "5459:2:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4504,
                        "src": "5451:10:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4480,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5451:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5400:67:31"
                  },
                  "returnParameters": {
                    "id": 4485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4484,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4504,
                        "src": "5491:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4483,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5491:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5490:9:31"
                  },
                  "scope": 4678,
                  "src": "5384:252:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4584,
                    "nodeType": "Block",
                    "src": "5959:1454:31",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 4523,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4513,
                                "src": "6855:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 4522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6847:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 4521,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6847:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6847:10:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130",
                            "id": 4525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6860:66:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1",
                              "typeString": "int_const 5789...(69 digits omitted)...7168"
                            },
                            "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
                          },
                          "src": "6847:79:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4536,
                        "nodeType": "IfStatement",
                        "src": "6843:161:31",
                        "trueBody": {
                          "id": 4535,
                          "nodeType": "Block",
                          "src": "6928:76:31",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 4529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6958:1:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4528,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6950:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4527,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6950:7:31",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6950:10:31",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 4531,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4281,
                                      "src": "6962:12:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 4532,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureS",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4279,
                                    "src": "6962:30:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$4281",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  }
                                ],
                                "id": 4533,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6949:44:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 4520,
                              "id": 4534,
                              "nodeType": "Return",
                              "src": "6942:51:31"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 4539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4537,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4509,
                              "src": "7017:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "3237",
                              "id": 4538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7022:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_27_by_1",
                                "typeString": "int_const 27"
                              },
                              "value": "27"
                            },
                            "src": "7017:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 4542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4540,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4509,
                              "src": "7028:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "3238",
                              "id": 4541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7033:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_28_by_1",
                                "typeString": "int_const 28"
                              },
                              "value": "28"
                            },
                            "src": "7028:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7017:18:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4553,
                        "nodeType": "IfStatement",
                        "src": "7013:100:31",
                        "trueBody": {
                          "id": 4552,
                          "nodeType": "Block",
                          "src": "7037:76:31",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 4546,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7067:1:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4545,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7059:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4544,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7059:7:31",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7059:10:31",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 4548,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4281,
                                      "src": "7071:12:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 4549,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignatureV",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4280,
                                    "src": "7071:30:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$4281",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  }
                                ],
                                "id": 4550,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7058:44:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 4520,
                              "id": 4551,
                              "nodeType": "Return",
                              "src": "7051:51:31"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4555
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4555,
                            "mutability": "mutable",
                            "name": "signer",
                            "nameLocation": "7215:6:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4584,
                            "src": "7207:14:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4554,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7207:7:31",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4562,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4557,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4507,
                              "src": "7234:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4558,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4509,
                              "src": "7240:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 4559,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "7243:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4560,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4513,
                              "src": "7246:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4556,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "7224:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 4561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7224:24:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7207:41:31"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4563,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4555,
                            "src": "7262:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 4566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7280:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7272:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4564,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7272:7:31",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7272:10:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7262:20:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4578,
                        "nodeType": "IfStatement",
                        "src": "7258:101:31",
                        "trueBody": {
                          "id": 4577,
                          "nodeType": "Block",
                          "src": "7284:75:31",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 4571,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7314:1:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4570,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7306:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4569,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7306:7:31",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4572,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7306:10:31",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 4573,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4281,
                                      "src": "7318:12:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 4574,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "InvalidSignature",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4277,
                                    "src": "7318:29:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$4281",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  }
                                ],
                                "id": 4575,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7305:43:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError)"
                                }
                              },
                              "functionReturnParameters": 4520,
                              "id": 4576,
                              "nodeType": "Return",
                              "src": "7298:50:31"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 4579,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4555,
                              "src": "7377:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 4580,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4281,
                                "src": "7385:12:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$4281_$",
                                  "typeString": "type(enum ECDSA.RecoverError)"
                                }
                              },
                              "id": 4581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "NoError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4276,
                              "src": "7385:20:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "id": 4582,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7376:30:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "functionReturnParameters": 4520,
                        "id": 4583,
                        "nodeType": "Return",
                        "src": "7369:37:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4505,
                    "nodeType": "StructuredDocumentation",
                    "src": "5642:163:31",
                    "text": " @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"
                  },
                  "id": 4585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "5819:10:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4514,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4507,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5847:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4585,
                        "src": "5839:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4506,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5839:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4509,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "5867:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4585,
                        "src": "5861:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4508,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5861:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4511,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "5886:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4585,
                        "src": "5878:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4510,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5878:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4513,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "5905:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4585,
                        "src": "5897:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4512,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5897:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5829:83:31"
                  },
                  "returnParameters": {
                    "id": 4520,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4516,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4585,
                        "src": "5936:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4515,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5936:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4519,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4585,
                        "src": "5945:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$4281",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 4518,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4517,
                            "name": "RecoverError",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4281,
                            "src": "5945:12:31"
                          },
                          "referencedDeclaration": 4281,
                          "src": "5945:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$4281",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5935:23:31"
                  },
                  "scope": 4678,
                  "src": "5810:1603:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4617,
                    "nodeType": "Block",
                    "src": "7678:138:31",
                    "statements": [
                      {
                        "assignments": [
                          4600,
                          4603
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4600,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "7697:9:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4617,
                            "src": "7689:17:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4599,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7689:7:31",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4603,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "7721:5:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4617,
                            "src": "7708:18:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$4281",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 4602,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 4601,
                                "name": "RecoverError",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4281,
                                "src": "7708:12:31"
                              },
                              "referencedDeclaration": 4281,
                              "src": "7708:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4610,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4605,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4588,
                              "src": "7741:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4606,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4590,
                              "src": "7747:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 4607,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4592,
                              "src": "7750:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4608,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4594,
                              "src": "7753:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4604,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4400,
                              4474,
                              4585
                            ],
                            "referencedDeclaration": 4585,
                            "src": "7730:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$4281_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"
                            }
                          },
                          "id": 4609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7730:25:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$4281_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7688:67:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4612,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4603,
                              "src": "7777:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$4281",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            ],
                            "id": 4611,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4335,
                            "src": "7765:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$4281_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError) pure"
                            }
                          },
                          "id": 4613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7765:18:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4614,
                        "nodeType": "ExpressionStatement",
                        "src": "7765:18:31"
                      },
                      {
                        "expression": {
                          "id": 4615,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4600,
                          "src": "7800:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4598,
                        "id": 4616,
                        "nodeType": "Return",
                        "src": "7793:16:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4586,
                    "nodeType": "StructuredDocumentation",
                    "src": "7419:122:31",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."
                  },
                  "id": 4618,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "7555:7:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4595,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4588,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "7580:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4618,
                        "src": "7572:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4587,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7572:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4590,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "7600:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4618,
                        "src": "7594:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4589,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "7594:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4592,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "7619:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4618,
                        "src": "7611:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4591,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7611:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4594,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "7638:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4618,
                        "src": "7630:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4593,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7630:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7562:83:31"
                  },
                  "returnParameters": {
                    "id": 4598,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4597,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4618,
                        "src": "7669:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7669:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7668:9:31"
                  },
                  "scope": 4678,
                  "src": "7546:270:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4634,
                    "nodeType": "Block",
                    "src": "8184:187:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                                  "id": 4629,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8322:34:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                  },
                                  "value": "\u0019Ethereum Signed Message:\n32"
                                },
                                {
                                  "id": 4630,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4621,
                                  "src": "8358:4:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 4627,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8305:3:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8305:16:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 4631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8305:58:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4626,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8295:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8295:69:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 4625,
                        "id": 4633,
                        "nodeType": "Return",
                        "src": "8288:76:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4619,
                    "nodeType": "StructuredDocumentation",
                    "src": "7822:279:31",
                    "text": " @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."
                  },
                  "id": 4635,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "8115:22:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4621,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "8146:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4635,
                        "src": "8138:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4620,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8138:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8137:14:31"
                  },
                  "returnParameters": {
                    "id": 4625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4624,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4635,
                        "src": "8175:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4623,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8175:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8174:9:31"
                  },
                  "scope": 4678,
                  "src": "8106:265:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4656,
                    "nodeType": "Block",
                    "src": "8736:116:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a",
                                  "id": 4646,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8780:32:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""
                                  },
                                  "value": "\u0019Ethereum Signed Message:\n"
                                },
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 4649,
                                        "name": "s",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4638,
                                        "src": "8831:1:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 4650,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "8831:8:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 4647,
                                      "name": "Strings",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4271,
                                      "src": "8814:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                        "typeString": "type(library Strings)"
                                      }
                                    },
                                    "id": 4648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4133,
                                    "src": "8814:16:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 4651,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8814:26:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 4652,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4638,
                                  "src": "8842:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 4644,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8763:3:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8763:16:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 4653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8763:81:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4643,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "8753:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8753:92:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 4642,
                        "id": 4655,
                        "nodeType": "Return",
                        "src": "8746:99:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4636,
                    "nodeType": "StructuredDocumentation",
                    "src": "8377:274:31",
                    "text": " @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."
                  },
                  "id": 4657,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "8665:22:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4638,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "8701:1:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4657,
                        "src": "8688:14:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4637,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8688:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8687:16:31"
                  },
                  "returnParameters": {
                    "id": 4642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4641,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4657,
                        "src": "8727:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4640,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8727:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8726:9:31"
                  },
                  "scope": 4678,
                  "src": "8656:196:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4676,
                    "nodeType": "Block",
                    "src": "9293:92:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 4670,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9337:10:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 4671,
                                  "name": "domainSeparator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4660,
                                  "src": "9349:15:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 4672,
                                  "name": "structHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4662,
                                  "src": "9366:10:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 4668,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9320:3:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "9320:16:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 4673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9320:57:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4667,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9310:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9310:68:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 4666,
                        "id": 4675,
                        "nodeType": "Return",
                        "src": "9303:75:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4658,
                    "nodeType": "StructuredDocumentation",
                    "src": "8858:328:31",
                    "text": " @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."
                  },
                  "id": 4677,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toTypedDataHash",
                  "nameLocation": "9200:15:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4660,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "9224:15:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4677,
                        "src": "9216:23:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4659,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9216:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4662,
                        "mutability": "mutable",
                        "name": "structHash",
                        "nameLocation": "9249:10:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4677,
                        "src": "9241:18:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4661,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9241:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9215:45:31"
                  },
                  "returnParameters": {
                    "id": 4666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4665,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4677,
                        "src": "9284:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4664,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9284:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9283:9:31"
                  },
                  "scope": 4678,
                  "src": "9191:194:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4679,
              "src": "369:9018:31",
              "usedErrors": []
            }
          ],
          "src": "112:9276:31"
        },
        "id": 31
      },
      "contracts/Artist.sol": {
        "ast": {
          "absolutePath": "contracts/Artist.sol",
          "exportedSymbols": {
            "Artist": [
              5343
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "OwnableUpgradeable": [
              131
            ],
            "Strings": [
              4271
            ]
          },
          "id": 5344,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4680,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:23:32"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "id": 4683,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5344,
              "sourceUnit": 151,
              "src": "547:127:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4681,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 150,
                    "src": "555:19:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4682,
                    "name": "IERC165Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2987,
                    "src": "576:18:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "id": 4685,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5344,
              "sourceUnit": 1719,
              "src": "675:105:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4684,
                    "name": "ERC721Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1718,
                    "src": "683:17:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 4687,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5344,
              "sourceUnit": 132,
              "src": "781:101:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4686,
                    "name": "OwnableUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 131,
                    "src": "789:18:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "@openzeppelin/contracts/utils/Strings.sol",
              "id": 4689,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5344,
              "sourceUnit": 4272,
              "src": "883:66:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4688,
                    "name": "Strings",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4271,
                    "src": "891:7:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 4691,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5344,
              "sourceUnit": 2239,
              "src": "950:102:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4690,
                    "name": "CountersUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2238,
                    "src": "958:19:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4693,
                    "name": "ERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1718,
                    "src": "1219:17:32"
                  },
                  "id": 4694,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1219:17:32"
                },
                {
                  "baseName": {
                    "id": 4695,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 150,
                    "src": "1238:19:32"
                  },
                  "id": 4696,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1238:19:32"
                },
                {
                  "baseName": {
                    "id": 4697,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "1259:18:32"
                  },
                  "id": 4698,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1259:18:32"
                }
              ],
              "canonicalName": "Artist",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4692,
                "nodeType": "StructuredDocumentation",
                "src": "1155:44:32",
                "text": " @title Artist\n @author SoundXYZ"
              },
              "fullyImplemented": true,
              "id": 5343,
              "linearizedBaseContracts": [
                5343,
                131,
                150,
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "Artist",
              "nameLocation": "1209:6:32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 4701,
                  "libraryName": {
                    "id": 4699,
                    "name": "Strings",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4271,
                    "src": "1353:7:32"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1347:26:32",
                  "typeName": {
                    "id": 4700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1365:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 4705,
                  "libraryName": {
                    "id": 4702,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "1384:19:32"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1378:58:32",
                  "typeName": {
                    "id": 4704,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4703,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "1408:27:32"
                    },
                    "referencedDeclaration": 2170,
                    "src": "1408:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "canonicalName": "Artist.Edition",
                  "id": 4720,
                  "members": [
                    {
                      "constant": false,
                      "id": 4707,
                      "mutability": "mutable",
                      "name": "fundingRecipient",
                      "nameLocation": "1581:16:32",
                      "nodeType": "VariableDeclaration",
                      "scope": 4720,
                      "src": "1565:32:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 4706,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1565:15:32",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4709,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "1678:5:32",
                      "nodeType": "VariableDeclaration",
                      "scope": 4720,
                      "src": "1670:13:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4708,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1670:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4711,
                      "mutability": "mutable",
                      "name": "numSold",
                      "nameLocation": "1745:7:32",
                      "nodeType": "VariableDeclaration",
                      "scope": 4720,
                      "src": "1738:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 4710,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1738:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4713,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "1827:8:32",
                      "nodeType": "VariableDeclaration",
                      "scope": 4720,
                      "src": "1820:15:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 4712,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1820:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4715,
                      "mutability": "mutable",
                      "name": "royaltyBPS",
                      "nameLocation": "1885:10:32",
                      "nodeType": "VariableDeclaration",
                      "scope": 4720,
                      "src": "1878:17:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 4714,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1878:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4717,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "1980:9:32",
                      "nodeType": "VariableDeclaration",
                      "scope": 4720,
                      "src": "1973:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 4716,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1973:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4719,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "2072:7:32",
                      "nodeType": "VariableDeclaration",
                      "scope": 4720,
                      "src": "2065:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 4718,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2065:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Edition",
                  "nameLocation": "1491:7:32",
                  "nodeType": "StructDefinition",
                  "scope": 5343,
                  "src": "1484:602:32",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4722,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "2150:7:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5343,
                  "src": "2134:23:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4721,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2134:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4725,
                  "mutability": "mutable",
                  "name": "atTokenId",
                  "nameLocation": "2200:9:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5343,
                  "src": "2164:45:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 4724,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4723,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2164:27:32"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2164:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 4728,
                  "mutability": "mutable",
                  "name": "atEditionId",
                  "nameLocation": "2251:11:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5343,
                  "src": "2215:47:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 4727,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4726,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2215:27:32"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2215:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "279c806e",
                  "id": 4733,
                  "mutability": "mutable",
                  "name": "editions",
                  "nameLocation": "2354:8:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5343,
                  "src": "2319:43:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                    "typeString": "mapping(uint256 => struct Artist.Edition)"
                  },
                  "typeName": {
                    "id": 4732,
                    "keyType": {
                      "id": 4729,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2327:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2319:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                      "typeString": "mapping(uint256 => struct Artist.Edition)"
                    },
                    "valueType": {
                      "id": 4731,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 4730,
                        "name": "Edition",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 4720,
                        "src": "2338:7:32"
                      },
                      "referencedDeclaration": 4720,
                      "src": "2338:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Edition_$4720_storage_ptr",
                        "typeString": "struct Artist.Edition"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "602787ed",
                  "id": 4737,
                  "mutability": "mutable",
                  "name": "tokenToEdition",
                  "nameLocation": "2445:14:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5343,
                  "src": "2410:49:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 4736,
                    "keyType": {
                      "id": 4734,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2418:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2410:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 4735,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2429:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e1a3d573",
                  "id": 4741,
                  "mutability": "mutable",
                  "name": "depositedForEdition",
                  "nameLocation": "2573:19:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5343,
                  "src": "2538:54:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 4740,
                    "keyType": {
                      "id": 4738,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2546:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2538:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 4739,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2557:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d3bb0528",
                  "id": 4745,
                  "mutability": "mutable",
                  "name": "withdrawnForEdition",
                  "nameLocation": "2714:19:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5343,
                  "src": "2679:54:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 4744,
                    "keyType": {
                      "id": 4742,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2687:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2679:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 4743,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2698:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b3131d7d301f8caeb40981cffc627b1fdf324b5e4a23845b61c1a6ad2a25f385",
                  "id": 4761,
                  "name": "EditionCreated",
                  "nameLocation": "2787:14:32",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4760,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4747,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "2827:9:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4761,
                        "src": "2811:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2811:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4749,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "2854:16:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4761,
                        "src": "2846:24:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4748,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2846:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4751,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "2888:5:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4761,
                        "src": "2880:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4750,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2880:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4753,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "quantity",
                        "nameLocation": "2910:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4761,
                        "src": "2903:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4752,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2903:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4755,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "royaltyBPS",
                        "nameLocation": "2935:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4761,
                        "src": "2928:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4754,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2928:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4757,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "2962:9:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4761,
                        "src": "2955:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4756,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2955:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4759,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "2988:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4761,
                        "src": "2981:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4758,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2981:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2801:200:32"
                  },
                  "src": "2781:221:32"
                },
                {
                  "anonymous": false,
                  "eventSelector": "e38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785",
                  "id": 4771,
                  "name": "EditionPurchased",
                  "nameLocation": "3014:16:32",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4763,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "3056:9:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3040:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4762,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3040:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4765,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3091:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3075:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4764,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3075:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4767,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "numSold",
                        "nameLocation": "3199:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3192:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4766,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3192:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4769,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nameLocation": "3291:5:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3275:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3275:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3030:272:32"
                  },
                  "src": "3008:295:32"
                },
                {
                  "body": {
                    "id": 4823,
                    "nodeType": "Block",
                    "src": "3625:465:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4788,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4778,
                              "src": "3649:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4789,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4780,
                              "src": "3656:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4787,
                            "name": "__ERC721_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "3635:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 4790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3635:29:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4791,
                        "nodeType": "ExpressionStatement",
                        "src": "3635:29:32"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4792,
                            "name": "__Ownable_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "3674:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3674:16:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4794,
                        "nodeType": "ExpressionStatement",
                        "src": "3674:16:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4796,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4774,
                              "src": "3780:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4795,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 105,
                            "src": "3762:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3762:25:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4798,
                        "nodeType": "ExpressionStatement",
                        "src": "3762:25:32"
                      },
                      {
                        "expression": {
                          "id": 4811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4799,
                            "name": "baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4722,
                            "src": "3857:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 4804,
                                    "name": "_baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4782,
                                    "src": "3891:8:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 4805,
                                        "name": "_artistId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4776,
                                        "src": "3901:9:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4806,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4133,
                                      "src": "3901:18:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 4807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3901:20:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 4808,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3923:3:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 4802,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "3874:3:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 4803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "3874:16:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 4809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3874:53:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3867:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 4800,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "3867:6:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3867:61:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "3857:71:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 4812,
                        "nodeType": "ExpressionStatement",
                        "src": "3857:71:32"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4813,
                              "name": "atTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4725,
                              "src": "3983:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 4815,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "3983:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 4816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3983:21:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4817,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:21:32"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4818,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4728,
                              "src": "4060:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 4820,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "4060:21:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 4821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4060:23:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4822,
                        "nodeType": "ExpressionStatement",
                        "src": "4060:23:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4772,
                    "nodeType": "StructuredDocumentation",
                    "src": "3351:81:32",
                    "text": "@param _owner Owner of edition\n@param _name Name of artist"
                  },
                  "functionSelector": "abfc83a0",
                  "id": 4824,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 4785,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4784,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "3613:11:32"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3613:11:32"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "3446:10:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4774,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "3474:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4824,
                        "src": "3466:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3466:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4776,
                        "mutability": "mutable",
                        "name": "_artistId",
                        "nameLocation": "3498:9:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4824,
                        "src": "3490:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4775,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3490:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4778,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "3531:5:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4824,
                        "src": "3517:19:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4777,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3517:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4780,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "3560:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4824,
                        "src": "3546:21:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4779,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3546:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4782,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "3591:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4824,
                        "src": "3577:22:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4781,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3577:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3456:149:32"
                  },
                  "returnParameters": {
                    "id": 4786,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3625:0:32"
                  },
                  "scope": 5343,
                  "src": "3437:653:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4874,
                    "nodeType": "Block",
                    "src": "4317:560:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 4855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4841,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4733,
                              "src": "4327:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                              }
                            },
                            "id": 4845,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 4842,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4728,
                                  "src": "4336:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 4843,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "4336:19:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 4844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4336:21:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4327:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$4720_storage",
                              "typeString": "struct Artist.Edition storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 4847,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4826,
                                "src": "4401:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 4848,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4828,
                                "src": "4439:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 4849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4468:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 4850,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4830,
                                "src": "4493:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 4851,
                                "name": "_royaltyBPS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4832,
                                "src": "4528:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 4852,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4834,
                                "src": "4564:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 4853,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4836,
                                "src": "4597:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "id": 4846,
                              "name": "Edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4720,
                              "src": "4361:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Edition_$4720_storage_ptr_$",
                                "typeString": "type(struct Artist.Edition storage pointer)"
                              }
                            },
                            "id": 4854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "fundingRecipient",
                              "price",
                              "numSold",
                              "quantity",
                              "royaltyBPS",
                              "startTime",
                              "endTime"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "4361:255:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$4720_memory_ptr",
                              "typeString": "struct Artist.Edition memory"
                            }
                          },
                          "src": "4327:289:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$4720_storage",
                            "typeString": "struct Artist.Edition storage ref"
                          }
                        },
                        "id": 4856,
                        "nodeType": "ExpressionStatement",
                        "src": "4327:289:32"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 4858,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4728,
                                  "src": "4660:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 4859,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "4660:19:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 4860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4660:21:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4861,
                              "name": "_fundingRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4826,
                              "src": "4695:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4862,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4828,
                              "src": "4726:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4863,
                              "name": "_quantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4830,
                              "src": "4746:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 4864,
                              "name": "_royaltyBPS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4769:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 4865,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4834,
                              "src": "4794:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 4866,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4836,
                              "src": "4818:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 4857,
                            "name": "EditionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4761,
                            "src": "4632:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint32,uint32,uint32,uint32)"
                            }
                          },
                          "id": 4867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4632:204:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4868,
                        "nodeType": "EmitStatement",
                        "src": "4627:209:32"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4869,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4728,
                              "src": "4847:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 4871,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "4847:21:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 4872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4847:23:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4873,
                        "nodeType": "ExpressionStatement",
                        "src": "4847:23:32"
                      }
                    ]
                  },
                  "functionSelector": "3fafef29",
                  "id": 4875,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 4839,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 4838,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "4307:9:32"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4307:9:32"
                    }
                  ],
                  "name": "createEdition",
                  "nameLocation": "4105:13:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4826,
                        "mutability": "mutable",
                        "name": "_fundingRecipient",
                        "nameLocation": "4144:17:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4875,
                        "src": "4128:33:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 4825,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4128:15:32",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4828,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "4179:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4875,
                        "src": "4171:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4171:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4830,
                        "mutability": "mutable",
                        "name": "_quantity",
                        "nameLocation": "4202:9:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4875,
                        "src": "4195:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4829,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4195:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4832,
                        "mutability": "mutable",
                        "name": "_royaltyBPS",
                        "nameLocation": "4228:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4875,
                        "src": "4221:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4831,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4221:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4834,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "4256:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4875,
                        "src": "4249:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4833,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4249:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4836,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "4283:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4875,
                        "src": "4276:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4835,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4276:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4118:179:32"
                  },
                  "returnParameters": {
                    "id": 4840,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4317:0:32"
                  },
                  "scope": 5343,
                  "src": "4096:781:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4983,
                    "nodeType": "Block",
                    "src": "4940:1462:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 4886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 4881,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4733,
                                    "src": "5102:8:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                      "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                    }
                                  },
                                  "id": 4883,
                                  "indexExpression": {
                                    "id": 4882,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4877,
                                    "src": "5111:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5102:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                    "typeString": "struct Artist.Edition storage ref"
                                  }
                                },
                                "id": 4884,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "quantity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4713,
                                "src": "5102:29:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5134:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5102:33:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                              "id": 4887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5137:24:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              },
                              "value": "Edition does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              }
                            ],
                            "id": 4880,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5094:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5094:68:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4889,
                        "nodeType": "ExpressionStatement",
                        "src": "5094:68:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 4899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 4891,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4733,
                                    "src": "5248:8:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                      "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                    }
                                  },
                                  "id": 4893,
                                  "indexExpression": {
                                    "id": 4892,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4877,
                                    "src": "5257:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5248:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                    "typeString": "struct Artist.Edition storage ref"
                                  }
                                },
                                "id": 4894,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "numSold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4711,
                                "src": "5248:28:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 4895,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4733,
                                    "src": "5279:8:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                      "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                    }
                                  },
                                  "id": 4897,
                                  "indexExpression": {
                                    "id": 4896,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4877,
                                    "src": "5288:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5279:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                    "typeString": "struct Artist.Edition storage ref"
                                  }
                                },
                                "id": 4898,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "quantity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4713,
                                "src": "5279:29:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "5248:60:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f75742e",
                              "id": 4900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5310:35:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                "typeString": "literal_string \"This edition is already sold out.\""
                              },
                              "value": "This edition is already sold out."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                "typeString": "literal_string \"This edition is already sold out.\""
                              }
                            ],
                            "id": 4890,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5240:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5240:106:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4902,
                        "nodeType": "ExpressionStatement",
                        "src": "5240:106:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4904,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5427:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "5427:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 4906,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4733,
                                    "src": "5440:8:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                      "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                    }
                                  },
                                  "id": 4908,
                                  "indexExpression": {
                                    "id": 4907,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4877,
                                    "src": "5449:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5440:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                    "typeString": "struct Artist.Edition storage ref"
                                  }
                                },
                                "id": 4909,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "price",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4709,
                                "src": "5440:26:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5427:39:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d7573742073656e6420656e6f75676820746f207075726368617365207468652065646974696f6e2e",
                              "id": 4911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5468:43:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              },
                              "value": "Must send enough to purchase the edition."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              }
                            ],
                            "id": 4903,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5419:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5419:93:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4913,
                        "nodeType": "ExpressionStatement",
                        "src": "5419:93:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 4915,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4733,
                                    "src": "5585:8:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                      "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                    }
                                  },
                                  "id": 4917,
                                  "indexExpression": {
                                    "id": 4916,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4877,
                                    "src": "5594:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5585:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                    "typeString": "struct Artist.Edition storage ref"
                                  }
                                },
                                "id": 4918,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4717,
                                "src": "5585:30:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 4919,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "5618:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "5618:15:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5585:48:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e206861736e27742073746172746564",
                              "id": 4922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5635:24:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_830caf72009b03778634eed138b0056290b9f3b77248e8de74bf688ea7fabf66",
                                "typeString": "literal_string \"Auction hasn't started\""
                              },
                              "value": "Auction hasn't started"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_830caf72009b03778634eed138b0056290b9f3b77248e8de74bf688ea7fabf66",
                                "typeString": "literal_string \"Auction hasn't started\""
                              }
                            ],
                            "id": 4914,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5577:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5577:83:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4924,
                        "nodeType": "ExpressionStatement",
                        "src": "5577:83:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 4926,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4733,
                                    "src": "5730:8:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                      "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                    }
                                  },
                                  "id": 4928,
                                  "indexExpression": {
                                    "id": 4927,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4877,
                                    "src": "5739:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5730:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                    "typeString": "struct Artist.Edition storage ref"
                                  }
                                },
                                "id": 4929,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4719,
                                "src": "5730:28:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 4930,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "5761:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "5761:15:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5730:46:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e2068617320656e646564",
                              "id": 4933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5778:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              },
                              "value": "Auction has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              }
                            ],
                            "id": 4925,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5722:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5722:76:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4935,
                        "nodeType": "ExpressionStatement",
                        "src": "5722:76:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4937,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5880:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5880:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 4939,
                                  "name": "atTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4725,
                                  "src": "5892:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 4940,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "5892:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 4941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5892:19:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4936,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "5874:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 4942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5874:38:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4943,
                        "nodeType": "ExpressionStatement",
                        "src": "5874:38:32"
                      },
                      {
                        "expression": {
                          "id": 4949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4944,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4741,
                              "src": "5976:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4946,
                            "indexExpression": {
                              "id": 4945,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4877,
                              "src": "5996:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5976:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "expression": {
                              "id": 4947,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6011:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "6011:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5976:44:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4950,
                        "nodeType": "ExpressionStatement",
                        "src": "5976:44:32"
                      },
                      {
                        "expression": {
                          "id": 4955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "6095:30:32",
                          "subExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 4951,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4733,
                                "src": "6095:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                  "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                }
                              },
                              "id": 4953,
                              "indexExpression": {
                                "id": 4952,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4877,
                                "src": "6104:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6095:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                "typeString": "struct Artist.Edition storage ref"
                              }
                            },
                            "id": 4954,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "numSold",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4711,
                            "src": "6095:28:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 4956,
                        "nodeType": "ExpressionStatement",
                        "src": "6095:30:32"
                      },
                      {
                        "expression": {
                          "id": 4963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4957,
                              "name": "tokenToEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4737,
                              "src": "6208:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4961,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 4958,
                                  "name": "atTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4725,
                                  "src": "6223:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 4959,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "6223:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 4960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6223:19:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6208:35:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4962,
                            "name": "_editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4877,
                            "src": "6246:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6208:48:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4964,
                        "nodeType": "ExpressionStatement",
                        "src": "6208:48:32"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4966,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4877,
                              "src": "6289:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 4967,
                                  "name": "atTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4725,
                                  "src": "6301:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 4968,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "6301:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 4969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6301:19:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 4970,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4733,
                                  "src": "6322:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                    "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                  }
                                },
                                "id": 4972,
                                "indexExpression": {
                                  "id": 4971,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4877,
                                  "src": "6331:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6322:20:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                  "typeString": "struct Artist.Edition storage ref"
                                }
                              },
                              "id": 4973,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numSold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4711,
                              "src": "6322:28:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 4974,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6352:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6352:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4965,
                            "name": "EditionPurchased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4771,
                            "src": "6272:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint32,address)"
                            }
                          },
                          "id": 4976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6272:91:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4977,
                        "nodeType": "EmitStatement",
                        "src": "6267:96:32"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4978,
                              "name": "atTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4725,
                              "src": "6374:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 4980,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "6374:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 4981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6374:21:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4982,
                        "nodeType": "ExpressionStatement",
                        "src": "6374:21:32"
                      }
                    ]
                  },
                  "functionSelector": "bd8616ec",
                  "id": 4984,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "buyEdition",
                  "nameLocation": "4892:10:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4878,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4877,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "4911:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4984,
                        "src": "4903:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4903:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4902:20:32"
                  },
                  "returnParameters": {
                    "id": 4879,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4940:0:32"
                  },
                  "scope": 5343,
                  "src": "4883:1519:32",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5015,
                    "nodeType": "Block",
                    "src": "6514:493:32",
                    "statements": [
                      {
                        "assignments": [
                          4990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4990,
                            "mutability": "mutable",
                            "name": "remainingForEdition",
                            "nameLocation": "6607:19:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5015,
                            "src": "6599:27:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4989,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6599:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4998,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 4991,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4741,
                              "src": "6629:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4993,
                            "indexExpression": {
                              "id": 4992,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4986,
                              "src": "6649:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6629:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 4994,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4745,
                              "src": "6663:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4996,
                            "indexExpression": {
                              "id": 4995,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4986,
                              "src": "6683:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6663:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6629:65:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6599:95:32"
                      },
                      {
                        "expression": {
                          "id": 5005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4999,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4745,
                              "src": "6766:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 5001,
                            "indexExpression": {
                              "id": 5000,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4986,
                              "src": "6786:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6766:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 5002,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4741,
                              "src": "6800:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 5004,
                            "indexExpression": {
                              "id": 5003,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4986,
                              "src": "6820:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6800:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6766:65:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5006,
                        "nodeType": "ExpressionStatement",
                        "src": "6766:65:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 5008,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4733,
                                  "src": "6941:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                    "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                  }
                                },
                                "id": 5010,
                                "indexExpression": {
                                  "id": 5009,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4986,
                                  "src": "6950:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6941:20:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                  "typeString": "struct Artist.Edition storage ref"
                                }
                              },
                              "id": 5011,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4707,
                              "src": "6941:37:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5012,
                              "name": "remainingForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4990,
                              "src": "6980:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5007,
                            "name": "_sendFunds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5342,
                            "src": "6930:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 5013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6930:70:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5014,
                        "nodeType": "ExpressionStatement",
                        "src": "6930:70:32"
                      }
                    ]
                  },
                  "functionSelector": "155dd5ee",
                  "id": 5016,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFunds",
                  "nameLocation": "6471:13:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4987,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4986,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "6493:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5016,
                        "src": "6485:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6485:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6484:20:32"
                  },
                  "returnParameters": {
                    "id": 4988,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6514:0:32"
                  },
                  "scope": 5343,
                  "src": "6462:545:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5032,
                    "nodeType": "Block",
                    "src": "7093:60:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 5030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 5025,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4733,
                                "src": "7103:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                  "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                }
                              },
                              "id": 5027,
                              "indexExpression": {
                                "id": 5026,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5018,
                                "src": "7112:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7103:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                "typeString": "struct Artist.Edition storage ref"
                              }
                            },
                            "id": 5028,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4717,
                            "src": "7103:30:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5029,
                            "name": "_startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5020,
                            "src": "7136:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "7103:43:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 5031,
                        "nodeType": "ExpressionStatement",
                        "src": "7103:43:32"
                      }
                    ]
                  },
                  "functionSelector": "fbab9e04",
                  "id": 5033,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5023,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5022,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "7083:9:32"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7083:9:32"
                    }
                  ],
                  "name": "setStartTime",
                  "nameLocation": "7022:12:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5018,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "7043:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5033,
                        "src": "7035:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7035:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5020,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "7062:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5033,
                        "src": "7055:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5019,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7055:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7034:39:32"
                  },
                  "returnParameters": {
                    "id": 5024,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7093:0:32"
                  },
                  "scope": 5343,
                  "src": "7013:140:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5049,
                    "nodeType": "Block",
                    "src": "7235:56:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 5047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 5042,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4733,
                                "src": "7245:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                  "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                }
                              },
                              "id": 5044,
                              "indexExpression": {
                                "id": 5043,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5035,
                                "src": "7254:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7245:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                "typeString": "struct Artist.Edition storage ref"
                              }
                            },
                            "id": 5045,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4719,
                            "src": "7245:28:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5046,
                            "name": "_endTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5037,
                            "src": "7276:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "7245:39:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 5048,
                        "nodeType": "ExpressionStatement",
                        "src": "7245:39:32"
                      }
                    ]
                  },
                  "functionSelector": "bb314ca1",
                  "id": 5050,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5040,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5039,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "7225:9:32"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7225:9:32"
                    }
                  ],
                  "name": "setEndTime",
                  "nameLocation": "7168:10:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5035,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "7187:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5050,
                        "src": "7179:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5034,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7179:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5037,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "7206:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5050,
                        "src": "7199:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 5036,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7199:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7178:37:32"
                  },
                  "returnParameters": {
                    "id": 5041,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7235:0:32"
                  },
                  "scope": 5343,
                  "src": "7159:132:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1051
                  ],
                  "body": {
                    "id": 5082,
                    "nodeType": "Block",
                    "src": "7508:294:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5060,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5052,
                                  "src": "7534:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5059,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "7526:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 5061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7526:17:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 5062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7545:49:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 5058,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7518:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7518:77:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5064,
                        "nodeType": "ExpressionStatement",
                        "src": "7518:77:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5069,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4722,
                                  "src": "7723:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "baseExpression": {
                                        "id": 5070,
                                        "name": "tokenToEdition",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4737,
                                        "src": "7732:14:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 5072,
                                      "indexExpression": {
                                        "id": 5071,
                                        "name": "_tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5052,
                                        "src": "7747:8:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7732:24:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4133,
                                    "src": "7732:33:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 5074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7732:35:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2f",
                                  "id": 5075,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7769:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  "value": "/"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 5076,
                                      "name": "_tokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5052,
                                      "src": "7774:8:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5077,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4133,
                                    "src": "7774:17:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 5078,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7774:19:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 5067,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7706:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "7706:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7706:88:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7699:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 5065,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "7699:6:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7699:96:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5057,
                        "id": 5081,
                        "nodeType": "Return",
                        "src": "7692:103:32"
                      }
                    ]
                  },
                  "functionSelector": "c87b56dd",
                  "id": 5083,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "7436:8:32",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5054,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7475:8:32"
                  },
                  "parameters": {
                    "id": 5053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5052,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "7453:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5083,
                        "src": "7445:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5051,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7445:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7444:18:32"
                  },
                  "returnParameters": {
                    "id": 5057,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5056,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5083,
                        "src": "7493:13:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5055,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7493:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7492:15:32"
                  },
                  "scope": 5343,
                  "src": "7427:375:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5097,
                    "nodeType": "Block",
                    "src": "7940:157:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5092,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4722,
                                  "src": "8067:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "hexValue": "73746f726566726f6e74",
                                  "id": 5093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8076:12:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  },
                                  "value": "storefront"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  }
                                ],
                                "expression": {
                                  "id": 5090,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8050:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "8050:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8050:39:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8043:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 5088,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "8043:6:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8043:47:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5087,
                        "id": 5096,
                        "nodeType": "Return",
                        "src": "8036:54:32"
                      }
                    ]
                  },
                  "functionSelector": "e8a3d485",
                  "id": 5098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "7890:11:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5084,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7901:2:32"
                  },
                  "returnParameters": {
                    "id": 5087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5086,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5098,
                        "src": "7925:13:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5085,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7925:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7924:15:32"
                  },
                  "scope": 5343,
                  "src": "7881:216:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5157,
                    "nodeType": "Block",
                    "src": "8345:370:32",
                    "statements": [
                      {
                        "assignments": [
                          5111
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5111,
                            "mutability": "mutable",
                            "name": "tokenIdsOfEdition",
                            "nameLocation": "8372:17:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5157,
                            "src": "8355:34:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5109,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8355:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5110,
                              "nodeType": "ArrayTypeName",
                              "src": "8355:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5120,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 5115,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4733,
                                  "src": "8406:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                    "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                  }
                                },
                                "id": 5117,
                                "indexExpression": {
                                  "id": 5116,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5101,
                                  "src": "8415:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8406:20:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                  "typeString": "struct Artist.Edition storage ref"
                                }
                              },
                              "id": 5118,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numSold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4711,
                              "src": "8406:28:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 5114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "8392:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5112,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8396:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5113,
                              "nodeType": "ArrayTypeName",
                              "src": "8396:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 5119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8392:43:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8355:80:32"
                      },
                      {
                        "assignments": [
                          5122
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5122,
                            "mutability": "mutable",
                            "name": "index",
                            "nameLocation": "8453:5:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5157,
                            "src": "8445:13:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5121,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8445:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5124,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 5123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8461:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8445:17:32"
                      },
                      {
                        "body": {
                          "id": 5153,
                          "nodeType": "Block",
                          "src": "8526:149:32",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 5137,
                                    "name": "tokenToEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4737,
                                    "src": "8544:14:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 5139,
                                  "indexExpression": {
                                    "id": 5138,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5126,
                                    "src": "8559:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8544:18:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 5140,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5101,
                                  "src": "8566:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8544:32:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5152,
                              "nodeType": "IfStatement",
                              "src": "8540:125:32",
                              "trueBody": {
                                "id": 5151,
                                "nodeType": "Block",
                                "src": "8578:87:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5146,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 5142,
                                          "name": "tokenIdsOfEdition",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5111,
                                          "src": "8596:17:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 5144,
                                        "indexExpression": {
                                          "id": 5143,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5122,
                                          "src": "8614:5:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8596:24:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 5145,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5126,
                                        "src": "8623:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8596:29:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5147,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8596:29:32"
                                  },
                                  {
                                    "expression": {
                                      "id": 5149,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "8643:7:32",
                                      "subExpression": {
                                        "id": 5148,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5122,
                                        "src": "8643:5:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5150,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8643:7:32"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5129,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5126,
                            "src": "8494:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5130,
                                "name": "atTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4725,
                                "src": "8499:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 5131,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "8499:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 5132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8499:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8494:24:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5154,
                        "initializationExpression": {
                          "assignments": [
                            5126
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5126,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "8486:2:32",
                              "nodeType": "VariableDeclaration",
                              "scope": 5154,
                              "src": "8478:10:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5125,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8478:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5128,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 5127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8491:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8478:14:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8520:4:32",
                            "subExpression": {
                              "id": 5134,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5126,
                              "src": "8520:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5136,
                          "nodeType": "ExpressionStatement",
                          "src": "8520:4:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "8473:202:32"
                      },
                      {
                        "expression": {
                          "id": 5155,
                          "name": "tokenIdsOfEdition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5111,
                          "src": "8691:17:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 5106,
                        "id": 5156,
                        "nodeType": "Return",
                        "src": "8684:24:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5099,
                    "nodeType": "StructuredDocumentation",
                    "src": "8153:98:32",
                    "text": "@dev Get token ids for a given edition id\n@param _editionId edition id"
                  },
                  "functionSelector": "74e79189",
                  "id": 5158,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenIdsOfEdition",
                  "nameLocation": "8265:20:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5101,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "8294:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5158,
                        "src": "8286:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8286:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8285:20:32"
                  },
                  "returnParameters": {
                    "id": 5106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5105,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5158,
                        "src": "8327:16:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5103,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8327:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5104,
                          "nodeType": "ArrayTypeName",
                          "src": "8327:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8326:18:32"
                  },
                  "scope": 5343,
                  "src": "8256:459:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5220,
                    "nodeType": "Block",
                    "src": "8907:391:32",
                    "statements": [
                      {
                        "assignments": [
                          5171
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5171,
                            "mutability": "mutable",
                            "name": "ownersOfEdition",
                            "nameLocation": "8934:15:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5220,
                            "src": "8917:32:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5169,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8917:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5170,
                              "nodeType": "ArrayTypeName",
                              "src": "8917:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5180,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 5175,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4733,
                                  "src": "8966:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                                    "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                                  }
                                },
                                "id": 5177,
                                "indexExpression": {
                                  "id": 5176,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5161,
                                  "src": "8975:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8966:20:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$4720_storage",
                                  "typeString": "struct Artist.Edition storage ref"
                                }
                              },
                              "id": 5178,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numSold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4711,
                              "src": "8966:28:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 5174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "8952:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5172,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8956:7:32",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5173,
                              "nodeType": "ArrayTypeName",
                              "src": "8956:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 5179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8952:43:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8917:78:32"
                      },
                      {
                        "assignments": [
                          5182
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5182,
                            "mutability": "mutable",
                            "name": "index",
                            "nameLocation": "9013:5:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5220,
                            "src": "9005:13:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5181,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9005:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5184,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 5183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9021:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9005:17:32"
                      },
                      {
                        "body": {
                          "id": 5216,
                          "nodeType": "Block",
                          "src": "9086:174:32",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 5197,
                                    "name": "tokenToEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4737,
                                    "src": "9104:14:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 5199,
                                  "indexExpression": {
                                    "id": 5198,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5186,
                                    "src": "9119:2:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9104:18:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 5200,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5161,
                                  "src": "9126:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9104:32:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5215,
                              "nodeType": "IfStatement",
                              "src": "9100:150:32",
                              "trueBody": {
                                "id": 5214,
                                "nodeType": "Block",
                                "src": "9138:112:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5209,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 5202,
                                          "name": "ownersOfEdition",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5171,
                                          "src": "9156:15:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 5204,
                                        "indexExpression": {
                                          "id": 5203,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5182,
                                          "src": "9172:5:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9156:22:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 5207,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5186,
                                            "src": "9207:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 5205,
                                            "name": "ERC721Upgradeable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1718,
                                            "src": "9181:17:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                              "typeString": "type(contract ERC721Upgradeable)"
                                            }
                                          },
                                          "id": 5206,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "ownerOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 992,
                                          "src": "9181:25:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                            "typeString": "function (uint256) view returns (address)"
                                          }
                                        },
                                        "id": 5208,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9181:29:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "9156:54:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 5210,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9156:54:32"
                                  },
                                  {
                                    "expression": {
                                      "id": 5212,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9228:7:32",
                                      "subExpression": {
                                        "id": 5211,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5182,
                                        "src": "9228:5:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5213,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9228:7:32"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5189,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5186,
                            "src": "9054:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5190,
                                "name": "atTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4725,
                                "src": "9059:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 5191,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "9059:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 5192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9059:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9054:24:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5217,
                        "initializationExpression": {
                          "assignments": [
                            5186
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5186,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "9046:2:32",
                              "nodeType": "VariableDeclaration",
                              "scope": 5217,
                              "src": "9038:10:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5185,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9038:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5188,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 5187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9051:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9038:14:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "9080:4:32",
                            "subExpression": {
                              "id": 5194,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5186,
                              "src": "9080:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5196,
                          "nodeType": "ExpressionStatement",
                          "src": "9080:4:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "9033:227:32"
                      },
                      {
                        "expression": {
                          "id": 5218,
                          "name": "ownersOfEdition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5171,
                          "src": "9276:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 5166,
                        "id": 5219,
                        "nodeType": "Return",
                        "src": "9269:22:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5159,
                    "nodeType": "StructuredDocumentation",
                    "src": "8721:94:32",
                    "text": "@dev Get owners of a given edition id\n@param _editionId edition id"
                  },
                  "functionSelector": "13dd2960",
                  "id": 5221,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getOwnersOfEdition",
                  "nameLocation": "8829:18:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5161,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "8856:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5221,
                        "src": "8848:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8848:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8847:20:32"
                  },
                  "returnParameters": {
                    "id": 5166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5165,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5221,
                        "src": "8889:16:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5163,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8889:7:32",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5164,
                          "nodeType": "ArrayTypeName",
                          "src": "8889:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8888:18:32"
                  },
                  "scope": 5343,
                  "src": "8820:478:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    149
                  ],
                  "body": {
                    "id": 5273,
                    "nodeType": "Block",
                    "src": "9633:318:32",
                    "statements": [
                      {
                        "assignments": [
                          5236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5236,
                            "mutability": "mutable",
                            "name": "edition",
                            "nameLocation": "9658:7:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5273,
                            "src": "9643:22:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$4720_memory_ptr",
                              "typeString": "struct Artist.Edition"
                            },
                            "typeName": {
                              "id": 5235,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5234,
                                "name": "Edition",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4720,
                                "src": "9643:7:32"
                              },
                              "referencedDeclaration": 4720,
                              "src": "9643:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$4720_storage_ptr",
                                "typeString": "struct Artist.Edition"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5240,
                        "initialValue": {
                          "baseExpression": {
                            "id": 5237,
                            "name": "editions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4733,
                            "src": "9668:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$4720_storage_$",
                              "typeString": "mapping(uint256 => struct Artist.Edition storage ref)"
                            }
                          },
                          "id": 5239,
                          "indexExpression": {
                            "id": 5238,
                            "name": "_editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5224,
                            "src": "9677:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9668:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$4720_storage",
                            "typeString": "struct Artist.Edition storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9643:45:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5241,
                              "name": "edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5236,
                              "src": "9703:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$4720_memory_ptr",
                                "typeString": "struct Artist.Edition memory"
                              }
                            },
                            "id": 5242,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4707,
                            "src": "9703:24:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 5245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9739:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9731:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5243,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9731:7:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9731:12:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9703:40:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5254,
                        "nodeType": "IfStatement",
                        "src": "9699:107:32",
                        "trueBody": {
                          "id": 5253,
                          "nodeType": "Block",
                          "src": "9745:61:32",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "expression": {
                                      "id": 5248,
                                      "name": "edition",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5236,
                                      "src": "9767:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$4720_memory_ptr",
                                        "typeString": "struct Artist.Edition memory"
                                      }
                                    },
                                    "id": 5249,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4707,
                                    "src": "9767:24:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 5250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9793:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 5251,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9766:29:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(address payable,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 5233,
                              "id": 5252,
                              "nodeType": "Return",
                              "src": "9759:36:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5256
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5256,
                            "mutability": "mutable",
                            "name": "royaltyBPS",
                            "nameLocation": "9824:10:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5273,
                            "src": "9816:18:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5255,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9816:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5262,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5259,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5236,
                                "src": "9845:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$4720_memory_ptr",
                                  "typeString": "struct Artist.Edition memory"
                                }
                              },
                              "id": 5260,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "royaltyBPS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4715,
                              "src": "9845:18:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 5258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9837:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 5257,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9837:7:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9837:27:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9816:48:32"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 5263,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5236,
                                "src": "9883:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$4720_memory_ptr",
                                  "typeString": "struct Artist.Edition memory"
                                }
                              },
                              "id": 5264,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4707,
                              "src": "9883:24:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5267,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5265,
                                      "name": "_salePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5226,
                                      "src": "9910:10:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 5266,
                                      "name": "royaltyBPS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5256,
                                      "src": "9923:10:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9910:23:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 5268,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9909:25:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "31305f303030",
                                "id": 5269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9937:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10_000"
                              },
                              "src": "9909:34:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5271,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9882:62:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "functionReturnParameters": 5233,
                        "id": 5272,
                        "nodeType": "Return",
                        "src": "9875:69:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5222,
                    "nodeType": "StructuredDocumentation",
                    "src": "9304:146:32",
                    "text": "@dev Get royalty information for token\n@param _editionId edition id\n@param _salePrice Sale price for the token"
                  },
                  "functionSelector": "2a55205a",
                  "id": 5274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "9464:11:32",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5228,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9554:8:32"
                  },
                  "parameters": {
                    "id": 5227,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5224,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "9484:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5274,
                        "src": "9476:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5223,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9476:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5226,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "9504:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5274,
                        "src": "9496:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5225,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9496:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9475:40:32"
                  },
                  "returnParameters": {
                    "id": 5233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5230,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "9588:16:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5274,
                        "src": "9580:24:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9580:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5232,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "9614:13:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5274,
                        "src": "9606:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5231,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9606:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9579:49:32"
                  },
                  "scope": 5343,
                  "src": "9455:496:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5285,
                    "nodeType": "Block",
                    "src": "10012:81:32",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5279,
                                "name": "atTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4725,
                                "src": "10029:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 5280,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "10029:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 5281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10029:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 5282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10051:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10029:23:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5278,
                        "id": 5284,
                        "nodeType": "Return",
                        "src": "10022:30:32"
                      }
                    ]
                  },
                  "functionSelector": "18160ddd",
                  "id": 5286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "9966:11:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9977:2:32"
                  },
                  "returnParameters": {
                    "id": 5278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5277,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5286,
                        "src": "10003:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10003:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10002:9:32"
                  },
                  "scope": 5343,
                  "src": "9957:136:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    940,
                    2986
                  ],
                  "body": {
                    "id": 5308,
                    "nodeType": "Block",
                    "src": "10258:142:32",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 5301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5297,
                                    "name": "IERC2981Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 150,
                                    "src": "10292:19:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  ],
                                  "id": 5296,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "10287:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10287:25:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981Upgradeable_$150",
                                  "typeString": "type(contract IERC2981Upgradeable)"
                                }
                              },
                              "id": 5299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "10287:37:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5300,
                              "name": "_interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5288,
                              "src": "10328:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "10287:53:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 5304,
                                "name": "_interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5288,
                                "src": "10380:12:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 5302,
                                "name": "ERC721Upgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "10344:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract ERC721Upgradeable)"
                                }
                              },
                              "id": 5303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 940,
                              "src": "10344:35:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 5305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10344:49:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10287:106:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5295,
                        "id": 5307,
                        "nodeType": "Return",
                        "src": "10268:125:32"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 5309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "10108:17:32",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5292,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5290,
                        "name": "ERC721Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1718,
                        "src": "10192:17:32"
                      },
                      {
                        "id": 5291,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "10211:18:32"
                      }
                    ],
                    "src": "10183:47:32"
                  },
                  "parameters": {
                    "id": 5289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5288,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "10133:12:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5309,
                        "src": "10126:19:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 5287,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "10126:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10125:21:32"
                  },
                  "returnParameters": {
                    "id": 5295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5294,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5309,
                        "src": "10248:4:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5293,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10248:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10247:6:32"
                  },
                  "scope": 5343,
                  "src": "10099:301:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5341,
                    "nodeType": "Block",
                    "src": "10529:235:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 5319,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "10555:4:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Artist_$5343",
                                        "typeString": "contract Artist"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Artist_$5343",
                                        "typeString": "contract Artist"
                                      }
                                    ],
                                    "id": 5318,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10547:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5317,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10547:7:32",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10547:13:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 5321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "10547:21:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 5322,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5313,
                                "src": "10572:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10547:32:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                              "id": 5324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10581:31:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              },
                              "value": "Insufficient balance for send"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              }
                            ],
                            "id": 5316,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10539:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10539:74:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5326,
                        "nodeType": "ExpressionStatement",
                        "src": "10539:74:32"
                      },
                      {
                        "assignments": [
                          5328,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5328,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "10630:7:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5341,
                            "src": "10625:12:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5327,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10625:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 5335,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 5333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10675:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 5329,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5311,
                                "src": "10643:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 5330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "10643:15:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 5332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 5331,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5313,
                                "src": "10666:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "10643:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 5334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10643:35:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10624:54:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5337,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5328,
                              "src": "10696:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e74206d61792068617665207265766572746564",
                              "id": 5338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10705:51:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              },
                              "value": "Unable to send value: recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              }
                            ],
                            "id": 5336,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10688:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10688:69:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5340,
                        "nodeType": "ExpressionStatement",
                        "src": "10688:69:32"
                      }
                    ]
                  },
                  "id": 5342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendFunds",
                  "nameLocation": "10465:10:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5311,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "10492:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5342,
                        "src": "10476:26:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5310,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10476:15:32",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5313,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "10512:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5342,
                        "src": "10504:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10504:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10475:45:32"
                  },
                  "returnParameters": {
                    "id": 5315,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10529:0:32"
                  },
                  "scope": 5343,
                  "src": "10456:308:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 5344,
              "src": "1200:9566:32",
              "usedErrors": []
            }
          ],
          "src": "45:10722:32"
        },
        "id": 32
      },
      "contracts/ArtistCreator.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistCreator.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "AddressUpgradeable": [
              2122
            ],
            "Artist": [
              5343
            ],
            "ArtistCreator": [
              5621
            ],
            "BeaconProxy": [
              3583
            ],
            "Context": [
              3985
            ],
            "ContextUpgradeable": [
              2164
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSAUpgradeable": [
              2931
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "ERC1967UpgradeUpgradeable": [
              529
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IBeacon": [
              3593
            ],
            "IBeaconUpgradeable": [
              539
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "IERC1822ProxiableUpgradeable": [
              160
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "Initializable": [
              690
            ],
            "Ownable": [
              3100
            ],
            "OwnableUpgradeable": [
              131
            ],
            "Proxy": [
              3517
            ],
            "StorageSlot": [
              4045
            ],
            "StorageSlotUpgradeable": [
              2298
            ],
            "Strings": [
              4271
            ],
            "StringsUpgradeable": [
              2524
            ],
            "UUPSUpgradeable": [
              826
            ],
            "UpgradeableBeacon": [
              3668
            ]
          },
          "id": 5622,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5345,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:23:33"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 5346,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 132,
              "src": "547:75:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "id": 5347,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 691,
              "src": "623:75:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "id": 5348,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 827,
              "src": "699:77:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 5349,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 2239,
              "src": "777:75:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "id": 5350,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 2932,
              "src": "853:85:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "id": 5351,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 3584,
              "src": "939:62:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol",
              "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol",
              "id": 5352,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 3669,
              "src": "1002:68:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/Artist.sol",
              "file": "./Artist.sol",
              "id": 5353,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5622,
              "sourceUnit": 5344,
              "src": "1071:22:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5354,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "1121:13:33"
                  },
                  "id": 5355,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1121:13:33"
                },
                {
                  "baseName": {
                    "id": 5356,
                    "name": "UUPSUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 826,
                    "src": "1136:15:33"
                  },
                  "id": 5357,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1136:15:33"
                },
                {
                  "baseName": {
                    "id": 5358,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "1153:18:33"
                  },
                  "id": 5359,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1153:18:33"
                }
              ],
              "canonicalName": "ArtistCreator",
              "contractDependencies": [
                3583,
                3668,
                5343
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5621,
              "linearizedBaseContracts": [
                5621,
                131,
                2164,
                826,
                529,
                160,
                690
              ],
              "name": "ArtistCreator",
              "nameLocation": "1104:13:33",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 5363,
                  "libraryName": {
                    "id": 5360,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "1184:19:33"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1178:58:33",
                  "typeName": {
                    "id": 5362,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5361,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "1208:27:33"
                    },
                    "referencedDeclaration": 2170,
                    "src": "1208:27:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 5366,
                  "libraryName": {
                    "id": 5364,
                    "name": "ECDSAUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2931,
                    "src": "1247:16:33"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1241:35:33",
                  "typeName": {
                    "id": 5365,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "fa4d280c",
                  "id": 5371,
                  "mutability": "constant",
                  "name": "MINTER_TYPEHASH",
                  "nameLocation": "1348:15:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5621,
                  "src": "1324:85:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5367,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1324:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "4465706c6f79657228616464726573732061727469737457616c6c657429",
                        "id": 5369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1376:32:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        },
                        "value": "Deployer(address artistWallet)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        }
                      ],
                      "id": 5368,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1366:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 5370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1366:43:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 5374,
                  "mutability": "mutable",
                  "name": "atArtistId",
                  "nameLocation": "1451:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5621,
                  "src": "1415:46:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 5373,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5372,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "1415:27:33"
                    },
                    "referencedDeclaration": 2170,
                    "src": "1415:27:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "f851a440",
                  "id": 5376,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "1550:5:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5621,
                  "src": "1535:20:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5375,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1535:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 5378,
                  "mutability": "mutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "1576:16:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5621,
                  "src": "1561:31:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5377,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1561:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7e2ec6d0",
                  "id": 5380,
                  "mutability": "mutable",
                  "name": "beaconAddress",
                  "nameLocation": "1613:13:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5621,
                  "src": "1598:28:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1598:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "b16a43f0",
                  "id": 5383,
                  "mutability": "mutable",
                  "name": "artistContracts",
                  "nameLocation": "1686:15:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5621,
                  "src": "1669:32:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5381,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1669:7:33",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 5382,
                    "nodeType": "ArrayTypeName",
                    "src": "1669:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 5384,
                    "nodeType": "StructuredDocumentation",
                    "src": "1749:37:33",
                    "text": "Emitted when an Artist is created"
                  },
                  "eventSelector": "23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0",
                  "id": 5394,
                  "name": "CreatedArtist",
                  "nameLocation": "1797:13:33",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5386,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "artistId",
                        "nameLocation": "1819:8:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5394,
                        "src": "1811:16:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1811:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5388,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "1836:4:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5394,
                        "src": "1829:11:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5387,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1829:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5390,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nameLocation": "1849:6:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5394,
                        "src": "1842:13:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5389,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1842:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5392,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "artistAddress",
                        "nameLocation": "1873:13:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5394,
                        "src": "1857:29:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1857:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1810:77:33"
                  },
                  "src": "1791:97:33"
                },
                {
                  "body": {
                    "id": 5455,
                    "nodeType": "Block",
                    "src": "2007:542:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5400,
                            "name": "__Ownable_init_unchained",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37,
                            "src": "2017:24:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2017:26:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5402,
                        "nodeType": "ExpressionStatement",
                        "src": "2017:26:33"
                      },
                      {
                        "expression": {
                          "id": 5406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5403,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5376,
                            "src": "2111:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 5404,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2119:3:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2119:10:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2111:18:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5407,
                        "nodeType": "ExpressionStatement",
                        "src": "2111:18:33"
                      },
                      {
                        "expression": {
                          "id": 5419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5408,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5378,
                            "src": "2139:16:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                        "id": 5413,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2189:31:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        },
                                        "value": "EIP712Domain(uint256 chainId)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        }
                                      ],
                                      "id": 5412,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "2179:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 5414,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2179:42:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5415,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "2223:5:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 5416,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "2223:13:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5410,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2168:3:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 5411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "2168:10:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 5417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2168:69:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5409,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "2158:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 5418,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2158:80:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2139:99:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5420,
                        "nodeType": "ExpressionStatement",
                        "src": "2139:99:33"
                      },
                      {
                        "assignments": [
                          5423
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5423,
                            "mutability": "mutable",
                            "name": "_beacon",
                            "nameLocation": "2321:7:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5455,
                            "src": "2303:25:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                              "typeString": "contract UpgradeableBeacon"
                            },
                            "typeName": {
                              "id": 5422,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5421,
                                "name": "UpgradeableBeacon",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3668,
                                "src": "2303:17:33"
                              },
                              "referencedDeclaration": 3668,
                              "src": "2303:17:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                "typeString": "contract UpgradeableBeacon"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5435,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5431,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "2361:10:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Artist_$5343_$",
                                      "typeString": "function () returns (contract Artist)"
                                    },
                                    "typeName": {
                                      "id": 5430,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 5429,
                                        "name": "Artist",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5343,
                                        "src": "2365:6:33"
                                      },
                                      "referencedDeclaration": 5343,
                                      "src": "2365:6:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Artist_$5343",
                                        "typeString": "contract Artist"
                                      }
                                    }
                                  },
                                  "id": 5432,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2361:12:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Artist_$5343",
                                    "typeString": "contract Artist"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Artist_$5343",
                                    "typeString": "contract Artist"
                                  }
                                ],
                                "id": 5428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2353:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5427,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2353:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2353:21:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2331:21:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_UpgradeableBeacon_$3668_$",
                              "typeString": "function (address) returns (contract UpgradeableBeacon)"
                            },
                            "typeName": {
                              "id": 5425,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5424,
                                "name": "UpgradeableBeacon",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3668,
                                "src": "2335:17:33"
                              },
                              "referencedDeclaration": 3668,
                              "src": "2335:17:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                "typeString": "contract UpgradeableBeacon"
                              }
                            }
                          },
                          "id": 5434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2331:44:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                            "typeString": "contract UpgradeableBeacon"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2303:72:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5439,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2411:3:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2411:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5436,
                              "name": "_beacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5423,
                              "src": "2385:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                "typeString": "contract UpgradeableBeacon"
                              }
                            },
                            "id": 5438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3079,
                            "src": "2385:25:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 5441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2385:37:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5442,
                        "nodeType": "ExpressionStatement",
                        "src": "2385:37:33"
                      },
                      {
                        "expression": {
                          "id": 5448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5443,
                            "name": "beaconAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5380,
                            "src": "2432:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5446,
                                "name": "_beacon",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5423,
                                "src": "2456:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                  "typeString": "contract UpgradeableBeacon"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                  "typeString": "contract UpgradeableBeacon"
                                }
                              ],
                              "id": 5445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2448:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5444,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2448:7:33",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2448:16:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2432:32:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5449,
                        "nodeType": "ExpressionStatement",
                        "src": "2432:32:33"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5450,
                              "name": "atArtistId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5374,
                              "src": "2520:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 5452,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "2520:20:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 5453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2520:22:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5454,
                        "nodeType": "ExpressionStatement",
                        "src": "2520:22:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5395,
                    "nodeType": "StructuredDocumentation",
                    "src": "1938:23:33",
                    "text": "Initializes factory"
                  },
                  "functionSelector": "8129fc1c",
                  "id": 5456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5398,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5397,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "1995:11:33"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1995:11:33"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "1975:10:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1985:2:33"
                  },
                  "returnParameters": {
                    "id": 5399,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2007:0:33"
                  },
                  "scope": 5621,
                  "src": "1966:583:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5539,
                    "nodeType": "Block",
                    "src": "2966:643:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 5475,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 5472,
                                        "name": "signature",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5459,
                                        "src": "2995:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "id": 5471,
                                      "name": "getSigner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5586,
                                      "src": "2985:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_address_$",
                                        "typeString": "function (bytes calldata) view returns (address)"
                                      }
                                    },
                                    "id": 5473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2985:20:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 5474,
                                    "name": "admin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5376,
                                    "src": "3009:5:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2985:29:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 5476,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2984:31:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                              "id": 5477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3017:33:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              },
                              "value": "invalid authorization signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              }
                            ],
                            "id": 5470,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2976:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2976:75:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5479,
                        "nodeType": "ExpressionStatement",
                        "src": "2976:75:33"
                      },
                      {
                        "assignments": [
                          5482
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5482,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nameLocation": "3074:5:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5539,
                            "src": "3062:17:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                              "typeString": "contract BeaconProxy"
                            },
                            "typeName": {
                              "id": 5481,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5480,
                                "name": "BeaconProxy",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3583,
                                "src": "3062:11:33"
                              },
                              "referencedDeclaration": 3583,
                              "src": "3062:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5507,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5486,
                              "name": "beaconAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5380,
                              "src": "3111:13:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 5492,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3193:1:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              }
                                            ],
                                            "id": 5491,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3185:7:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 5490,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3185:7:33",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 5493,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3185:10:33",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 5489,
                                        "name": "Artist",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5343,
                                        "src": "3178:6:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Artist_$5343_$",
                                          "typeString": "type(contract Artist)"
                                        }
                                      },
                                      "id": 5494,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3178:18:33",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Artist_$5343",
                                        "typeString": "contract Artist"
                                      }
                                    },
                                    "id": 5495,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "initialize",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4824,
                                    "src": "3178:29:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (address,uint256,string memory,string memory,string memory) external"
                                    }
                                  },
                                  "id": 5496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3178:38:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 5497,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "3234:3:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "3234:10:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 5499,
                                      "name": "atArtistId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5374,
                                      "src": "3262:10:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                        "typeString": "struct CountersUpgradeable.Counter storage ref"
                                      }
                                    },
                                    "id": 5500,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "current",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2182,
                                    "src": "3262:18:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                      "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                    }
                                  },
                                  "id": 5501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3262:20:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5502,
                                  "name": "_name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5461,
                                  "src": "3300:5:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 5503,
                                  "name": "_symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5463,
                                  "src": "3323:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 5504,
                                  "name": "_baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5465,
                                  "src": "3348:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 5487,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3138:3:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3138:22:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 5505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3138:232:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3082:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$3583_$",
                              "typeString": "function (address,bytes memory) payable returns (contract BeaconProxy)"
                            },
                            "typeName": {
                              "id": 5484,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5483,
                                "name": "BeaconProxy",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3583,
                                "src": "3086:11:33"
                              },
                              "referencedDeclaration": 3583,
                              "src": "3086:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            }
                          },
                          "id": 5506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3082:298:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                            "typeString": "contract BeaconProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3062:318:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5513,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5482,
                                  "src": "3447:5:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                ],
                                "id": 5512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3439:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5511,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3439:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3439:14:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5508,
                              "name": "artistContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5383,
                              "src": "3418:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 5510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "3418:20:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                              "typeString": "function (address[] storage pointer,address)"
                            }
                          },
                          "id": 5515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3418:36:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5516,
                        "nodeType": "ExpressionStatement",
                        "src": "3418:36:33"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 5518,
                                  "name": "atArtistId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5374,
                                  "src": "3484:10:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 5519,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "3484:18:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 5520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3484:20:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5521,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5461,
                              "src": "3506:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 5522,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5463,
                              "src": "3513:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5525,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5482,
                                  "src": "3530:5:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                ],
                                "id": 5524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3522:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5523,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3522:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3522:14:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5517,
                            "name": "CreatedArtist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5394,
                            "src": "3470:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256,string memory,string memory,address)"
                            }
                          },
                          "id": 5527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3470:67:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5528,
                        "nodeType": "EmitStatement",
                        "src": "3465:72:33"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5529,
                              "name": "atArtistId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5374,
                              "src": "3548:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 5531,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "3548:20:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 5532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3548:22:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5533,
                        "nodeType": "ExpressionStatement",
                        "src": "3548:22:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5536,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5482,
                              "src": "3596:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            ],
                            "id": 5535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3588:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5534,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3588:7:33",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3588:14:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5469,
                        "id": 5538,
                        "nodeType": "Return",
                        "src": "3581:21:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5457,
                    "nodeType": "StructuredDocumentation",
                    "src": "2555:227:33",
                    "text": "Creates a new artist contract as a factory with a deterministic address\n Important: None of these fields (except the Url fields with the same hash) can be changed after calling\n @param _name Name of the artist"
                  },
                  "functionSelector": "233654eb",
                  "id": 5540,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createArtist",
                  "nameLocation": "2796:12:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5459,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2833:9:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5540,
                        "src": "2818:24:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5458,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2818:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5461,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "2866:5:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5540,
                        "src": "2852:19:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5460,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2852:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5463,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "2895:7:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5540,
                        "src": "2881:21:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5462,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2881:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5465,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "2926:8:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5540,
                        "src": "2912:22:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5464,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2912:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2808:132:33"
                  },
                  "returnParameters": {
                    "id": 5469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5468,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5540,
                        "src": "2957:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5467,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2957:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2956:9:33"
                  },
                  "scope": 5621,
                  "src": "2787:822:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5585,
                    "nodeType": "Block",
                    "src": "3730:767:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5549,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5376,
                                "src": "3748:5:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5552,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3765:1:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 5551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3757:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5550,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3757:7:33",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3757:10:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3748:19:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                              "id": 5555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3769:23:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              },
                              "value": "whitelist not enabled"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              }
                            ],
                            "id": 5548,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3740:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3740:53:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5557,
                        "nodeType": "ExpressionStatement",
                        "src": "3740:53:33"
                      },
                      {
                        "assignments": [
                          5559
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5559,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "4021:6:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5585,
                            "src": "4013:14:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5558,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4013:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5575,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 5563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4070:10:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 5564,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5378,
                                  "src": "4082:16:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5568,
                                          "name": "MINTER_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5371,
                                          "src": "4121:15:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 5569,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "4138:3:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 5570,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "4138:10:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 5566,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "4110:3:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 5567,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "4110:10:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 5571,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4110:39:33",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5565,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "4100:9:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4100:50:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 5561,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4053:3:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "4053:16:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4053:98:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5560,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4030:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 5574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4030:131:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4013:148:33"
                      },
                      {
                        "assignments": [
                          5577
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5577,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "4413:16:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5585,
                            "src": "4405:24:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5576,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4405:7:33",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5582,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5580,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5543,
                              "src": "4447:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 5578,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5559,
                              "src": "4432:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 5579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2680,
                            "src": "4432:14:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 5581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4432:25:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4405:52:33"
                      },
                      {
                        "expression": {
                          "id": 5583,
                          "name": "recoveredAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5577,
                          "src": "4474:16:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5547,
                        "id": 5584,
                        "nodeType": "Return",
                        "src": "4467:23:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5541,
                    "nodeType": "StructuredDocumentation",
                    "src": "3615:35:33",
                    "text": "Get signer address of signature"
                  },
                  "functionSelector": "e6adabfd",
                  "id": 5586,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "3664:9:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5543,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "3689:9:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5586,
                        "src": "3674:24:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5542,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3674:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3673:26:33"
                  },
                  "returnParameters": {
                    "id": 5547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5546,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5586,
                        "src": "3721:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5545,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3721:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3720:9:33"
                  },
                  "scope": 5621,
                  "src": "3655:842:33",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5610,
                    "nodeType": "Block",
                    "src": "4652:126:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 5597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5593,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 54,
                                    "src": "4670:5:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4670:7:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5595,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "4681:10:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4681:12:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4670:23:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 5601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5598,
                                  "name": "admin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5376,
                                  "src": "4697:5:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5599,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "4706:10:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4706:12:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4697:21:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4670:48:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                              "id": 5603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4720:23:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              },
                              "value": "invalid authorization"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              }
                            ],
                            "id": 5592,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4662:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4662:82:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5605,
                        "nodeType": "ExpressionStatement",
                        "src": "4662:82:33"
                      },
                      {
                        "expression": {
                          "id": 5608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5606,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5376,
                            "src": "4754:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5607,
                            "name": "_newAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5589,
                            "src": "4762:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4754:17:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5609,
                        "nodeType": "ExpressionStatement",
                        "src": "4754:17:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5587,
                    "nodeType": "StructuredDocumentation",
                    "src": "4503:98:33",
                    "text": "Sets the admin for authorizing artist deployment\n @param _newAdmin address of new admin"
                  },
                  "functionSelector": "704b6c02",
                  "id": 5611,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAdmin",
                  "nameLocation": "4615:8:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5589,
                        "mutability": "mutable",
                        "name": "_newAdmin",
                        "nameLocation": "4632:9:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5611,
                        "src": "4624:17:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5588,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4624:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4623:19:33"
                  },
                  "returnParameters": {
                    "id": 5591,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4652:0:33"
                  },
                  "scope": 5621,
                  "src": "4606:172:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    820
                  ],
                  "body": {
                    "id": 5619,
                    "nodeType": "Block",
                    "src": "4848:2:33",
                    "statements": []
                  },
                  "id": 5620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5617,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5616,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "4838:9:33"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4838:9:33"
                    }
                  ],
                  "name": "_authorizeUpgrade",
                  "nameLocation": "4793:17:33",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5615,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4829:8:33"
                  },
                  "parameters": {
                    "id": 5614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5613,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5620,
                        "src": "4811:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4811:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4810:9:33"
                  },
                  "returnParameters": {
                    "id": 5618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4848:0:33"
                  },
                  "scope": 5621,
                  "src": "4784:66:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5622,
              "src": "1095:3757:33",
              "usedErrors": []
            }
          ],
          "src": "45:4808:33"
        },
        "id": 33
      },
      "contracts/ArtistCreatorProxy.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistCreatorProxy.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "ArtistCreatorProxy": [
              5641
            ],
            "ERC1967Proxy": [
              3147
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "IBeacon": [
              3593
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "Proxy": [
              3517
            ],
            "StorageSlot": [
              4045
            ]
          },
          "id": 5642,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5623,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:23:34"
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
              "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
              "id": 5624,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5642,
              "sourceUnit": 3148,
              "src": "70:64:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5625,
                    "name": "ERC1967Proxy",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3147,
                    "src": "465:12:34"
                  },
                  "id": 5626,
                  "nodeType": "InheritanceSpecifier",
                  "src": "465:12:34"
                }
              ],
              "canonicalName": "ArtistCreatorProxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5641,
              "linearizedBaseContracts": [
                5641,
                3147,
                3465,
                3517
              ],
              "name": "ArtistCreatorProxy",
              "nameLocation": "443:18:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5639,
                    "nodeType": "Block",
                    "src": "607:2:34",
                    "statements": []
                  },
                  "id": 5640,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 5635,
                          "name": "_logic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5628,
                          "src": "592:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 5636,
                          "name": "_data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5632,
                          "src": "600:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 5637,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 5634,
                        "name": "ERC1967Proxy",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3147,
                        "src": "579:12:34"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "579:27:34"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5628,
                        "mutability": "mutable",
                        "name": "_logic",
                        "nameLocation": "513:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5640,
                        "src": "505:14:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5627,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "505:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5630,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5640,
                        "src": "529:7:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5629,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "529:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5632,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "559:5:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5640,
                        "src": "546:18:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5631,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "546:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "495:75:34"
                  },
                  "returnParameters": {
                    "id": 5638,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "607:0:34"
                  },
                  "scope": 5641,
                  "src": "484:125:34",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5642,
              "src": "434:177:34",
              "usedErrors": []
            }
          ],
          "src": "45:567:34"
        },
        "id": 34
      },
      "contracts/ArtistCreatorV2.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistCreatorV2.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "AddressUpgradeable": [
              2122
            ],
            "ArtistCreatorV2": [
              5847
            ],
            "BeaconProxy": [
              3583
            ],
            "ContextUpgradeable": [
              2164
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSAUpgradeable": [
              2931
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "ERC1967UpgradeUpgradeable": [
              529
            ],
            "IBeacon": [
              3593
            ],
            "IBeaconUpgradeable": [
              539
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "IERC1822ProxiableUpgradeable": [
              160
            ],
            "Initializable": [
              690
            ],
            "OwnableUpgradeable": [
              131
            ],
            "Proxy": [
              3517
            ],
            "StorageSlot": [
              4045
            ],
            "StorageSlotUpgradeable": [
              2298
            ],
            "StringsUpgradeable": [
              2524
            ],
            "UUPSUpgradeable": [
              826
            ]
          },
          "id": 5848,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5643,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".14"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:24:35"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 5644,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5848,
              "sourceUnit": 132,
              "src": "1539:75:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "id": 5645,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5848,
              "sourceUnit": 691,
              "src": "1615:75:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "id": 5646,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5848,
              "sourceUnit": 827,
              "src": "1691:77:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 5647,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5848,
              "sourceUnit": 2239,
              "src": "1769:75:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "id": 5648,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5848,
              "sourceUnit": 2932,
              "src": "1845:85:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "id": 5649,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5848,
              "sourceUnit": 3584,
              "src": "1931:62:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5651,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "2117:13:35"
                  },
                  "id": 5652,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2117:13:35"
                },
                {
                  "baseName": {
                    "id": 5653,
                    "name": "UUPSUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 826,
                    "src": "2132:15:35"
                  },
                  "id": 5654,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2132:15:35"
                },
                {
                  "baseName": {
                    "id": 5655,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "2149:18:35"
                  },
                  "id": 5656,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2149:18:35"
                }
              ],
              "canonicalName": "ArtistCreatorV2",
              "contractDependencies": [
                3583
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 5650,
                "nodeType": "StructuredDocumentation",
                "src": "1995:94:35",
                "text": "@title The Artist Creator factory contract\n @author Sound.xyz - @gigamesh & @vigneshka"
              },
              "fullyImplemented": true,
              "id": 5847,
              "linearizedBaseContracts": [
                5847,
                131,
                2164,
                826,
                529,
                160,
                690
              ],
              "name": "ArtistCreatorV2",
              "nameLocation": "2098:15:35",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 5660,
                  "libraryName": {
                    "id": 5657,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "2180:19:35"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2174:58:35",
                  "typeName": {
                    "id": 5659,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5658,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2204:27:35"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2204:27:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 5663,
                  "libraryName": {
                    "id": 5661,
                    "name": "ECDSAUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2931,
                    "src": "2243:16:35"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2237:35:35",
                  "typeName": {
                    "id": 5662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2264:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "fa4d280c",
                  "id": 5668,
                  "mutability": "constant",
                  "name": "MINTER_TYPEHASH",
                  "nameLocation": "2407:15:35",
                  "nodeType": "VariableDeclaration",
                  "scope": 5847,
                  "src": "2383:85:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5664,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2383:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "4465706c6f79657228616464726573732061727469737457616c6c657429",
                        "id": 5666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2435:32:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        },
                        "value": "Deployer(address artistWallet)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        }
                      ],
                      "id": 5665,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2425:9:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 5667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2425:43:35",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 5671,
                  "mutability": "mutable",
                  "name": "atArtistId",
                  "nameLocation": "2575:10:35",
                  "nodeType": "VariableDeclaration",
                  "scope": 5847,
                  "src": "2539:46:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 5670,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5669,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2539:27:35"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2539:27:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "f851a440",
                  "id": 5673,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "2674:5:35",
                  "nodeType": "VariableDeclaration",
                  "scope": 5847,
                  "src": "2659:20:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5672,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2659:7:35",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 5675,
                  "mutability": "mutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "2799:16:35",
                  "nodeType": "VariableDeclaration",
                  "scope": 5847,
                  "src": "2784:31:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5674,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2784:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7e2ec6d0",
                  "id": 5677,
                  "mutability": "mutable",
                  "name": "beaconAddress",
                  "nameLocation": "2944:13:35",
                  "nodeType": "VariableDeclaration",
                  "scope": 5847,
                  "src": "2929:28:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5676,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:7:35",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "b16a43f0",
                  "id": 5680,
                  "mutability": "mutable",
                  "name": "artistContracts",
                  "nameLocation": "3048:15:35",
                  "nodeType": "VariableDeclaration",
                  "scope": 5847,
                  "src": "3031:32:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5678,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3031:7:35",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 5679,
                    "nodeType": "ArrayTypeName",
                    "src": "3031:9:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 5681,
                    "nodeType": "StructuredDocumentation",
                    "src": "3111:37:35",
                    "text": "Emitted when an Artist is created"
                  },
                  "eventSelector": "23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0",
                  "id": 5691,
                  "name": "CreatedArtist",
                  "nameLocation": "3159:13:35",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5683,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "artistId",
                        "nameLocation": "3181:8:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5691,
                        "src": "3173:16:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3173:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5685,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "3198:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5691,
                        "src": "3191:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5684,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3191:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5687,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nameLocation": "3211:6:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5691,
                        "src": "3204:13:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5686,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3204:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5689,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "artistAddress",
                        "nameLocation": "3235:13:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5691,
                        "src": "3219:29:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3219:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3172:77:35"
                  },
                  "src": "3153:97:35"
                },
                {
                  "body": {
                    "id": 5764,
                    "nodeType": "Block",
                    "src": "3607:681:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 5710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 5707,
                                        "name": "signature",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5694,
                                        "src": "3636:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "id": 5706,
                                      "name": "getSigner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5811,
                                      "src": "3626:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_address_$",
                                        "typeString": "function (bytes calldata) view returns (address)"
                                      }
                                    },
                                    "id": 5708,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3626:20:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 5709,
                                    "name": "admin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5673,
                                    "src": "3650:5:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "3626:29:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 5711,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3625:31:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                              "id": 5712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3658:33:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              },
                              "value": "invalid authorization signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              }
                            ],
                            "id": 5705,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3617:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3617:75:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5714,
                        "nodeType": "ExpressionStatement",
                        "src": "3617:75:35"
                      },
                      {
                        "assignments": [
                          5716
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5716,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "3711:4:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 5764,
                            "src": "3703:12:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5715,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3703:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5728,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 5723,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2149,
                                        "src": "3742:10:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                          "typeString": "function () view returns (address)"
                                        }
                                      },
                                      "id": 5724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3742:12:35",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3734:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 5721,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3734:7:35",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3734:21:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 5720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3726:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 5719,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3726:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3726:30:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3718:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 5717,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3718:7:35",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3718:39:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3703:54:35"
                      },
                      {
                        "assignments": [
                          5731
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5731,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nameLocation": "3830:5:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 5764,
                            "src": "3818:17:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                              "typeString": "contract BeaconProxy"
                            },
                            "typeName": {
                              "id": 5730,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5729,
                                "name": "BeaconProxy",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3583,
                                "src": "3818:11:35"
                              },
                              "referencedDeclaration": 3583,
                              "src": "3818:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5748,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5737,
                              "name": "beaconAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5677,
                              "src": "3879:13:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783566316536663664",
                                  "id": 5740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4068:10:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1595830125_by_1",
                                    "typeString": "int_const 1595830125"
                                  },
                                  "value": "0x5f1e6f6d"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5741,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "4080:10:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5742,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4080:12:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5743,
                                  "name": "_name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5696,
                                  "src": "4094:5:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 5744,
                                  "name": "_symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5698,
                                  "src": "4101:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 5745,
                                  "name": "_baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5700,
                                  "src": "4110:8:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1595830125_by_1",
                                    "typeString": "int_const 1595830125"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 5738,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4045:3:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "4045:22:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 5746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4045:74:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "3838:15:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$3583_$",
                                "typeString": "function (address,bytes memory) payable returns (contract BeaconProxy)"
                              },
                              "typeName": {
                                "id": 5733,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 5732,
                                  "name": "BeaconProxy",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 3583,
                                  "src": "3842:11:35"
                                },
                                "referencedDeclaration": 3583,
                                "src": "3842:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                  "typeString": "contract BeaconProxy"
                                }
                              }
                            },
                            "id": 5736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "salt"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 5735,
                                "name": "salt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5716,
                                "src": "3860:4:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "src": "3838:27:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$3583_$salt",
                              "typeString": "function (address,bytes memory) payable returns (contract BeaconProxy)"
                            }
                          },
                          "id": 5747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3838:291:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                            "typeString": "contract BeaconProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3818:311:35"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 5750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4215:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 5751,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5696,
                              "src": "4218:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 5752,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5698,
                              "src": "4225:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5755,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5731,
                                  "src": "4242:5:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                ],
                                "id": 5754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4234:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5753,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4234:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4234:14:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5749,
                            "name": "CreatedArtist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5691,
                            "src": "4201:13:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256,string memory,string memory,address)"
                            }
                          },
                          "id": 5757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4201:48:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5758,
                        "nodeType": "EmitStatement",
                        "src": "4196:53:35"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5761,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5731,
                              "src": "4275:5:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            ],
                            "id": 5760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4267:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5759,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4267:7:35",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4267:14:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5704,
                        "id": 5763,
                        "nodeType": "Return",
                        "src": "4260:21:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5692,
                    "nodeType": "StructuredDocumentation",
                    "src": "3300:123:35",
                    "text": "@notice Creates a new artist contract as a factory with a deterministic address\n @param _name Name of the artist"
                  },
                  "functionSelector": "233654eb",
                  "id": 5765,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createArtist",
                  "nameLocation": "3437:12:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5694,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "3474:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5765,
                        "src": "3459:24:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5693,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3459:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5696,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "3507:5:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5765,
                        "src": "3493:19:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5695,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3493:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5698,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "3536:7:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5765,
                        "src": "3522:21:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5697,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3522:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5700,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "3567:8:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5765,
                        "src": "3553:22:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5699,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3553:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3449:132:35"
                  },
                  "returnParameters": {
                    "id": 5704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5703,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5765,
                        "src": "3598:7:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5702,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3598:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3597:9:35"
                  },
                  "scope": 5847,
                  "src": "3428:860:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5810,
                    "nodeType": "Block",
                    "src": "4468:769:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5779,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5774,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5673,
                                "src": "4486:5:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4503:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 5776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4495:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5775,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4495:7:35",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4495:10:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4486:19:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                              "id": 5780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4507:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              },
                              "value": "whitelist not enabled"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              }
                            ],
                            "id": 5773,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4478:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4478:53:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5782,
                        "nodeType": "ExpressionStatement",
                        "src": "4478:53:35"
                      },
                      {
                        "assignments": [
                          5784
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5784,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "4759:6:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 5810,
                            "src": "4751:14:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5783,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4751:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5800,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 5788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4808:10:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 5789,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5675,
                                  "src": "4820:16:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5793,
                                          "name": "MINTER_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5668,
                                          "src": "4859:15:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 5794,
                                            "name": "_msgSender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2149,
                                            "src": "4876:10:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                              "typeString": "function () view returns (address)"
                                            }
                                          },
                                          "id": 5795,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4876:12:35",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 5791,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "4848:3:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 5792,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "4848:10:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 5796,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4848:41:35",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5790,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "4838:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4838:52:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 5786,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4791:3:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "4791:16:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4791:100:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5785,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4768:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 5799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4768:133:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4751:150:35"
                      },
                      {
                        "assignments": [
                          5802
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5802,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "5153:16:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 5810,
                            "src": "5145:24:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5801,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5145:7:35",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5807,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5805,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5768,
                              "src": "5187:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 5803,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5784,
                              "src": "5172:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 5804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2680,
                            "src": "5172:14:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 5806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5172:25:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5145:52:35"
                      },
                      {
                        "expression": {
                          "id": 5808,
                          "name": "recoveredAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5802,
                          "src": "5214:16:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5772,
                        "id": 5809,
                        "nodeType": "Return",
                        "src": "5207:23:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5766,
                    "nodeType": "StructuredDocumentation",
                    "src": "4294:94:35",
                    "text": "@notice Gets signer address of signature\n @param signature Signature of the message"
                  },
                  "functionSelector": "e6adabfd",
                  "id": 5811,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "4402:9:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5768,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "4427:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5811,
                        "src": "4412:24:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5767,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4412:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4411:26:35"
                  },
                  "returnParameters": {
                    "id": 5772,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5771,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5811,
                        "src": "4459:7:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4459:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4458:9:35"
                  },
                  "scope": 5847,
                  "src": "4393:844:35",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5835,
                    "nodeType": "Block",
                    "src": "5400:126:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 5822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5818,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 54,
                                    "src": "5418:5:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5418:7:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5820,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "5429:10:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5429:12:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5418:23:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 5826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5823,
                                  "name": "admin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5673,
                                  "src": "5445:5:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5824,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "5454:10:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5454:12:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5445:21:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5418:48:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                              "id": 5828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5468:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              },
                              "value": "invalid authorization"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              }
                            ],
                            "id": 5817,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5410:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5410:82:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5830,
                        "nodeType": "ExpressionStatement",
                        "src": "5410:82:35"
                      },
                      {
                        "expression": {
                          "id": 5833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5831,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5673,
                            "src": "5502:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5832,
                            "name": "_newAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "5510:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5502:17:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5834,
                        "nodeType": "ExpressionStatement",
                        "src": "5502:17:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5812,
                    "nodeType": "StructuredDocumentation",
                    "src": "5243:106:35",
                    "text": "@notice Sets the admin for authorizing artist deployment\n @param _newAdmin address of new admin"
                  },
                  "functionSelector": "704b6c02",
                  "id": 5836,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAdmin",
                  "nameLocation": "5363:8:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5814,
                        "mutability": "mutable",
                        "name": "_newAdmin",
                        "nameLocation": "5380:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5836,
                        "src": "5372:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5372:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5371:19:35"
                  },
                  "returnParameters": {
                    "id": 5816,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5400:0:35"
                  },
                  "scope": 5847,
                  "src": "5354:172:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    820
                  ],
                  "body": {
                    "id": 5845,
                    "nodeType": "Block",
                    "src": "5660:2:35",
                    "statements": []
                  },
                  "documentation": {
                    "id": 5837,
                    "nodeType": "StructuredDocumentation",
                    "src": "5532:59:35",
                    "text": "@notice Authorizes upgrades\n @dev DO NOT REMOVE!"
                  },
                  "id": 5846,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5843,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5842,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "5650:9:35"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5650:9:35"
                    }
                  ],
                  "name": "_authorizeUpgrade",
                  "nameLocation": "5605:17:35",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5841,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5641:8:35"
                  },
                  "parameters": {
                    "id": 5840,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5839,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5846,
                        "src": "5623:7:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5838,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5623:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5622:9:35"
                  },
                  "returnParameters": {
                    "id": 5844,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5660:0:35"
                  },
                  "scope": 5847,
                  "src": "5596:66:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5848,
              "src": "2089:3575:35",
              "usedErrors": []
            }
          ],
          "src": "45:5620:35"
        },
        "id": 35
      },
      "contracts/ArtistCreatorV3.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistCreatorV3.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "AddressUpgradeable": [
              2122
            ],
            "ArtistCreatorV3": [
              6053
            ],
            "BeaconProxy": [
              3583
            ],
            "ContextUpgradeable": [
              2164
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSAUpgradeable": [
              2931
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "ERC1967UpgradeUpgradeable": [
              529
            ],
            "IBeacon": [
              3593
            ],
            "IBeaconUpgradeable": [
              539
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "IERC1822ProxiableUpgradeable": [
              160
            ],
            "Initializable": [
              690
            ],
            "OwnableUpgradeable": [
              131
            ],
            "Proxy": [
              3517
            ],
            "StorageSlot": [
              4045
            ],
            "StorageSlotUpgradeable": [
              2298
            ],
            "StringsUpgradeable": [
              2524
            ],
            "UUPSUpgradeable": [
              826
            ]
          },
          "id": 6054,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5849,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".14"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:24:36"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 5850,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6054,
              "sourceUnit": 132,
              "src": "1539:75:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "id": 5851,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6054,
              "sourceUnit": 691,
              "src": "1615:75:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "id": 5852,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6054,
              "sourceUnit": 827,
              "src": "1691:77:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 5853,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6054,
              "sourceUnit": 2239,
              "src": "1769:75:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "id": 5854,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6054,
              "sourceUnit": 2932,
              "src": "1845:85:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "id": 5855,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6054,
              "sourceUnit": 3584,
              "src": "1931:62:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5857,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "2117:13:36"
                  },
                  "id": 5858,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2117:13:36"
                },
                {
                  "baseName": {
                    "id": 5859,
                    "name": "UUPSUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 826,
                    "src": "2132:15:36"
                  },
                  "id": 5860,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2132:15:36"
                },
                {
                  "baseName": {
                    "id": 5861,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "2149:18:36"
                  },
                  "id": 5862,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2149:18:36"
                }
              ],
              "canonicalName": "ArtistCreatorV3",
              "contractDependencies": [
                3583
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 5856,
                "nodeType": "StructuredDocumentation",
                "src": "1995:94:36",
                "text": "@title The Artist Creator factory contract\n @author Sound.xyz - @gigamesh & @vigneshka"
              },
              "fullyImplemented": true,
              "id": 6053,
              "linearizedBaseContracts": [
                6053,
                131,
                2164,
                826,
                529,
                160,
                690
              ],
              "name": "ArtistCreatorV3",
              "nameLocation": "2098:15:36",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 5866,
                  "libraryName": {
                    "id": 5863,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "2180:19:36"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2174:58:36",
                  "typeName": {
                    "id": 5865,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5864,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2204:27:36"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2204:27:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 5869,
                  "libraryName": {
                    "id": 5867,
                    "name": "ECDSAUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2931,
                    "src": "2243:16:36"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2237:35:36",
                  "typeName": {
                    "id": 5868,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2264:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "fa4d280c",
                  "id": 5874,
                  "mutability": "constant",
                  "name": "MINTER_TYPEHASH",
                  "nameLocation": "2407:15:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 6053,
                  "src": "2383:85:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5870,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2383:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "4465706c6f79657228616464726573732061727469737457616c6c657429",
                        "id": 5872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2435:32:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        },
                        "value": "Deployer(address artistWallet)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        }
                      ],
                      "id": 5871,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2425:9:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 5873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2425:43:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 5877,
                  "mutability": "mutable",
                  "name": "atArtistId",
                  "nameLocation": "2575:10:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 6053,
                  "src": "2539:46:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 5876,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5875,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2539:27:36"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2539:27:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "f851a440",
                  "id": 5879,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "2674:5:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 6053,
                  "src": "2659:20:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5878,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2659:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 5881,
                  "mutability": "mutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "2799:16:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 6053,
                  "src": "2784:31:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5880,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2784:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7e2ec6d0",
                  "id": 5883,
                  "mutability": "mutable",
                  "name": "beaconAddress",
                  "nameLocation": "2944:13:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 6053,
                  "src": "2929:28:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5882,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "b16a43f0",
                  "id": 5886,
                  "mutability": "mutable",
                  "name": "artistContracts",
                  "nameLocation": "3048:15:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 6053,
                  "src": "3031:32:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5884,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3031:7:36",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 5885,
                    "nodeType": "ArrayTypeName",
                    "src": "3031:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 5887,
                    "nodeType": "StructuredDocumentation",
                    "src": "3111:37:36",
                    "text": "Emitted when an Artist is created"
                  },
                  "eventSelector": "23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0",
                  "id": 5897,
                  "name": "CreatedArtist",
                  "nameLocation": "3159:13:36",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5889,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "artistId",
                        "nameLocation": "3181:8:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5897,
                        "src": "3173:16:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5888,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3173:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5891,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "3198:4:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5897,
                        "src": "3191:11:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5890,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3191:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5893,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nameLocation": "3211:6:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5897,
                        "src": "3204:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5892,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3204:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5895,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "artistAddress",
                        "nameLocation": "3235:13:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5897,
                        "src": "3219:29:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3219:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3172:77:36"
                  },
                  "src": "3153:97:36"
                },
                {
                  "body": {
                    "id": 5970,
                    "nodeType": "Block",
                    "src": "3607:681:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 5916,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 5913,
                                        "name": "signature",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5900,
                                        "src": "3636:9:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "id": 5912,
                                      "name": "getSigner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6017,
                                      "src": "3626:9:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_address_$",
                                        "typeString": "function (bytes calldata) view returns (address)"
                                      }
                                    },
                                    "id": 5914,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3626:20:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 5915,
                                    "name": "admin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5879,
                                    "src": "3650:5:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "3626:29:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 5917,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3625:31:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                              "id": 5918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3658:33:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              },
                              "value": "invalid authorization signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              }
                            ],
                            "id": 5911,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3617:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3617:75:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5920,
                        "nodeType": "ExpressionStatement",
                        "src": "3617:75:36"
                      },
                      {
                        "assignments": [
                          5922
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5922,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "3711:4:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5970,
                            "src": "3703:12:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5921,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3703:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5934,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 5929,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2149,
                                        "src": "3742:10:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                          "typeString": "function () view returns (address)"
                                        }
                                      },
                                      "id": 5930,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3742:12:36",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3734:7:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 5927,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3734:7:36",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5931,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3734:21:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 5926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3726:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 5925,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3726:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3726:30:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3718:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 5923,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3718:7:36",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3718:39:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3703:54:36"
                      },
                      {
                        "assignments": [
                          5937
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5937,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nameLocation": "3830:5:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5970,
                            "src": "3818:17:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                              "typeString": "contract BeaconProxy"
                            },
                            "typeName": {
                              "id": 5936,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5935,
                                "name": "BeaconProxy",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3583,
                                "src": "3818:11:36"
                              },
                              "referencedDeclaration": 3583,
                              "src": "3818:11:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5954,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5943,
                              "name": "beaconAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5883,
                              "src": "3879:13:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783566316536663664",
                                  "id": 5946,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4068:10:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1595830125_by_1",
                                    "typeString": "int_const 1595830125"
                                  },
                                  "value": "0x5f1e6f6d"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5947,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "4080:10:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 5948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4080:12:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5949,
                                  "name": "_name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5902,
                                  "src": "4094:5:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 5950,
                                  "name": "_symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5904,
                                  "src": "4101:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 5951,
                                  "name": "_baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5906,
                                  "src": "4110:8:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1595830125_by_1",
                                    "typeString": "int_const 1595830125"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 5944,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4045:3:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "4045:22:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 5952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4045:74:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "3838:15:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$3583_$",
                                "typeString": "function (address,bytes memory) payable returns (contract BeaconProxy)"
                              },
                              "typeName": {
                                "id": 5939,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 5938,
                                  "name": "BeaconProxy",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 3583,
                                  "src": "3842:11:36"
                                },
                                "referencedDeclaration": 3583,
                                "src": "3842:11:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                  "typeString": "contract BeaconProxy"
                                }
                              }
                            },
                            "id": 5942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "salt"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 5941,
                                "name": "salt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5922,
                                "src": "3860:4:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "src": "3838:27:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$3583_$salt",
                              "typeString": "function (address,bytes memory) payable returns (contract BeaconProxy)"
                            }
                          },
                          "id": 5953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3838:291:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                            "typeString": "contract BeaconProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3818:311:36"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 5956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4215:1:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 5957,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5902,
                              "src": "4218:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 5958,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5904,
                              "src": "4225:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5961,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5937,
                                  "src": "4242:5:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                ],
                                "id": 5960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4234:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5959,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4234:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4234:14:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5955,
                            "name": "CreatedArtist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5897,
                            "src": "4201:13:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256,string memory,string memory,address)"
                            }
                          },
                          "id": 5963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4201:48:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5964,
                        "nodeType": "EmitStatement",
                        "src": "4196:53:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5967,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5937,
                              "src": "4275:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            ],
                            "id": 5966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4267:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5965,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4267:7:36",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4267:14:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5910,
                        "id": 5969,
                        "nodeType": "Return",
                        "src": "4260:21:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5898,
                    "nodeType": "StructuredDocumentation",
                    "src": "3300:123:36",
                    "text": "@notice Creates a new artist contract as a factory with a deterministic address\n @param _name Name of the artist"
                  },
                  "functionSelector": "233654eb",
                  "id": 5971,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createArtist",
                  "nameLocation": "3437:12:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5900,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "3474:9:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5971,
                        "src": "3459:24:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5899,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3459:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5902,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "3507:5:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5971,
                        "src": "3493:19:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5901,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3493:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5904,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "3536:7:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5971,
                        "src": "3522:21:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5903,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3522:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5906,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "3567:8:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5971,
                        "src": "3553:22:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5905,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3553:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3449:132:36"
                  },
                  "returnParameters": {
                    "id": 5910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5909,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5971,
                        "src": "3598:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3598:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3597:9:36"
                  },
                  "scope": 6053,
                  "src": "3428:860:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6016,
                    "nodeType": "Block",
                    "src": "4468:769:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5980,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5879,
                                "src": "4486:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4503:1:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 5982,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4495:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5981,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4495:7:36",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4495:10:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4486:19:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                              "id": 5986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4507:23:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              },
                              "value": "whitelist not enabled"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              }
                            ],
                            "id": 5979,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4478:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4478:53:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5988,
                        "nodeType": "ExpressionStatement",
                        "src": "4478:53:36"
                      },
                      {
                        "assignments": [
                          5990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5990,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "4759:6:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 6016,
                            "src": "4751:14:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5989,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4751:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6006,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 5994,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4808:10:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 5995,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5881,
                                  "src": "4820:16:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5999,
                                          "name": "MINTER_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5874,
                                          "src": "4859:15:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 6000,
                                            "name": "_msgSender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2149,
                                            "src": "4876:10:36",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                              "typeString": "function () view returns (address)"
                                            }
                                          },
                                          "id": 6001,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4876:12:36",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 5997,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "4848:3:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 5998,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "4848:10:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 6002,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4848:41:36",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5996,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "4838:9:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 6003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4838:52:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 5992,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4791:3:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "4791:16:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 6004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4791:100:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5991,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4768:9:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 6005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4768:133:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4751:150:36"
                      },
                      {
                        "assignments": [
                          6008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6008,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "5153:16:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 6016,
                            "src": "5145:24:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6007,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5145:7:36",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6013,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6011,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5974,
                              "src": "5187:9:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 6009,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5990,
                              "src": "5172:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 6010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2680,
                            "src": "5172:14:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 6012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5172:25:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5145:52:36"
                      },
                      {
                        "expression": {
                          "id": 6014,
                          "name": "recoveredAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6008,
                          "src": "5214:16:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5978,
                        "id": 6015,
                        "nodeType": "Return",
                        "src": "5207:23:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5972,
                    "nodeType": "StructuredDocumentation",
                    "src": "4294:94:36",
                    "text": "@notice Gets signer address of signature\n @param signature Signature of the message"
                  },
                  "functionSelector": "e6adabfd",
                  "id": 6017,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "4402:9:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5974,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "4427:9:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 6017,
                        "src": "4412:24:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5973,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4412:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4411:26:36"
                  },
                  "returnParameters": {
                    "id": 5978,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5977,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6017,
                        "src": "4459:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5976,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4459:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4458:9:36"
                  },
                  "scope": 6053,
                  "src": "4393:844:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6041,
                    "nodeType": "Block",
                    "src": "5400:126:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 6028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6024,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 54,
                                    "src": "5418:5:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 6025,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5418:7:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6026,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "5429:10:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 6027,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5429:12:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5418:23:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 6032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6029,
                                  "name": "admin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5879,
                                  "src": "5445:5:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6030,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "5454:10:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 6031,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5454:12:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5445:21:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5418:48:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                              "id": 6034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5468:23:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              },
                              "value": "invalid authorization"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              }
                            ],
                            "id": 6023,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5410:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5410:82:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6036,
                        "nodeType": "ExpressionStatement",
                        "src": "5410:82:36"
                      },
                      {
                        "expression": {
                          "id": 6039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6037,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5879,
                            "src": "5502:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6038,
                            "name": "_newAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6020,
                            "src": "5510:9:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5502:17:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6040,
                        "nodeType": "ExpressionStatement",
                        "src": "5502:17:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6018,
                    "nodeType": "StructuredDocumentation",
                    "src": "5243:106:36",
                    "text": "@notice Sets the admin for authorizing artist deployment\n @param _newAdmin address of new admin"
                  },
                  "functionSelector": "704b6c02",
                  "id": 6042,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAdmin",
                  "nameLocation": "5363:8:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6020,
                        "mutability": "mutable",
                        "name": "_newAdmin",
                        "nameLocation": "5380:9:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 6042,
                        "src": "5372:17:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6019,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5372:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5371:19:36"
                  },
                  "returnParameters": {
                    "id": 6022,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5400:0:36"
                  },
                  "scope": 6053,
                  "src": "5354:172:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    820
                  ],
                  "body": {
                    "id": 6051,
                    "nodeType": "Block",
                    "src": "5660:2:36",
                    "statements": []
                  },
                  "documentation": {
                    "id": 6043,
                    "nodeType": "StructuredDocumentation",
                    "src": "5532:59:36",
                    "text": "@notice Authorizes upgrades\n @dev DO NOT REMOVE!"
                  },
                  "id": 6052,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6049,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6048,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "5650:9:36"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5650:9:36"
                    }
                  ],
                  "name": "_authorizeUpgrade",
                  "nameLocation": "5605:17:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6047,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5641:8:36"
                  },
                  "parameters": {
                    "id": 6046,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6045,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6052,
                        "src": "5623:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6044,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5623:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5622:9:36"
                  },
                  "returnParameters": {
                    "id": 6050,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5660:0:36"
                  },
                  "scope": 6053,
                  "src": "5596:66:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6054,
              "src": "2089:3575:36",
              "usedErrors": []
            }
          ],
          "src": "45:5620:36"
        },
        "id": 36
      },
      "contracts/ArtistV2.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistV2.sol",
          "exportedSymbols": {
            "ArtistCreator": [
              5621
            ],
            "ArtistV2": [
              6911
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSA": [
              4678
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "OwnableUpgradeable": [
              131
            ],
            "Strings": [
              4271
            ]
          },
          "id": 6912,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6055,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:23:37"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "id": 6058,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6912,
              "sourceUnit": 151,
              "src": "547:127:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6056,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 150,
                    "src": "555:19:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6057,
                    "name": "IERC165Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2987,
                    "src": "576:18:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "id": 6060,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6912,
              "sourceUnit": 1719,
              "src": "675:105:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6059,
                    "name": "ERC721Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1718,
                    "src": "683:17:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 6062,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6912,
              "sourceUnit": 132,
              "src": "781:101:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6061,
                    "name": "OwnableUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 131,
                    "src": "789:18:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "@openzeppelin/contracts/utils/Strings.sol",
              "id": 6064,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6912,
              "sourceUnit": 4272,
              "src": "883:66:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6063,
                    "name": "Strings",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4271,
                    "src": "891:7:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 6066,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6912,
              "sourceUnit": 2239,
              "src": "950:102:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6065,
                    "name": "CountersUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2238,
                    "src": "958:19:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ArtistCreator.sol",
              "file": "./ArtistCreator.sol",
              "id": 6068,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6912,
              "sourceUnit": 5622,
              "src": "1053:50:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6067,
                    "name": "ArtistCreator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5621,
                    "src": "1061:13:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 6070,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6912,
              "sourceUnit": 4679,
              "src": "1104:75:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6069,
                    "name": "ECDSA",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4678,
                    "src": "1112:5:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 6072,
                    "name": "ERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1718,
                    "src": "1492:17:37"
                  },
                  "id": 6073,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1492:17:37"
                },
                {
                  "baseName": {
                    "id": 6074,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 150,
                    "src": "1511:19:37"
                  },
                  "id": 6075,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1511:19:37"
                },
                {
                  "baseName": {
                    "id": 6076,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "1532:18:37"
                  },
                  "id": 6077,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1532:18:37"
                }
              ],
              "canonicalName": "ArtistV2",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 6071,
                "nodeType": "StructuredDocumentation",
                "src": "1181:290:37",
                "text": "@title Artist\n @author SoundXYZ - @gigamesh & @vigneshka\n @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol"
              },
              "fullyImplemented": true,
              "id": 6911,
              "linearizedBaseContracts": [
                6911,
                131,
                150,
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "ArtistV2",
              "nameLocation": "1480:8:37",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 6080,
                  "libraryName": {
                    "id": 6078,
                    "name": "Strings",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4271,
                    "src": "1657:7:37"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1651:26:37",
                  "typeName": {
                    "id": 6079,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1669:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 6084,
                  "libraryName": {
                    "id": 6081,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "1688:19:37"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1682:58:37",
                  "typeName": {
                    "id": 6083,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6082,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "1712:27:37"
                    },
                    "referencedDeclaration": 2170,
                    "src": "1712:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 6087,
                  "libraryName": {
                    "id": 6085,
                    "name": "ECDSA",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4678,
                    "src": "1751:5:37"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1745:24:37",
                  "typeName": {
                    "id": 6086,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1761:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "canonicalName": "ArtistV2.TimeType",
                  "id": 6090,
                  "members": [
                    {
                      "id": 6088,
                      "name": "START",
                      "nameLocation": "1799:5:37",
                      "nodeType": "EnumValue",
                      "src": "1799:5:37"
                    },
                    {
                      "id": 6089,
                      "name": "END",
                      "nameLocation": "1814:3:37",
                      "nodeType": "EnumValue",
                      "src": "1814:3:37"
                    }
                  ],
                  "name": "TimeType",
                  "nameLocation": "1780:8:37",
                  "nodeType": "EnumDefinition",
                  "src": "1775:48:37"
                },
                {
                  "canonicalName": "ArtistV2.Edition",
                  "id": 6109,
                  "members": [
                    {
                      "constant": false,
                      "id": 6092,
                      "mutability": "mutable",
                      "name": "fundingRecipient",
                      "nameLocation": "1968:16:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "1952:32:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 6091,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1952:15:37",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6094,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "2065:5:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2057:13:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6093,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2057:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6096,
                      "mutability": "mutable",
                      "name": "numSold",
                      "nameLocation": "2132:7:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2125:14:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6095,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2125:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6098,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "2214:8:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2207:15:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6097,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2207:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6100,
                      "mutability": "mutable",
                      "name": "royaltyBPS",
                      "nameLocation": "2272:10:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2265:17:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6099,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2265:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6102,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "2367:9:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2360:16:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6101,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2360:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6104,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "2459:7:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2452:14:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6103,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2452:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6106,
                      "mutability": "mutable",
                      "name": "presaleQuantity",
                      "nameLocation": "2521:15:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2514:22:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6105,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2514:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6108,
                      "mutability": "mutable",
                      "name": "signerAddress",
                      "nameLocation": "2590:13:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 6109,
                      "src": "2582:21:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6107,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2582:7:37",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Edition",
                  "nameLocation": "1878:7:37",
                  "nodeType": "StructDefinition",
                  "scope": 6911,
                  "src": "1871:739:37",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 6111,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "2728:7:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "2712:23:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6110,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2712:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6114,
                  "mutability": "mutable",
                  "name": "atTokenId",
                  "nameLocation": "2778:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "2742:45:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 6113,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6112,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2742:27:37"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2742:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 6117,
                  "mutability": "mutable",
                  "name": "atEditionId",
                  "nameLocation": "2829:11:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "2793:47:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 6116,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6115,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2793:27:37"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2793:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "279c806e",
                  "id": 6122,
                  "mutability": "mutable",
                  "name": "editions",
                  "nameLocation": "2932:8:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "2897:43:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                    "typeString": "mapping(uint256 => struct ArtistV2.Edition)"
                  },
                  "typeName": {
                    "id": 6121,
                    "keyType": {
                      "id": 6118,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2905:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2897:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                      "typeString": "mapping(uint256 => struct ArtistV2.Edition)"
                    },
                    "valueType": {
                      "id": 6120,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6119,
                        "name": "Edition",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6109,
                        "src": "2916:7:37"
                      },
                      "referencedDeclaration": 6109,
                      "src": "2916:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Edition_$6109_storage_ptr",
                        "typeString": "struct ArtistV2.Edition"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "602787ed",
                  "id": 6126,
                  "mutability": "mutable",
                  "name": "tokenToEdition",
                  "nameLocation": "3023:14:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "2988:49:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 6125,
                    "keyType": {
                      "id": 6123,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2996:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2988:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 6124,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3007:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e1a3d573",
                  "id": 6130,
                  "mutability": "mutable",
                  "name": "depositedForEdition",
                  "nameLocation": "3151:19:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "3116:54:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 6129,
                    "keyType": {
                      "id": 6127,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3124:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3116:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 6128,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3135:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d3bb0528",
                  "id": 6134,
                  "mutability": "mutable",
                  "name": "withdrawnForEdition",
                  "nameLocation": "3292:19:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "3257:54:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 6133,
                    "keyType": {
                      "id": 6131,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3265:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3257:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 6132,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3276:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d4ae7522",
                  "id": 6139,
                  "mutability": "constant",
                  "name": "PRESALE_TYPEHASH",
                  "nameLocation": "3408:16:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 6911,
                  "src": "3384:139:37",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6135,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3384:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "45646974696f6e496e666f286164647265737320636f6e7472616374416464726573732c61646472657373206275796572416464726573732c75696e743235362065646974696f6e496429",
                        "id": 6137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3445:77:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d045",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)\""
                        },
                        "value": "EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d045",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)\""
                        }
                      ],
                      "id": 6136,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3435:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 6138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3435:88:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3",
                  "id": 6159,
                  "name": "EditionCreated",
                  "nameLocation": "3631:14:37",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6141,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "3671:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3655:25:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6140,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3655:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6143,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "3698:16:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3690:24:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6142,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3690:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6145,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "3732:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3724:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6144,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3724:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6147,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "quantity",
                        "nameLocation": "3754:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3747:15:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6146,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3747:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6149,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "royaltyBPS",
                        "nameLocation": "3779:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3772:17:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6148,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3772:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6151,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "3806:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3799:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6150,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3799:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6153,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "3832:7:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3825:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6152,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3825:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6155,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "presaleQuantity",
                        "nameLocation": "3856:15:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3849:22:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6154,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3849:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6157,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "3889:13:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6159,
                        "src": "3881:21:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3881:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3645:263:37"
                  },
                  "src": "3625:284:37"
                },
                {
                  "anonymous": false,
                  "eventSelector": "e38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785",
                  "id": 6169,
                  "name": "EditionPurchased",
                  "nameLocation": "3921:16:37",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6161,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "3963:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6169,
                        "src": "3947:25:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3947:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6163,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3998:7:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6169,
                        "src": "3982:23:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3982:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6165,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "numSold",
                        "nameLocation": "4106:7:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6169,
                        "src": "4099:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6164,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4099:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6167,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nameLocation": "4198:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6169,
                        "src": "4182:21:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6166,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4182:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3937:272:37"
                  },
                  "src": "3915:295:37"
                },
                {
                  "anonymous": false,
                  "eventSelector": "494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c",
                  "id": 6178,
                  "name": "AuctionTimeSet",
                  "nameLocation": "4222:14:37",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6172,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timeType",
                        "nameLocation": "4246:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6178,
                        "src": "4237:17:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TimeType_$6090",
                          "typeString": "enum ArtistV2.TimeType"
                        },
                        "typeName": {
                          "id": 6171,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6170,
                            "name": "TimeType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6090,
                            "src": "4237:8:37"
                          },
                          "referencedDeclaration": 6090,
                          "src": "4237:8:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TimeType_$6090",
                            "typeString": "enum ArtistV2.TimeType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6174,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4264:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6178,
                        "src": "4256:17:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6173,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4256:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6176,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newTime",
                        "nameLocation": "4290:7:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6178,
                        "src": "4275:22:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6175,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4275:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4236:62:37"
                  },
                  "src": "4216:83:37"
                },
                {
                  "body": {
                    "id": 6230,
                    "nodeType": "Block",
                    "src": "4727:466:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6195,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6185,
                              "src": "4751:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 6196,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6187,
                              "src": "4758:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 6194,
                            "name": "__ERC721_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "4737:13:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 6197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4737:29:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6198,
                        "nodeType": "ExpressionStatement",
                        "src": "4737:29:37"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6199,
                            "name": "__Ownable_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "4776:14:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 6200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4776:16:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6201,
                        "nodeType": "ExpressionStatement",
                        "src": "4776:16:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6203,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6181,
                              "src": "4882:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6202,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 105,
                            "src": "4864:17:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 6204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4864:25:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6205,
                        "nodeType": "ExpressionStatement",
                        "src": "4864:25:37"
                      },
                      {
                        "expression": {
                          "id": 6218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6206,
                            "name": "baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6111,
                            "src": "4959:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6211,
                                    "name": "_baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6189,
                                    "src": "4993:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 6212,
                                        "name": "_artistId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6183,
                                        "src": "5003:9:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6213,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4133,
                                      "src": "5003:18:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 6214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5003:20:37",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 6215,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5025:3:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 6209,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "4976:3:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 6210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "4976:16:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 6216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4976:53:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 6208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4969:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 6207,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "4969:6:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4969:61:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "4959:71:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 6219,
                        "nodeType": "ExpressionStatement",
                        "src": "4959:71:37"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6220,
                              "name": "atTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6114,
                              "src": "5085:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 6222,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "5085:19:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 6223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5085:21:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6224,
                        "nodeType": "ExpressionStatement",
                        "src": "5085:21:37"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6225,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6117,
                              "src": "5163:11:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 6227,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "5163:21:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 6228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5163:23:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6229,
                        "nodeType": "ExpressionStatement",
                        "src": "5163:23:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6179,
                    "nodeType": "StructuredDocumentation",
                    "src": "4423:111:37",
                    "text": "@notice Initializes the contract\n @param _owner Owner of edition\n @param _name Name of artist"
                  },
                  "functionSelector": "abfc83a0",
                  "id": 6231,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6192,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6191,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "4715:11:37"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4715:11:37"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "4548:10:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6181,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "4576:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6231,
                        "src": "4568:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4568:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6183,
                        "mutability": "mutable",
                        "name": "_artistId",
                        "nameLocation": "4600:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6231,
                        "src": "4592:17:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4592:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6185,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "4633:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6231,
                        "src": "4619:19:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6184,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4619:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6187,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "4662:7:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6231,
                        "src": "4648:21:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6186,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4648:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6189,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "4693:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6231,
                        "src": "4679:22:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6188,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4679:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4558:149:37"
                  },
                  "returnParameters": {
                    "id": 6193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4727:0:37"
                  },
                  "scope": 6911,
                  "src": "4539:654:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6314,
                    "nodeType": "Block",
                    "src": "6080:916:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 6258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6254,
                                "name": "_presaleQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6246,
                                "src": "6098:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 6257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6255,
                                  "name": "_quantity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6238,
                                  "src": "6117:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 6256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6129:1:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "6117:13:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "6098:32:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "50726573616c65207175616e7469747920746f6f20626967",
                              "id": 6259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6132:26:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c88f947dbab6e5d162cab05f5f573e5e0669748f4150827946097b5f9bc4c0c5",
                                "typeString": "literal_string \"Presale quantity too big\""
                              },
                              "value": "Presale quantity too big"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c88f947dbab6e5d162cab05f5f573e5e0669748f4150827946097b5f9bc4c0c5",
                                "typeString": "literal_string \"Presale quantity too big\""
                              }
                            ],
                            "id": 6253,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6090:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6090:69:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6261,
                        "nodeType": "ExpressionStatement",
                        "src": "6090:69:37"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 6264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6262,
                            "name": "_presaleQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6246,
                            "src": "6174:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6193:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6174:20:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6276,
                        "nodeType": "IfStatement",
                        "src": "6170:118:37",
                        "trueBody": {
                          "id": 6275,
                          "nodeType": "Block",
                          "src": "6196:92:37",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6266,
                                      "name": "_signerAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6248,
                                      "src": "6218:14:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 6269,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6244:1:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 6268,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6236:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 6267,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6236:7:37",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6270,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6236:10:37",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "6218:28:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "id": 6272,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6248:28:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    },
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    }
                                  ],
                                  "id": 6265,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6210:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6210:67:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6274,
                              "nodeType": "ExpressionStatement",
                              "src": "6210:67:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 6293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6277,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6122,
                              "src": "6298:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                              }
                            },
                            "id": 6281,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 6278,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6117,
                                  "src": "6307:11:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 6279,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "6307:19:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 6280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6307:21:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6298:31:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_storage",
                              "typeString": "struct ArtistV2.Edition storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6283,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6234,
                                "src": "6372:17:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 6284,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6236,
                                "src": "6410:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 6285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6439:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 6286,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6238,
                                "src": "6464:9:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 6287,
                                "name": "_royaltyBPS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6240,
                                "src": "6499:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 6288,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6242,
                                "src": "6535:10:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 6289,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6244,
                                "src": "6568:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 6290,
                                "name": "_presaleQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6246,
                                "src": "6607:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 6291,
                                "name": "_signerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6248,
                                "src": "6652:14:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6282,
                              "name": "Edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6109,
                              "src": "6332:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Edition_$6109_storage_ptr_$",
                                "typeString": "type(struct ArtistV2.Edition storage pointer)"
                              }
                            },
                            "id": 6292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "fundingRecipient",
                              "price",
                              "numSold",
                              "quantity",
                              "royaltyBPS",
                              "startTime",
                              "endTime",
                              "presaleQuantity",
                              "signerAddress"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6332:345:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_memory_ptr",
                              "typeString": "struct ArtistV2.Edition memory"
                            }
                          },
                          "src": "6298:379:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$6109_storage",
                            "typeString": "struct ArtistV2.Edition storage ref"
                          }
                        },
                        "id": 6294,
                        "nodeType": "ExpressionStatement",
                        "src": "6298:379:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 6296,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6117,
                                  "src": "6721:11:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 6297,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "6721:19:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 6298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6721:21:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6299,
                              "name": "_fundingRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6234,
                              "src": "6756:17:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6300,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6236,
                              "src": "6787:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6301,
                              "name": "_quantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6238,
                              "src": "6807:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 6302,
                              "name": "_royaltyBPS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6240,
                              "src": "6830:11:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 6303,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6242,
                              "src": "6855:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 6304,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6244,
                              "src": "6879:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 6305,
                              "name": "_presaleQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6246,
                              "src": "6901:16:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 6306,
                              "name": "_signerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6248,
                              "src": "6931:14:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6295,
                            "name": "EditionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6159,
                            "src": "6693:14:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint32,uint32,uint32,uint32,uint32,address)"
                            }
                          },
                          "id": 6307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6693:262:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6308,
                        "nodeType": "EmitStatement",
                        "src": "6688:267:37"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6309,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6117,
                              "src": "6966:11:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 6311,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "6966:21:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 6312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6966:23:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6313,
                        "nodeType": "ExpressionStatement",
                        "src": "6966:23:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6232,
                    "nodeType": "StructuredDocumentation",
                    "src": "5199:590:37",
                    "text": "@notice Creates a new edition.\n @param _fundingRecipient The account that will receive sales revenue.\n @param _price The price at which each token will be sold, in ETH.\n @param _quantity The maximum number of tokens that can be sold.\n @param _royaltyBPS The royalty amount in bps.\n @param _startTime The start time of the auction, in seconds since unix epoch.\n @param _endTime The end time of the auction, in seconds since unix epoch.\n @param _presaleQuantity The quantity of presale tokens.\n @param _signerAddress signer address."
                  },
                  "functionSelector": "73aaf879",
                  "id": 6315,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6251,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6250,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "6070:9:37"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6070:9:37"
                    }
                  ],
                  "name": "createEdition",
                  "nameLocation": "5803:13:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6234,
                        "mutability": "mutable",
                        "name": "_fundingRecipient",
                        "nameLocation": "5842:17:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "5826:33:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 6233,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5826:15:37",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6236,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "5877:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "5869:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6235,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5869:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6238,
                        "mutability": "mutable",
                        "name": "_quantity",
                        "nameLocation": "5900:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "5893:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6237,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5893:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6240,
                        "mutability": "mutable",
                        "name": "_royaltyBPS",
                        "nameLocation": "5926:11:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "5919:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6239,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5919:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6242,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "5954:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "5947:17:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6241,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5947:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6244,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "5981:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "5974:15:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6243,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5974:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6246,
                        "mutability": "mutable",
                        "name": "_presaleQuantity",
                        "nameLocation": "6006:16:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "5999:23:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6245,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5999:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6248,
                        "mutability": "mutable",
                        "name": "_signerAddress",
                        "nameLocation": "6040:14:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "6032:22:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6247,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6032:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5816:244:37"
                  },
                  "returnParameters": {
                    "id": 6252,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6080:0:37"
                  },
                  "scope": 6911,
                  "src": "5794:1202:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6472,
                    "nodeType": "Block",
                    "src": "7310:2111:37",
                    "statements": [
                      {
                        "assignments": [
                          6324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6324,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "7381:5:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6472,
                            "src": "7373:13:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6323,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7373:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6329,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 6325,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6122,
                              "src": "7389:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                              }
                            },
                            "id": 6327,
                            "indexExpression": {
                              "id": 6326,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "7398:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7389:20:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_storage",
                              "typeString": "struct ArtistV2.Edition storage ref"
                            }
                          },
                          "id": 6328,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6094,
                          "src": "7389:26:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7373:42:37"
                      },
                      {
                        "assignments": [
                          6331
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6331,
                            "mutability": "mutable",
                            "name": "quantity",
                            "nameLocation": "7432:8:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6472,
                            "src": "7425:15:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6330,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7425:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6336,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 6332,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6122,
                              "src": "7443:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                              }
                            },
                            "id": 6334,
                            "indexExpression": {
                              "id": 6333,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "7452:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7443:20:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_storage",
                              "typeString": "struct ArtistV2.Edition storage ref"
                            }
                          },
                          "id": 6335,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6098,
                          "src": "7443:29:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7425:47:37"
                      },
                      {
                        "assignments": [
                          6338
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6338,
                            "mutability": "mutable",
                            "name": "numSold",
                            "nameLocation": "7489:7:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6472,
                            "src": "7482:14:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6337,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7482:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6343,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 6339,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6122,
                              "src": "7499:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                              }
                            },
                            "id": 6341,
                            "indexExpression": {
                              "id": 6340,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "7508:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7499:20:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_storage",
                              "typeString": "struct ArtistV2.Edition storage ref"
                            }
                          },
                          "id": 6342,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numSold",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6096,
                          "src": "7499:28:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7482:45:37"
                      },
                      {
                        "assignments": [
                          6345
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6345,
                            "mutability": "mutable",
                            "name": "startTime",
                            "nameLocation": "7544:9:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6472,
                            "src": "7537:16:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6344,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7537:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6350,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 6346,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6122,
                              "src": "7556:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                              }
                            },
                            "id": 6348,
                            "indexExpression": {
                              "id": 6347,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "7565:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7556:20:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_storage",
                              "typeString": "struct ArtistV2.Edition storage ref"
                            }
                          },
                          "id": 6349,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6102,
                          "src": "7556:30:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7537:49:37"
                      },
                      {
                        "assignments": [
                          6352
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6352,
                            "mutability": "mutable",
                            "name": "endTime",
                            "nameLocation": "7603:7:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6472,
                            "src": "7596:14:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6351,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7596:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6357,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 6353,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6122,
                              "src": "7613:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                              }
                            },
                            "id": 6355,
                            "indexExpression": {
                              "id": 6354,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "7622:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7613:20:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_storage",
                              "typeString": "struct ArtistV2.Edition storage ref"
                            }
                          },
                          "id": 6356,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6104,
                          "src": "7613:28:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7596:45:37"
                      },
                      {
                        "assignments": [
                          6359
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6359,
                            "mutability": "mutable",
                            "name": "presaleQuantity",
                            "nameLocation": "7658:15:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6472,
                            "src": "7651:22:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6358,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7651:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6364,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 6360,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6122,
                              "src": "7676:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                              }
                            },
                            "id": 6362,
                            "indexExpression": {
                              "id": 6361,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "7685:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7676:20:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_storage",
                              "typeString": "struct ArtistV2.Edition storage ref"
                            }
                          },
                          "id": 6363,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "presaleQuantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6106,
                          "src": "7676:36:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7651:61:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 6368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6366,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6331,
                                "src": "7875:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7886:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7875:12:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                              "id": 6369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7889:24:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              },
                              "value": "Edition does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              }
                            ],
                            "id": 6365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7867:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7867:47:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6371,
                        "nodeType": "ExpressionStatement",
                        "src": "7867:47:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 6375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6373,
                                "name": "numSold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6338,
                                "src": "8000:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 6374,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6331,
                                "src": "8010:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "8000:18:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f75742e",
                              "id": 6376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8020:35:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                "typeString": "literal_string \"This edition is already sold out.\""
                              },
                              "value": "This edition is already sold out."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                "typeString": "literal_string \"This edition is already sold out.\""
                              }
                            ],
                            "id": 6372,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7992:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7992:64:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6378,
                        "nodeType": "ExpressionStatement",
                        "src": "7992:64:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 6380,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "8137:3:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 6381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "8137:9:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 6382,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6324,
                                "src": "8150:5:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8137:18:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d7573742073656e6420656e6f75676820746f207075726368617365207468652065646974696f6e2e",
                              "id": 6384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8157:43:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              },
                              "value": "Must send enough to purchase the edition."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              }
                            ],
                            "id": 6379,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8129:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8129:72:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6386,
                        "nodeType": "ExpressionStatement",
                        "src": "8129:72:37"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6387,
                            "name": "startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6345,
                            "src": "8265:9:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 6388,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "8277:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 6389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "8277:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8265:27:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6416,
                        "nodeType": "IfStatement",
                        "src": "8261:436:37",
                        "trueBody": {
                          "id": 6415,
                          "nodeType": "Block",
                          "src": "8294:403:37",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 6398,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 6394,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6392,
                                        "name": "presaleQuantity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6359,
                                        "src": "8394:15:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 6393,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8412:1:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8394:19:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 6397,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6395,
                                        "name": "numSold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6338,
                                        "src": "8417:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 6396,
                                        "name": "presaleQuantity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6359,
                                        "src": "8427:15:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "8417:25:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "8394:48:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e6f2070726573616c6520617661696c61626c652026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "id": 6399,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8460:49:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_03f8adf2ee5c29d54dbd9d6823d072282a9ce7cddea271efb10f69bd037a8806",
                                      "typeString": "literal_string \"No presale available & open auction not started\""
                                    },
                                    "value": "No presale available & open auction not started"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_03f8adf2ee5c29d54dbd9d6823d072282a9ce7cddea271efb10f69bd037a8806",
                                      "typeString": "literal_string \"No presale available & open auction not started\""
                                    }
                                  ],
                                  "id": 6391,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8369:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8369:154:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6401,
                              "nodeType": "ExpressionStatement",
                              "src": "8369:154:37"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 6404,
                                          "name": "_signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6320,
                                          "src": "8606:10:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "id": 6405,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6318,
                                          "src": "8618:10:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 6403,
                                        "name": "getSigner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6910,
                                        "src": "8596:9:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$",
                                          "typeString": "function (bytes calldata,uint256) view returns (address)"
                                        }
                                      },
                                      "id": 6406,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8596:33:37",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 6407,
                                          "name": "editions",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6122,
                                          "src": "8633:8:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                            "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                          }
                                        },
                                        "id": 6409,
                                        "indexExpression": {
                                          "id": 6408,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6318,
                                          "src": "8642:10:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8633:20:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                          "typeString": "struct ArtistV2.Edition storage ref"
                                        }
                                      },
                                      "id": 6410,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signerAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6108,
                                      "src": "8633:34:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8596:71:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "id": 6412,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8669:16:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    },
                                    "value": "Invalid signer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    }
                                  ],
                                  "id": 6402,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8588:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8588:98:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6414,
                              "nodeType": "ExpressionStatement",
                              "src": "8588:98:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6418,
                                "name": "endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6352,
                                "src": "8767:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 6419,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "8777:5:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 6420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "8777:15:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8767:25:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e2068617320656e646564",
                              "id": 6422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8794:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              },
                              "value": "Auction has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              }
                            ],
                            "id": 6417,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8759:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8759:55:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6424,
                        "nodeType": "ExpressionStatement",
                        "src": "8759:55:37"
                      },
                      {
                        "expression": {
                          "id": 6430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6425,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6130,
                              "src": "8879:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6427,
                            "indexExpression": {
                              "id": 6426,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "8899:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8879:31:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "expression": {
                              "id": 6428,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "8914:3:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "8914:9:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8879:44:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6431,
                        "nodeType": "ExpressionStatement",
                        "src": "8879:44:37"
                      },
                      {
                        "expression": {
                          "id": 6436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "8999:30:37",
                          "subExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 6432,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6122,
                                "src": "8999:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                }
                              },
                              "id": 6434,
                              "indexExpression": {
                                "id": 6433,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6318,
                                "src": "9008:10:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8999:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                "typeString": "struct ArtistV2.Edition storage ref"
                              }
                            },
                            "id": 6435,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "numSold",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6096,
                            "src": "8999:28:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 6437,
                        "nodeType": "ExpressionStatement",
                        "src": "8999:30:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6439,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9111:3:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "9111:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 6441,
                                  "name": "atTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6114,
                                  "src": "9123:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 6442,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "9123:17:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 6443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9123:19:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6438,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "9105:5:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 6444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9105:38:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6445,
                        "nodeType": "ExpressionStatement",
                        "src": "9105:38:37"
                      },
                      {
                        "expression": {
                          "id": 6452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6446,
                              "name": "tokenToEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6126,
                              "src": "9227:14:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6450,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 6447,
                                  "name": "atTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6114,
                                  "src": "9242:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 6448,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "9242:17:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 6449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9242:19:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9227:35:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6451,
                            "name": "_editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6318,
                            "src": "9265:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9227:48:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6453,
                        "nodeType": "ExpressionStatement",
                        "src": "9227:48:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 6455,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "9308:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 6456,
                                  "name": "atTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6114,
                                  "src": "9320:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 6457,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "9320:17:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 6458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9320:19:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 6459,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6122,
                                  "src": "9341:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                  }
                                },
                                "id": 6461,
                                "indexExpression": {
                                  "id": 6460,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6318,
                                  "src": "9350:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9341:20:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                  "typeString": "struct ArtistV2.Edition storage ref"
                                }
                              },
                              "id": 6462,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numSold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6096,
                              "src": "9341:28:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 6463,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9371:3:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "9371:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6454,
                            "name": "EditionPurchased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6169,
                            "src": "9291:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint32,address)"
                            }
                          },
                          "id": 6465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9291:91:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6466,
                        "nodeType": "EmitStatement",
                        "src": "9286:96:37"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6467,
                              "name": "atTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6114,
                              "src": "9393:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 6469,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "9393:19:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 6470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9393:21:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6471,
                        "nodeType": "ExpressionStatement",
                        "src": "9393:21:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6316,
                    "nodeType": "StructuredDocumentation",
                    "src": "7002:219:37",
                    "text": "@notice Creates a new token for the given edition, and assigns it to the buyer\n @param _editionId The id of the edition to purchase\n @param _signature A signed message for authorizing presale purchases"
                  },
                  "functionSelector": "abccf3dd",
                  "id": 6473,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "buyEdition",
                  "nameLocation": "7235:10:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6318,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "7254:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6473,
                        "src": "7246:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7246:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6320,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "7281:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6473,
                        "src": "7266:25:37",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6319,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7266:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7245:47:37"
                  },
                  "returnParameters": {
                    "id": 6322,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7310:0:37"
                  },
                  "scope": 6911,
                  "src": "7226:2195:37",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6504,
                    "nodeType": "Block",
                    "src": "9479:494:37",
                    "statements": [
                      {
                        "assignments": [
                          6479
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6479,
                            "mutability": "mutable",
                            "name": "remainingForEdition",
                            "nameLocation": "9572:19:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6504,
                            "src": "9564:27:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6478,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9564:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6487,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 6480,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6130,
                              "src": "9594:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6482,
                            "indexExpression": {
                              "id": 6481,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6475,
                              "src": "9614:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9594:31:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 6483,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6134,
                              "src": "9628:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6485,
                            "indexExpression": {
                              "id": 6484,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6475,
                              "src": "9648:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9628:31:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9594:65:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9564:95:37"
                      },
                      {
                        "expression": {
                          "id": 6494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6488,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6134,
                              "src": "9731:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6490,
                            "indexExpression": {
                              "id": 6489,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6475,
                              "src": "9751:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9731:31:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 6491,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6130,
                              "src": "9765:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6493,
                            "indexExpression": {
                              "id": 6492,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6475,
                              "src": "9785:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9765:31:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9731:65:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6495,
                        "nodeType": "ExpressionStatement",
                        "src": "9731:65:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 6497,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6122,
                                  "src": "9907:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                  }
                                },
                                "id": 6499,
                                "indexExpression": {
                                  "id": 6498,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6475,
                                  "src": "9916:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9907:20:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                  "typeString": "struct ArtistV2.Edition storage ref"
                                }
                              },
                              "id": 6500,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6092,
                              "src": "9907:37:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6501,
                              "name": "remainingForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6479,
                              "src": "9946:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6496,
                            "name": "_sendFunds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6858,
                            "src": "9896:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 6502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9896:70:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6503,
                        "nodeType": "ExpressionStatement",
                        "src": "9896:70:37"
                      }
                    ]
                  },
                  "functionSelector": "155dd5ee",
                  "id": 6505,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFunds",
                  "nameLocation": "9436:13:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6475,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "9458:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6505,
                        "src": "9450:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6474,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9450:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9449:20:37"
                  },
                  "returnParameters": {
                    "id": 6477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9479:0:37"
                  },
                  "scope": 6911,
                  "src": "9427:546:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6529,
                    "nodeType": "Block",
                    "src": "10110:129:37",
                    "statements": [
                      {
                        "expression": {
                          "id": 6520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 6515,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6122,
                                "src": "10120:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                }
                              },
                              "id": 6517,
                              "indexExpression": {
                                "id": 6516,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6508,
                                "src": "10129:10:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10120:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                "typeString": "struct ArtistV2.Edition storage ref"
                              }
                            },
                            "id": 6518,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6102,
                            "src": "10120:30:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6519,
                            "name": "_startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6510,
                            "src": "10153:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "10120:43:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 6521,
                        "nodeType": "ExpressionStatement",
                        "src": "10120:43:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6523,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6090,
                                "src": "10193:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$6090_$",
                                  "typeString": "type(enum ArtistV2.TimeType)"
                                }
                              },
                              "id": 6524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "START",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6088,
                              "src": "10193:14:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$6090",
                                "typeString": "enum ArtistV2.TimeType"
                              }
                            },
                            {
                              "id": 6525,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6508,
                              "src": "10209:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6526,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6510,
                              "src": "10221:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$6090",
                                "typeString": "enum ArtistV2.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6522,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6178,
                            "src": "10178:14:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$6090_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV2.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 6527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10178:54:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6528,
                        "nodeType": "EmitStatement",
                        "src": "10173:59:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6506,
                    "nodeType": "StructuredDocumentation",
                    "src": "9979:46:37",
                    "text": "@notice Sets the start time for an edition"
                  },
                  "functionSelector": "fbab9e04",
                  "id": 6530,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6513,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6512,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "10100:9:37"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10100:9:37"
                    }
                  ],
                  "name": "setStartTime",
                  "nameLocation": "10039:12:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6508,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "10060:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6530,
                        "src": "10052:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6507,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10052:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6510,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "10079:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6530,
                        "src": "10072:17:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6509,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10072:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10051:39:37"
                  },
                  "returnParameters": {
                    "id": 6514,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10110:0:37"
                  },
                  "scope": 6911,
                  "src": "10030:209:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6554,
                    "nodeType": "Block",
                    "src": "10370:121:37",
                    "statements": [
                      {
                        "expression": {
                          "id": 6545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 6540,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6122,
                                "src": "10380:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                }
                              },
                              "id": 6542,
                              "indexExpression": {
                                "id": 6541,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6533,
                                "src": "10389:10:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10380:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                "typeString": "struct ArtistV2.Edition storage ref"
                              }
                            },
                            "id": 6543,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6104,
                            "src": "10380:28:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6544,
                            "name": "_endTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6535,
                            "src": "10411:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "10380:39:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 6546,
                        "nodeType": "ExpressionStatement",
                        "src": "10380:39:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6548,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6090,
                                "src": "10449:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$6090_$",
                                  "typeString": "type(enum ArtistV2.TimeType)"
                                }
                              },
                              "id": 6549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "END",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6089,
                              "src": "10449:12:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$6090",
                                "typeString": "enum ArtistV2.TimeType"
                              }
                            },
                            {
                              "id": 6550,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6533,
                              "src": "10463:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6551,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6535,
                              "src": "10475:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$6090",
                                "typeString": "enum ArtistV2.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6547,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6178,
                            "src": "10434:14:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$6090_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV2.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 6552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10434:50:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6553,
                        "nodeType": "EmitStatement",
                        "src": "10429:55:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6531,
                    "nodeType": "StructuredDocumentation",
                    "src": "10245:44:37",
                    "text": "@notice Sets the end time for an edition"
                  },
                  "functionSelector": "bb314ca1",
                  "id": 6555,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6538,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6537,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "10360:9:37"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10360:9:37"
                    }
                  ],
                  "name": "setEndTime",
                  "nameLocation": "10303:10:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6536,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6533,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "10322:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6555,
                        "src": "10314:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6532,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10314:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6535,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "10341:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6555,
                        "src": "10334:15:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6534,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10334:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10313:37:37"
                  },
                  "returnParameters": {
                    "id": 6539,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10370:0:37"
                  },
                  "scope": 6911,
                  "src": "10294:197:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1051
                  ],
                  "body": {
                    "id": 6588,
                    "nodeType": "Block",
                    "src": "10697:294:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6566,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6558,
                                  "src": "10723:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6565,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "10715:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 6567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10715:17:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 6568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10734:49:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 6564,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10707:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10707:77:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6570,
                        "nodeType": "ExpressionStatement",
                        "src": "10707:77:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6575,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6111,
                                  "src": "10912:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "baseExpression": {
                                        "id": 6576,
                                        "name": "tokenToEdition",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6126,
                                        "src": "10921:14:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 6578,
                                      "indexExpression": {
                                        "id": 6577,
                                        "name": "_tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6558,
                                        "src": "10936:8:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10921:24:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6579,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4133,
                                    "src": "10921:33:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 6580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10921:35:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2f",
                                  "id": 6581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10958:3:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  "value": "/"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 6582,
                                      "name": "_tokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6558,
                                      "src": "10963:8:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6583,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4133,
                                    "src": "10963:17:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 6584,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10963:19:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 6573,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10895:3:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 6574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "10895:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 6585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10895:88:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10888:6:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 6571,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "10888:6:37",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 6586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10888:96:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 6563,
                        "id": 6587,
                        "nodeType": "Return",
                        "src": "10881:103:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6556,
                    "nodeType": "StructuredDocumentation",
                    "src": "10497:114:37",
                    "text": "@notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 6589,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "10625:8:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6560,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10664:8:37"
                  },
                  "parameters": {
                    "id": 6559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6558,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "10642:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6589,
                        "src": "10634:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6557,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10634:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10633:18:37"
                  },
                  "returnParameters": {
                    "id": 6563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6562,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6589,
                        "src": "10682:13:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6561,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10682:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10681:15:37"
                  },
                  "scope": 6911,
                  "src": "10616:375:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6604,
                    "nodeType": "Block",
                    "src": "11168:157:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6599,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6111,
                                  "src": "11295:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "hexValue": "73746f726566726f6e74",
                                  "id": 6600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11304:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  },
                                  "value": "storefront"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  }
                                ],
                                "expression": {
                                  "id": 6597,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11278:3:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 6598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "11278:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 6601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11278:39:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11271:6:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 6595,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "11271:6:37",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 6602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11271:47:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 6594,
                        "id": 6603,
                        "nodeType": "Return",
                        "src": "11264:54:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6590,
                    "nodeType": "StructuredDocumentation",
                    "src": "10997:107:37",
                    "text": "@notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront"
                  },
                  "functionSelector": "e8a3d485",
                  "id": 6605,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "11118:11:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6591,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11129:2:37"
                  },
                  "returnParameters": {
                    "id": 6594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6593,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6605,
                        "src": "11153:13:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6592,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11153:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11152:15:37"
                  },
                  "scope": 6911,
                  "src": "11109:216:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6664,
                    "nodeType": "Block",
                    "src": "11510:370:37",
                    "statements": [
                      {
                        "assignments": [
                          6618
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6618,
                            "mutability": "mutable",
                            "name": "tokenIdsOfEdition",
                            "nameLocation": "11537:17:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6664,
                            "src": "11520:34:37",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6616,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11520:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6617,
                              "nodeType": "ArrayTypeName",
                              "src": "11520:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6627,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 6622,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6122,
                                  "src": "11571:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                  }
                                },
                                "id": 6624,
                                "indexExpression": {
                                  "id": 6623,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6608,
                                  "src": "11580:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11571:20:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                  "typeString": "struct ArtistV2.Edition storage ref"
                                }
                              },
                              "id": 6625,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numSold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6096,
                              "src": "11571:28:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "11557:13:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6619,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11561:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6620,
                              "nodeType": "ArrayTypeName",
                              "src": "11561:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 6626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11557:43:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11520:80:37"
                      },
                      {
                        "assignments": [
                          6629
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6629,
                            "mutability": "mutable",
                            "name": "index",
                            "nameLocation": "11618:5:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6664,
                            "src": "11610:13:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6628,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11610:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6631,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 6630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11626:1:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11610:17:37"
                      },
                      {
                        "body": {
                          "id": 6660,
                          "nodeType": "Block",
                          "src": "11691:149:37",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 6644,
                                    "name": "tokenToEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6126,
                                    "src": "11709:14:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 6646,
                                  "indexExpression": {
                                    "id": 6645,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6633,
                                    "src": "11724:2:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11709:18:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 6647,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6608,
                                  "src": "11731:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11709:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6659,
                              "nodeType": "IfStatement",
                              "src": "11705:125:37",
                              "trueBody": {
                                "id": 6658,
                                "nodeType": "Block",
                                "src": "11743:87:37",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6653,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 6649,
                                          "name": "tokenIdsOfEdition",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6618,
                                          "src": "11761:17:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 6651,
                                        "indexExpression": {
                                          "id": 6650,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6629,
                                          "src": "11779:5:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "11761:24:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 6652,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6633,
                                        "src": "11788:2:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11761:29:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6654,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11761:29:37"
                                  },
                                  {
                                    "expression": {
                                      "id": 6656,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "11808:7:37",
                                      "subExpression": {
                                        "id": 6655,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6629,
                                        "src": "11808:5:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6657,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11808:7:37"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6636,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6633,
                            "src": "11659:2:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 6637,
                                "name": "atTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6114,
                                "src": "11664:9:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 6638,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "11664:17:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 6639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11664:19:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11659:24:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6661,
                        "initializationExpression": {
                          "assignments": [
                            6633
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6633,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "11651:2:37",
                              "nodeType": "VariableDeclaration",
                              "scope": 6661,
                              "src": "11643:10:37",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6632,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11643:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6635,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 6634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11656:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11643:14:37"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 6642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11685:4:37",
                            "subExpression": {
                              "id": 6641,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6633,
                              "src": "11685:2:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6643,
                          "nodeType": "ExpressionStatement",
                          "src": "11685:4:37"
                        },
                        "nodeType": "ForStatement",
                        "src": "11638:202:37"
                      },
                      {
                        "expression": {
                          "id": 6662,
                          "name": "tokenIdsOfEdition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6618,
                          "src": "11856:17:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 6613,
                        "id": 6663,
                        "nodeType": "Return",
                        "src": "11849:24:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6606,
                    "nodeType": "StructuredDocumentation",
                    "src": "11331:85:37",
                    "text": "@notice Get token ids for a given edition id\n @param _editionId edition id"
                  },
                  "functionSelector": "74e79189",
                  "id": 6665,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenIdsOfEdition",
                  "nameLocation": "11430:20:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6608,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "11459:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6665,
                        "src": "11451:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6607,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11451:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11450:20:37"
                  },
                  "returnParameters": {
                    "id": 6613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6612,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6665,
                        "src": "11492:16:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6610,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11492:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6611,
                          "nodeType": "ArrayTypeName",
                          "src": "11492:9:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11491:18:37"
                  },
                  "scope": 6911,
                  "src": "11421:459:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6727,
                    "nodeType": "Block",
                    "src": "12059:391:37",
                    "statements": [
                      {
                        "assignments": [
                          6678
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6678,
                            "mutability": "mutable",
                            "name": "ownersOfEdition",
                            "nameLocation": "12086:15:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6727,
                            "src": "12069:32:37",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6676,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12069:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 6677,
                              "nodeType": "ArrayTypeName",
                              "src": "12069:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6687,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 6682,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6122,
                                  "src": "12118:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                                  }
                                },
                                "id": 6684,
                                "indexExpression": {
                                  "id": 6683,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6668,
                                  "src": "12127:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12118:20:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6109_storage",
                                  "typeString": "struct ArtistV2.Edition storage ref"
                                }
                              },
                              "id": 6685,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numSold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6096,
                              "src": "12118:28:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "12104:13:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6679,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12108:7:37",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 6680,
                              "nodeType": "ArrayTypeName",
                              "src": "12108:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 6686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12104:43:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12069:78:37"
                      },
                      {
                        "assignments": [
                          6689
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6689,
                            "mutability": "mutable",
                            "name": "index",
                            "nameLocation": "12165:5:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6727,
                            "src": "12157:13:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6688,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12157:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6691,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 6690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12173:1:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12157:17:37"
                      },
                      {
                        "body": {
                          "id": 6723,
                          "nodeType": "Block",
                          "src": "12238:174:37",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 6704,
                                    "name": "tokenToEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6126,
                                    "src": "12256:14:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 6706,
                                  "indexExpression": {
                                    "id": 6705,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6693,
                                    "src": "12271:2:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12256:18:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 6707,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6668,
                                  "src": "12278:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12256:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6722,
                              "nodeType": "IfStatement",
                              "src": "12252:150:37",
                              "trueBody": {
                                "id": 6721,
                                "nodeType": "Block",
                                "src": "12290:112:37",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6716,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 6709,
                                          "name": "ownersOfEdition",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6678,
                                          "src": "12308:15:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 6711,
                                        "indexExpression": {
                                          "id": 6710,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6689,
                                          "src": "12324:5:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "12308:22:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 6714,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6693,
                                            "src": "12359:2:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 6712,
                                            "name": "ERC721Upgradeable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1718,
                                            "src": "12333:17:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                              "typeString": "type(contract ERC721Upgradeable)"
                                            }
                                          },
                                          "id": 6713,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "ownerOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 992,
                                          "src": "12333:25:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                            "typeString": "function (uint256) view returns (address)"
                                          }
                                        },
                                        "id": 6715,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12333:29:37",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "12308:54:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 6717,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12308:54:37"
                                  },
                                  {
                                    "expression": {
                                      "id": 6719,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "12380:7:37",
                                      "subExpression": {
                                        "id": 6718,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6689,
                                        "src": "12380:5:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6720,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12380:7:37"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6696,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6693,
                            "src": "12206:2:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 6697,
                                "name": "atTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6114,
                                "src": "12211:9:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 6698,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "12211:17:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 6699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12211:19:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12206:24:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6724,
                        "initializationExpression": {
                          "assignments": [
                            6693
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6693,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "12198:2:37",
                              "nodeType": "VariableDeclaration",
                              "scope": 6724,
                              "src": "12190:10:37",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6692,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12190:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6695,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 6694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12203:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12190:14:37"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 6702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "12232:4:37",
                            "subExpression": {
                              "id": 6701,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6693,
                              "src": "12232:2:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6703,
                          "nodeType": "ExpressionStatement",
                          "src": "12232:4:37"
                        },
                        "nodeType": "ForStatement",
                        "src": "12185:227:37"
                      },
                      {
                        "expression": {
                          "id": 6725,
                          "name": "ownersOfEdition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6678,
                          "src": "12428:15:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 6673,
                        "id": 6726,
                        "nodeType": "Return",
                        "src": "12421:22:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6666,
                    "nodeType": "StructuredDocumentation",
                    "src": "11886:81:37",
                    "text": "@notice Get owners of a given edition id\n @param _editionId edition id"
                  },
                  "functionSelector": "13dd2960",
                  "id": 6728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getOwnersOfEdition",
                  "nameLocation": "11981:18:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6668,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12008:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6728,
                        "src": "12000:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12000:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11999:20:37"
                  },
                  "returnParameters": {
                    "id": 6673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6672,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6728,
                        "src": "12041:16:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6670,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12041:7:37",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6671,
                          "nodeType": "ArrayTypeName",
                          "src": "12041:9:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12040:18:37"
                  },
                  "scope": 6911,
                  "src": "11972:478:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    149
                  ],
                  "body": {
                    "id": 6786,
                    "nodeType": "Block",
                    "src": "12766:371:37",
                    "statements": [
                      {
                        "assignments": [
                          6742
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6742,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "12784:9:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6786,
                            "src": "12776:17:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6741,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12776:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6746,
                        "initialValue": {
                          "baseExpression": {
                            "id": 6743,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6126,
                            "src": "12796:14:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 6745,
                          "indexExpression": {
                            "id": 6744,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6731,
                            "src": "12811:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12796:24:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12776:44:37"
                      },
                      {
                        "assignments": [
                          6749
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6749,
                            "mutability": "mutable",
                            "name": "edition",
                            "nameLocation": "12845:7:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6786,
                            "src": "12830:22:37",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6109_memory_ptr",
                              "typeString": "struct ArtistV2.Edition"
                            },
                            "typeName": {
                              "id": 6748,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6747,
                                "name": "Edition",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 6109,
                                "src": "12830:7:37"
                              },
                              "referencedDeclaration": 6109,
                              "src": "12830:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6109_storage_ptr",
                                "typeString": "struct ArtistV2.Edition"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6753,
                        "initialValue": {
                          "baseExpression": {
                            "id": 6750,
                            "name": "editions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6122,
                            "src": "12855:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6109_storage_$",
                              "typeString": "mapping(uint256 => struct ArtistV2.Edition storage ref)"
                            }
                          },
                          "id": 6752,
                          "indexExpression": {
                            "id": 6751,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6742,
                            "src": "12864:9:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12855:19:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$6109_storage",
                            "typeString": "struct ArtistV2.Edition storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12830:44:37"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6754,
                              "name": "edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6749,
                              "src": "12889:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6109_memory_ptr",
                                "typeString": "struct ArtistV2.Edition memory"
                              }
                            },
                            "id": 6755,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6092,
                            "src": "12889:24:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 6758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12925:3:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 6757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12917:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6756,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12917:7:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12917:12:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12889:40:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6767,
                        "nodeType": "IfStatement",
                        "src": "12885:107:37",
                        "trueBody": {
                          "id": 6766,
                          "nodeType": "Block",
                          "src": "12931:61:37",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "expression": {
                                      "id": 6761,
                                      "name": "edition",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6749,
                                      "src": "12953:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$6109_memory_ptr",
                                        "typeString": "struct ArtistV2.Edition memory"
                                      }
                                    },
                                    "id": 6762,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6092,
                                    "src": "12953:24:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 6763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12979:1:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 6764,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12952:29:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(address payable,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 6740,
                              "id": 6765,
                              "nodeType": "Return",
                              "src": "12945:36:37"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          6769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6769,
                            "mutability": "mutable",
                            "name": "royaltyBPS",
                            "nameLocation": "13010:10:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6786,
                            "src": "13002:18:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6768,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13002:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6775,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6772,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6749,
                                "src": "13031:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6109_memory_ptr",
                                  "typeString": "struct ArtistV2.Edition memory"
                                }
                              },
                              "id": 6773,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "royaltyBPS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6100,
                              "src": "13031:18:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13023:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 6770,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13023:7:37",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 6774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13023:27:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13002:48:37"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 6776,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6749,
                                "src": "13069:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6109_memory_ptr",
                                  "typeString": "struct ArtistV2.Edition memory"
                                }
                              },
                              "id": 6777,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6092,
                              "src": "13069:24:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6780,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6778,
                                      "name": "_salePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6733,
                                      "src": "13096:10:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 6779,
                                      "name": "royaltyBPS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6769,
                                      "src": "13109:10:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13096:23:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 6781,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13095:25:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "31305f303030",
                                "id": 6782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13123:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10_000"
                              },
                              "src": "13095:34:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 6784,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13068:62:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "functionReturnParameters": 6740,
                        "id": 6785,
                        "nodeType": "Return",
                        "src": "13061:69:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6729,
                    "nodeType": "StructuredDocumentation",
                    "src": "12456:129:37",
                    "text": "@notice Get royalty information for token\n @param _tokenId token id\n @param _salePrice Sale price for the token"
                  },
                  "functionSelector": "2a55205a",
                  "id": 6787,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "12599:11:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6735,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12687:8:37"
                  },
                  "parameters": {
                    "id": 6734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6731,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "12619:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6787,
                        "src": "12611:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12611:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6733,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "12637:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6787,
                        "src": "12629:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12629:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12610:38:37"
                  },
                  "returnParameters": {
                    "id": 6740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6737,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "12721:16:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6787,
                        "src": "12713:24:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6736,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12713:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6739,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "12747:13:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6787,
                        "src": "12739:21:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6738,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12739:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12712:49:37"
                  },
                  "scope": 6911,
                  "src": "12590:547:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6799,
                    "nodeType": "Block",
                    "src": "13266:81:37",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 6793,
                                "name": "atTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6114,
                                "src": "13283:9:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 6794,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "13283:17:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 6795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13283:19:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 6796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13305:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "13283:23:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6792,
                        "id": 6798,
                        "nodeType": "Return",
                        "src": "13276:30:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6788,
                    "nodeType": "StructuredDocumentation",
                    "src": "13143:63:37",
                    "text": "@notice The total number of tokens created by this contract"
                  },
                  "functionSelector": "18160ddd",
                  "id": 6800,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "13220:11:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6789,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13231:2:37"
                  },
                  "returnParameters": {
                    "id": 6792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6791,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6800,
                        "src": "13257:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6790,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13257:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13256:9:37"
                  },
                  "scope": 6911,
                  "src": "13211:136:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    940,
                    2986
                  ],
                  "body": {
                    "id": 6823,
                    "nodeType": "Block",
                    "src": "13644:142:37",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 6816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6812,
                                    "name": "IERC2981Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 150,
                                    "src": "13678:19:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  ],
                                  "id": 6811,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "13673:4:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 6813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13673:25:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981Upgradeable_$150",
                                  "typeString": "type(contract IERC2981Upgradeable)"
                                }
                              },
                              "id": 6814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "13673:37:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 6815,
                              "name": "_interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6803,
                              "src": "13714:12:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "13673:53:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 6819,
                                "name": "_interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6803,
                                "src": "13766:12:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 6817,
                                "name": "ERC721Upgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "13730:17:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract ERC721Upgradeable)"
                                }
                              },
                              "id": 6818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 940,
                              "src": "13730:35:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 6820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13730:49:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13673:106:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 6810,
                        "id": 6822,
                        "nodeType": "Return",
                        "src": "13654:125:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6801,
                    "nodeType": "StructuredDocumentation",
                    "src": "13353:127:37",
                    "text": "@notice Informs other contracts which interfaces this contract supports\n @dev https://eips.ethereum.org/EIPS/eip-165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 6824,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "13494:17:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6807,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 6805,
                        "name": "ERC721Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1718,
                        "src": "13578:17:37"
                      },
                      {
                        "id": 6806,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "13597:18:37"
                      }
                    ],
                    "src": "13569:47:37"
                  },
                  "parameters": {
                    "id": 6804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6803,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "13519:12:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6824,
                        "src": "13512:19:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 6802,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "13512:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13511:21:37"
                  },
                  "returnParameters": {
                    "id": 6810,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6809,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6824,
                        "src": "13634:4:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6808,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13634:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13633:6:37"
                  },
                  "scope": 6911,
                  "src": "13485:301:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6857,
                    "nodeType": "Block",
                    "src": "14121:235:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 6835,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "14147:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ArtistV2_$6911",
                                        "typeString": "contract ArtistV2"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ArtistV2_$6911",
                                        "typeString": "contract ArtistV2"
                                      }
                                    ],
                                    "id": 6834,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14139:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 6833,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14139:7:37",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 6836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14139:13:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 6837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "14139:21:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 6838,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6829,
                                "src": "14164:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14139:32:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                              "id": 6840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14173:31:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              },
                              "value": "Insufficient balance for send"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              }
                            ],
                            "id": 6832,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14131:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14131:74:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6842,
                        "nodeType": "ExpressionStatement",
                        "src": "14131:74:37"
                      },
                      {
                        "assignments": [
                          6844,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6844,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "14222:7:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6857,
                            "src": "14217:12:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6843,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "14217:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 6851,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 6849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14267:2:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 6845,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6827,
                                "src": "14235:10:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 6846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "14235:15:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 6848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 6847,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6829,
                                "src": "14258:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "14235:31:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 6850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14235:35:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14216:54:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6853,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6844,
                              "src": "14288:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e74206d61792068617665207265766572746564",
                              "id": 6854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14297:51:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              },
                              "value": "Unable to send value: recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              }
                            ],
                            "id": 6852,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14280:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14280:69:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6856,
                        "nodeType": "ExpressionStatement",
                        "src": "14280:69:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6825,
                    "nodeType": "StructuredDocumentation",
                    "src": "13900:143:37",
                    "text": "@notice Sends funds to an address\n @param _recipient The address to send funds to\n @param _amount The amount of funds to send"
                  },
                  "id": 6858,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendFunds",
                  "nameLocation": "14057:10:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6830,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6827,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "14084:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6858,
                        "src": "14068:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 6826,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14068:15:37",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6829,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "14104:7:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6858,
                        "src": "14096:15:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6828,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14096:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14067:45:37"
                  },
                  "returnParameters": {
                    "id": 6831,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14121:0:37"
                  },
                  "scope": 6911,
                  "src": "14048:308:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 6909,
                    "nodeType": "Block",
                    "src": "14688:415:37",
                    "statements": [
                      {
                        "assignments": [
                          6869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6869,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "14706:6:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6909,
                            "src": "14698:14:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 6868,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "14698:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6899,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 6873,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14772:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                              "id": 6878,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14831:31:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                                "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                              },
                                              "value": "EIP712Domain(uint256 chainId)"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                                "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                              }
                                            ],
                                            "id": 6877,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "14821:9:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 6879,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14821:42:37",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 6880,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "14865:5:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 6881,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "chainid",
                                          "nodeType": "MemberAccess",
                                          "src": "14865:13:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 6875,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "14810:3:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 6876,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "14810:10:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 6882,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14810:69:37",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 6874,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "14800:9:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 6883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14800:80:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 6887,
                                          "name": "PRESALE_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6139,
                                          "src": "14919:16:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 6890,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "14945:4:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ArtistV2_$6911",
                                                "typeString": "contract ArtistV2"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_ArtistV2_$6911",
                                                "typeString": "contract ArtistV2"
                                              }
                                            ],
                                            "id": 6889,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "14937:7:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 6888,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14937:7:37",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 6891,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14937:13:37",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 6892,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "14952:3:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 6893,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "14952:10:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 6894,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6863,
                                          "src": "14964:10:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 6885,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "14908:3:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 6886,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "14908:10:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 6895,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14908:67:37",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 6884,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "14898:9:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 6896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14898:78:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 6871,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14738:3:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 6872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "14738:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 6897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14738:252:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6870,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "14715:9:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 6898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14715:285:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14698:302:37"
                      },
                      {
                        "assignments": [
                          6901
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6901,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "15018:16:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6909,
                            "src": "15010:24:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6900,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15010:7:37",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6906,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6904,
                              "name": "_signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6861,
                              "src": "15052:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 6902,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6869,
                              "src": "15037:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 6903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4427,
                            "src": "15037:14:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 6905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15037:26:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15010:53:37"
                      },
                      {
                        "expression": {
                          "id": 6907,
                          "name": "recoveredAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6901,
                          "src": "15080:16:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 6867,
                        "id": 6908,
                        "nodeType": "Return",
                        "src": "15073:23:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6859,
                    "nodeType": "StructuredDocumentation",
                    "src": "14362:224:37",
                    "text": "@notice Gets signer address to validate presale purchase\n @param _signature signed message\n @param _editionId edition id\n @return address of signer\n @dev https://eips.ethereum.org/EIPS/eip-712"
                  },
                  "id": 6910,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "14600:9:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6864,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6861,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "14625:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "14610:25:37",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6860,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14610:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6863,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "14645:10:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "14637:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6862,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14637:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14609:47:37"
                  },
                  "returnParameters": {
                    "id": 6867,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6866,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "14679:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6865,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14679:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14678:9:37"
                  },
                  "scope": 6911,
                  "src": "14591:512:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 6912,
              "src": "1471:13634:37",
              "usedErrors": []
            }
          ],
          "src": "45:15061:37"
        },
        "id": 37
      },
      "contracts/ArtistV3.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistV3.sol",
          "exportedSymbols": {
            "ArtistCreator": [
              5621
            ],
            "ArtistV3": [
              7900
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSA": [
              4678
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "LibUintToString": [
              13592
            ],
            "OwnableUpgradeable": [
              131
            ]
          },
          "id": 7901,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6913,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:23:38"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "id": 6916,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7901,
              "sourceUnit": 151,
              "src": "547:127:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6914,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 150,
                    "src": "555:19:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6915,
                    "name": "IERC165Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2987,
                    "src": "576:18:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "id": 6918,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7901,
              "sourceUnit": 1719,
              "src": "675:105:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6917,
                    "name": "ERC721Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1718,
                    "src": "683:17:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 6920,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7901,
              "sourceUnit": 132,
              "src": "781:101:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6919,
                    "name": "OwnableUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 131,
                    "src": "789:18:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/LibUintToString.sol",
              "file": "./utils/LibUintToString.sol",
              "id": 6922,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7901,
              "sourceUnit": 13593,
              "src": "883:60:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6921,
                    "name": "LibUintToString",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13592,
                    "src": "891:15:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 6924,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7901,
              "sourceUnit": 2239,
              "src": "944:102:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6923,
                    "name": "CountersUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2238,
                    "src": "952:19:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/ArtistCreator.sol",
              "file": "./ArtistCreator.sol",
              "id": 6926,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7901,
              "sourceUnit": 5622,
              "src": "1047:50:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6925,
                    "name": "ArtistCreator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5621,
                    "src": "1055:13:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 6928,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7901,
              "sourceUnit": 4679,
              "src": "1098:75:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6927,
                    "name": "ECDSA",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4678,
                    "src": "1106:5:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 6930,
                    "name": "ERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1718,
                    "src": "1486:17:38"
                  },
                  "id": 6931,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1486:17:38"
                },
                {
                  "baseName": {
                    "id": 6932,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 150,
                    "src": "1505:19:38"
                  },
                  "id": 6933,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1505:19:38"
                },
                {
                  "baseName": {
                    "id": 6934,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "1526:18:38"
                  },
                  "id": 6935,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1526:18:38"
                }
              ],
              "canonicalName": "ArtistV3",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 6929,
                "nodeType": "StructuredDocumentation",
                "src": "1175:290:38",
                "text": "@title Artist\n @author SoundXYZ - @gigamesh & @vigneshka\n @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol"
              },
              "fullyImplemented": true,
              "id": 7900,
              "linearizedBaseContracts": [
                7900,
                131,
                150,
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "ArtistV3",
              "nameLocation": "1474:8:38",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 6938,
                  "libraryName": {
                    "id": 6936,
                    "name": "LibUintToString",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13592,
                    "src": "1651:15:38"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1645:34:38",
                  "typeName": {
                    "id": 6937,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1671:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 6942,
                  "libraryName": {
                    "id": 6939,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "1690:19:38"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1684:58:38",
                  "typeName": {
                    "id": 6941,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6940,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "1714:27:38"
                    },
                    "referencedDeclaration": 2170,
                    "src": "1714:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 6945,
                  "libraryName": {
                    "id": 6943,
                    "name": "ECDSA",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4678,
                    "src": "1753:5:38"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1747:24:38",
                  "typeName": {
                    "id": 6944,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1763:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "canonicalName": "ArtistV3.TimeType",
                  "id": 6948,
                  "members": [
                    {
                      "id": 6946,
                      "name": "START",
                      "nameLocation": "1801:5:38",
                      "nodeType": "EnumValue",
                      "src": "1801:5:38"
                    },
                    {
                      "id": 6947,
                      "name": "END",
                      "nameLocation": "1816:3:38",
                      "nodeType": "EnumValue",
                      "src": "1816:3:38"
                    }
                  ],
                  "name": "TimeType",
                  "nameLocation": "1782:8:38",
                  "nodeType": "EnumDefinition",
                  "src": "1777:48:38"
                },
                {
                  "canonicalName": "ArtistV3.Edition",
                  "id": 6967,
                  "members": [
                    {
                      "constant": false,
                      "id": 6950,
                      "mutability": "mutable",
                      "name": "fundingRecipient",
                      "nameLocation": "1970:16:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "1954:32:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 6949,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1954:15:38",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6952,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "2067:5:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2059:13:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6951,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2059:7:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6954,
                      "mutability": "mutable",
                      "name": "numSold",
                      "nameLocation": "2134:7:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2127:14:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6953,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2127:6:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6956,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "2216:8:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2209:15:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6955,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2209:6:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6958,
                      "mutability": "mutable",
                      "name": "royaltyBPS",
                      "nameLocation": "2274:10:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2267:17:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6957,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2267:6:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6960,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "2369:9:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2362:16:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6959,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2362:6:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6962,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "2461:7:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2454:14:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6961,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2454:6:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6964,
                      "mutability": "mutable",
                      "name": "permissionedQuantity",
                      "nameLocation": "2528:20:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2521:27:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6963,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2521:6:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6966,
                      "mutability": "mutable",
                      "name": "signerAddress",
                      "nameLocation": "2602:13:38",
                      "nodeType": "VariableDeclaration",
                      "scope": 6967,
                      "src": "2594:21:38",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6965,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2594:7:38",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Edition",
                  "nameLocation": "1880:7:38",
                  "nodeType": "StructDefinition",
                  "scope": 7900,
                  "src": "1873:749:38",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 6969,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "2740:7:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "2724:23:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6968,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2724:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6972,
                  "mutability": "mutable",
                  "name": "atTokenId",
                  "nameLocation": "2790:9:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "2754:45:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 6971,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6970,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2754:27:38"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2754:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 6975,
                  "mutability": "mutable",
                  "name": "atEditionId",
                  "nameLocation": "2861:11:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "2825:47:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 6974,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6973,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2825:27:38"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2825:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "279c806e",
                  "id": 6980,
                  "mutability": "mutable",
                  "name": "editions",
                  "nameLocation": "2964:8:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "2929:43:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                    "typeString": "mapping(uint256 => struct ArtistV3.Edition)"
                  },
                  "typeName": {
                    "id": 6979,
                    "keyType": {
                      "id": 6976,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2937:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2929:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                      "typeString": "mapping(uint256 => struct ArtistV3.Edition)"
                    },
                    "valueType": {
                      "id": 6978,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6977,
                        "name": "Edition",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6967,
                        "src": "2948:7:38"
                      },
                      "referencedDeclaration": 6967,
                      "src": "2948:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Edition_$6967_storage_ptr",
                        "typeString": "struct ArtistV3.Edition"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 6984,
                  "mutability": "mutable",
                  "name": "_tokenToEdition",
                  "nameLocation": "3075:15:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "3039:51:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 6983,
                    "keyType": {
                      "id": 6981,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3047:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3039:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 6982,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3058:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "e1a3d573",
                  "id": 6988,
                  "mutability": "mutable",
                  "name": "depositedForEdition",
                  "nameLocation": "3204:19:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "3169:54:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 6987,
                    "keyType": {
                      "id": 6985,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3177:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3169:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 6986,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3188:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d3bb0528",
                  "id": 6992,
                  "mutability": "mutable",
                  "name": "withdrawnForEdition",
                  "nameLocation": "3345:19:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "3310:54:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 6991,
                    "keyType": {
                      "id": 6989,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3318:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3310:27:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 6990,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3329:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 6997,
                  "mutability": "constant",
                  "name": "PERMISSIONED_SALE_TYPEHASH",
                  "nameLocation": "3467:26:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "3442:150:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6993,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3442:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "45646974696f6e496e666f286164647265737320636f6e7472616374416464726573732c61646472657373206275796572416464726573732c75696e743235362065646974696f6e496429",
                        "id": 6995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3514:77:38",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d045",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)\""
                        },
                        "value": "EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b0b05fba96c122a3db5d352971bb77a4e982b43f6b3a779beb0dcce9d261d045",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId)\""
                        }
                      ],
                      "id": 6994,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3504:9:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 6996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3504:88:38",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 6999,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "3624:16:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7900,
                  "src": "3598:42:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6998,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3598:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3",
                  "id": 7019,
                  "name": "EditionCreated",
                  "nameLocation": "3748:14:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7001,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "3788:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3772:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3772:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7003,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "3815:16:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3807:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7002,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3807:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7005,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "3849:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3841:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7004,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3841:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7007,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "quantity",
                        "nameLocation": "3871:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3864:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7006,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3864:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7009,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "royaltyBPS",
                        "nameLocation": "3896:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3889:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7008,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3889:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7011,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "3923:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3916:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7010,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3916:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7013,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "3949:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3942:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7012,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3942:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7015,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "3973:20:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "3966:27:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7014,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3966:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7017,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "4011:13:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7019,
                        "src": "4003:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7016,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4003:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3762:268:38"
                  },
                  "src": "3742:289:38"
                },
                {
                  "anonymous": false,
                  "eventSelector": "e38cb07a52e5d88a83de7c9d29c2841118103e462d20f8c526b35872f9977785",
                  "id": 7029,
                  "name": "EditionPurchased",
                  "nameLocation": "4043:16:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7021,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4085:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7029,
                        "src": "4069:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4069:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7023,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4120:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7029,
                        "src": "4104:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7022,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4104:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7025,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "numSold",
                        "nameLocation": "4228:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7029,
                        "src": "4221:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7024,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4221:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7027,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nameLocation": "4320:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7029,
                        "src": "4304:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4304:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4059:272:38"
                  },
                  "src": "4037:295:38"
                },
                {
                  "anonymous": false,
                  "eventSelector": "494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c",
                  "id": 7038,
                  "name": "AuctionTimeSet",
                  "nameLocation": "4344:14:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7032,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timeType",
                        "nameLocation": "4368:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7038,
                        "src": "4359:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TimeType_$6948",
                          "typeString": "enum ArtistV3.TimeType"
                        },
                        "typeName": {
                          "id": 7031,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7030,
                            "name": "TimeType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6948,
                            "src": "4359:8:38"
                          },
                          "referencedDeclaration": 6948,
                          "src": "4359:8:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TimeType_$6948",
                            "typeString": "enum ArtistV3.TimeType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7034,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4386:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7038,
                        "src": "4378:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7033,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4378:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7036,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newTime",
                        "nameLocation": "4412:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7038,
                        "src": "4397:22:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7035,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4397:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4358:62:38"
                  },
                  "src": "4338:83:38"
                },
                {
                  "anonymous": false,
                  "eventSelector": "73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a534",
                  "id": 7044,
                  "name": "SignerAddressSet",
                  "nameLocation": "4433:16:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7043,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7040,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4458:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7044,
                        "src": "4450:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7039,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4450:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7042,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "4485:13:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7044,
                        "src": "4469:29:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7041,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4469:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4449:50:38"
                  },
                  "src": "4427:73:38"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae",
                  "id": 7050,
                  "name": "PermissionedQuantitySet",
                  "nameLocation": "4512:23:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7046,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4544:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7050,
                        "src": "4536:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7045,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4536:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7048,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "4562:20:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7050,
                        "src": "4555:27:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7047,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4555:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4535:48:38"
                  },
                  "src": "4506:78:38"
                },
                {
                  "body": {
                    "id": 7067,
                    "nodeType": "Block",
                    "src": "4766:116:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7054,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6999,
                            "src": "4776:16:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                        "id": 7059,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4826:31:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        },
                                        "value": "EIP712Domain(uint256 chainId)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        }
                                      ],
                                      "id": 7058,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "4816:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 7060,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4816:42:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 7061,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "4860:5:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 7062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "4860:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7056,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "4805:3:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 7057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "4805:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 7063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4805:69:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 7055,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "4795:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 7064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4795:80:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4776:99:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 7066,
                        "nodeType": "ExpressionStatement",
                        "src": "4776:99:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7051,
                    "nodeType": "StructuredDocumentation",
                    "src": "4715:32:38",
                    "text": "@notice Contract constructor"
                  },
                  "id": 7068,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7052,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4763:2:38"
                  },
                  "returnParameters": {
                    "id": 7053,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4766:0:38"
                  },
                  "scope": 7900,
                  "src": "4752:130:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7115,
                    "nodeType": "Block",
                    "src": "5192:390:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7085,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7075,
                              "src": "5216:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 7086,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7077,
                              "src": "5223:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7084,
                            "name": "__ERC721_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "5202:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 7087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5202:29:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7088,
                        "nodeType": "ExpressionStatement",
                        "src": "5202:29:38"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7089,
                            "name": "__Ownable_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "5241:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 7090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5241:16:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7091,
                        "nodeType": "ExpressionStatement",
                        "src": "5241:16:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7093,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7071,
                              "src": "5347:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7092,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 105,
                            "src": "5329:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 7094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5329:25:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7095,
                        "nodeType": "ExpressionStatement",
                        "src": "5329:25:38"
                      },
                      {
                        "expression": {
                          "id": 7108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7096,
                            "name": "baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6969,
                            "src": "5424:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 7101,
                                    "name": "_baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7079,
                                    "src": "5458:8:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 7102,
                                        "name": "_artistId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7073,
                                        "src": "5468:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13591,
                                      "src": "5468:18:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 7104,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5468:20:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 7105,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5490:3:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 7099,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "5441:3:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 7100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "5441:16:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 7106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5441:53:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 7098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5434:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 7097,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "5434:6:38",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5434:61:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "5424:71:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 7109,
                        "nodeType": "ExpressionStatement",
                        "src": "5424:71:38"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 7110,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6975,
                              "src": "5552:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 7112,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "5552:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 7113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5552:23:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7114,
                        "nodeType": "ExpressionStatement",
                        "src": "5552:23:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7069,
                    "nodeType": "StructuredDocumentation",
                    "src": "4888:111:38",
                    "text": "@notice Initializes the contract\n @param _owner Owner of edition\n @param _name Name of artist"
                  },
                  "functionSelector": "abfc83a0",
                  "id": 7116,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 7082,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 7081,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "5180:11:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5180:11:38"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "5013:10:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7080,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7071,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "5041:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7116,
                        "src": "5033:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5033:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7073,
                        "mutability": "mutable",
                        "name": "_artistId",
                        "nameLocation": "5065:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7116,
                        "src": "5057:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7072,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5057:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7075,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "5098:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7116,
                        "src": "5084:19:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7074,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5084:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7077,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "5127:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7116,
                        "src": "5113:21:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7076,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5113:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7079,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "5158:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7116,
                        "src": "5144:22:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7078,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5144:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5023:149:38"
                  },
                  "returnParameters": {
                    "id": 7083,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5192:0:38"
                  },
                  "scope": 7900,
                  "src": "5004:578:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7223,
                    "nodeType": "Block",
                    "src": "6503:1162:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 7143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7139,
                                "name": "_permissionedQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7131,
                                "src": "6521:21:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 7142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7140,
                                  "name": "_quantity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7123,
                                  "src": "6545:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7141,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6557:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "6545:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "6521:37:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5065726d697373696f6e6564207175616e7469747920746f6f20626967",
                              "id": 7144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6560:31:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c53858417cc2deddabfdd18e140b000124e262663bcfa24067fc0dd85fca2395",
                                "typeString": "literal_string \"Permissioned quantity too big\""
                              },
                              "value": "Permissioned quantity too big"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c53858417cc2deddabfdd18e140b000124e262663bcfa24067fc0dd85fca2395",
                                "typeString": "literal_string \"Permissioned quantity too big\""
                              }
                            ],
                            "id": 7138,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6513:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6513:79:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7146,
                        "nodeType": "ExpressionStatement",
                        "src": "6513:79:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 7150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7148,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7123,
                                "src": "6610:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6622:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6610:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d75737420736574207175616e74697479",
                              "id": 7151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6625:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              },
                              "value": "Must set quantity"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              }
                            ],
                            "id": 7147,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6602:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6602:43:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7153,
                        "nodeType": "ExpressionStatement",
                        "src": "6602:43:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7155,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7119,
                                "src": "6663:17:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 7158,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6692:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 7157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6684:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7156,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6684:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6684:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6663:31:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                              "id": 7161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6696:27:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              },
                              "value": "Must set fundingRecipient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              }
                            ],
                            "id": 7154,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6655:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6655:69:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7163,
                        "nodeType": "ExpressionStatement",
                        "src": "6655:69:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 7167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7165,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7129,
                                "src": "6742:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 7166,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7127,
                                "src": "6753:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "6742:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e2073746172742074696d65",
                              "id": 7168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6765:42:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              },
                              "value": "End time must be greater than start time"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              }
                            ],
                            "id": 7164,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6734:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6734:74:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7170,
                        "nodeType": "ExpressionStatement",
                        "src": "6734:74:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 7173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7171,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7131,
                            "src": "6823:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6847:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6823:25:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7185,
                        "nodeType": "IfStatement",
                        "src": "6819:123:38",
                        "trueBody": {
                          "id": 7184,
                          "nodeType": "Block",
                          "src": "6850:92:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 7180,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7175,
                                      "name": "_signerAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7133,
                                      "src": "6872:14:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 7178,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6898:1:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 7177,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6890:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 7176,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6890:7:38",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 7179,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6890:10:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "6872:28:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "id": 7181,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6902:28:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    },
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    }
                                  ],
                                  "id": 7174,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6864:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6864:67:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7183,
                              "nodeType": "ExpressionStatement",
                              "src": "6864:67:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7186,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6980,
                              "src": "6952:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                              }
                            },
                            "id": 7190,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 7187,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6975,
                                  "src": "6961:11:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 7188,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "6961:19:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 7189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6961:21:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6952:31:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_storage",
                              "typeString": "struct ArtistV3.Edition storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7192,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7119,
                                "src": "7026:17:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 7193,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7121,
                                "src": "7064:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 7194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7093:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 7195,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7123,
                                "src": "7118:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 7196,
                                "name": "_royaltyBPS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7125,
                                "src": "7153:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 7197,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7127,
                                "src": "7189:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 7198,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7129,
                                "src": "7222:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 7199,
                                "name": "_permissionedQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7131,
                                "src": "7266:21:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 7200,
                                "name": "_signerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7133,
                                "src": "7316:14:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 7191,
                              "name": "Edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6967,
                              "src": "6986:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Edition_$6967_storage_ptr_$",
                                "typeString": "type(struct ArtistV3.Edition storage pointer)"
                              }
                            },
                            "id": 7201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "fundingRecipient",
                              "price",
                              "numSold",
                              "quantity",
                              "royaltyBPS",
                              "startTime",
                              "endTime",
                              "permissionedQuantity",
                              "signerAddress"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6986:355:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_memory_ptr",
                              "typeString": "struct ArtistV3.Edition memory"
                            }
                          },
                          "src": "6952:389:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$6967_storage",
                            "typeString": "struct ArtistV3.Edition storage ref"
                          }
                        },
                        "id": 7203,
                        "nodeType": "ExpressionStatement",
                        "src": "6952:389:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 7205,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6975,
                                  "src": "7385:11:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 7206,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "7385:19:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 7207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7385:21:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7208,
                              "name": "_fundingRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7119,
                              "src": "7420:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 7209,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7121,
                              "src": "7451:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7210,
                              "name": "_quantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7123,
                              "src": "7471:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 7211,
                              "name": "_royaltyBPS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7125,
                              "src": "7494:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 7212,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7127,
                              "src": "7519:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 7213,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7129,
                              "src": "7543:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 7214,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7131,
                              "src": "7565:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 7215,
                              "name": "_signerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7133,
                              "src": "7600:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7204,
                            "name": "EditionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7019,
                            "src": "7357:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint32,uint32,uint32,uint32,uint32,address)"
                            }
                          },
                          "id": 7216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7357:267:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7217,
                        "nodeType": "EmitStatement",
                        "src": "7352:272:38"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 7218,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6975,
                              "src": "7635:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 7220,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "7635:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 7221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7635:23:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7222,
                        "nodeType": "ExpressionStatement",
                        "src": "7635:23:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7117,
                    "nodeType": "StructuredDocumentation",
                    "src": "5588:619:38",
                    "text": "@notice Creates a new edition.\n @param _fundingRecipient The account that will receive sales revenue.\n @param _price The price at which each token will be sold, in ETH.\n @param _quantity The maximum number of tokens that can be sold.\n @param _royaltyBPS The royalty amount in bps.\n @param _startTime The start time of the auction, in seconds since unix epoch.\n @param _endTime The end time of the auction, in seconds since unix epoch.\n @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n @param _signerAddress signer address."
                  },
                  "functionSelector": "73aaf879",
                  "id": 7224,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 7136,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 7135,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "6493:9:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6493:9:38"
                    }
                  ],
                  "name": "createEdition",
                  "nameLocation": "6221:13:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7119,
                        "mutability": "mutable",
                        "name": "_fundingRecipient",
                        "nameLocation": "6260:17:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6244:33:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 7118,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6244:15:38",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7121,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "6295:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6287:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7120,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6287:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7123,
                        "mutability": "mutable",
                        "name": "_quantity",
                        "nameLocation": "6318:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6311:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7122,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6311:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7125,
                        "mutability": "mutable",
                        "name": "_royaltyBPS",
                        "nameLocation": "6344:11:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6337:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7124,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6337:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7127,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "6372:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6365:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7126,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6365:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7129,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "6399:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6392:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7128,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6392:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7131,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "6424:21:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6417:28:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7130,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6417:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7133,
                        "mutability": "mutable",
                        "name": "_signerAddress",
                        "nameLocation": "6463:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7224,
                        "src": "6455:22:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7132,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6455:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6234:249:38"
                  },
                  "returnParameters": {
                    "id": 7137,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6503:0:38"
                  },
                  "scope": 7900,
                  "src": "6212:1453:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7402,
                    "nodeType": "Block",
                    "src": "7984:2502:38",
                    "statements": [
                      {
                        "assignments": [
                          7233
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7233,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "8055:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7402,
                            "src": "8047:13:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7232,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8047:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7238,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 7234,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6980,
                              "src": "8063:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                              }
                            },
                            "id": 7236,
                            "indexExpression": {
                              "id": 7235,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "8072:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8063:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_storage",
                              "typeString": "struct ArtistV3.Edition storage ref"
                            }
                          },
                          "id": 7237,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6952,
                          "src": "8063:26:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8047:42:38"
                      },
                      {
                        "assignments": [
                          7240
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7240,
                            "mutability": "mutable",
                            "name": "quantity",
                            "nameLocation": "8106:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7402,
                            "src": "8099:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 7239,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8099:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7245,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 7241,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6980,
                              "src": "8117:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                              }
                            },
                            "id": 7243,
                            "indexExpression": {
                              "id": 7242,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "8126:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8117:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_storage",
                              "typeString": "struct ArtistV3.Edition storage ref"
                            }
                          },
                          "id": 7244,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6956,
                          "src": "8117:29:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8099:47:38"
                      },
                      {
                        "assignments": [
                          7247
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7247,
                            "mutability": "mutable",
                            "name": "numSold",
                            "nameLocation": "8163:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7402,
                            "src": "8156:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 7246,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8156:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7252,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 7248,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6980,
                              "src": "8173:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                              }
                            },
                            "id": 7250,
                            "indexExpression": {
                              "id": 7249,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "8182:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8173:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_storage",
                              "typeString": "struct ArtistV3.Edition storage ref"
                            }
                          },
                          "id": 7251,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numSold",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6954,
                          "src": "8173:28:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8156:45:38"
                      },
                      {
                        "assignments": [
                          7254
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7254,
                            "mutability": "mutable",
                            "name": "startTime",
                            "nameLocation": "8218:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7402,
                            "src": "8211:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 7253,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8211:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7259,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 7255,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6980,
                              "src": "8230:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                              }
                            },
                            "id": 7257,
                            "indexExpression": {
                              "id": 7256,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "8239:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8230:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_storage",
                              "typeString": "struct ArtistV3.Edition storage ref"
                            }
                          },
                          "id": 7258,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6960,
                          "src": "8230:30:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8211:49:38"
                      },
                      {
                        "assignments": [
                          7261
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7261,
                            "mutability": "mutable",
                            "name": "endTime",
                            "nameLocation": "8277:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7402,
                            "src": "8270:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 7260,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8270:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7266,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 7262,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6980,
                              "src": "8287:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                              }
                            },
                            "id": 7264,
                            "indexExpression": {
                              "id": 7263,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "8296:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8287:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_storage",
                              "typeString": "struct ArtistV3.Edition storage ref"
                            }
                          },
                          "id": 7265,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6962,
                          "src": "8287:28:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8270:45:38"
                      },
                      {
                        "assignments": [
                          7268
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7268,
                            "mutability": "mutable",
                            "name": "permissionedQuantity",
                            "nameLocation": "8332:20:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7402,
                            "src": "8325:27:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 7267,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8325:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7273,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 7269,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6980,
                              "src": "8355:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                              }
                            },
                            "id": 7271,
                            "indexExpression": {
                              "id": 7270,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "8364:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8355:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_storage",
                              "typeString": "struct ArtistV3.Edition storage ref"
                            }
                          },
                          "id": 7272,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permissionedQuantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6964,
                          "src": "8355:41:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8325:71:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 7277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7275,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7240,
                                "src": "8559:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8570:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8559:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                              "id": 7278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8573:24:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              },
                              "value": "Edition does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              }
                            ],
                            "id": 7274,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8551:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8551:47:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7280,
                        "nodeType": "ExpressionStatement",
                        "src": "8551:47:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 7284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7282,
                                "name": "numSold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7247,
                                "src": "8684:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 7283,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7240,
                                "src": "8694:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "8684:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f75742e",
                              "id": 7285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8704:35:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                "typeString": "literal_string \"This edition is already sold out.\""
                              },
                              "value": "This edition is already sold out."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                "typeString": "literal_string \"This edition is already sold out.\""
                              }
                            ],
                            "id": 7281,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8676:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8676:64:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7287,
                        "nodeType": "ExpressionStatement",
                        "src": "8676:64:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 7289,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "8821:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 7290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "8821:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 7291,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7233,
                                "src": "8834:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8821:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d7573742073656e6420656e6f75676820746f207075726368617365207468652065646974696f6e2e",
                              "id": 7293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8841:43:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              },
                              "value": "Must send enough to purchase the edition."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              }
                            ],
                            "id": 7288,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8813:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8813:72:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7295,
                        "nodeType": "ExpressionStatement",
                        "src": "8813:72:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7296,
                            "name": "startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7254,
                            "src": "8949:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 7297,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "8961:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 7298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "8961:15:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8949:27:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7325,
                        "nodeType": "IfStatement",
                        "src": "8945:463:38",
                        "trueBody": {
                          "id": 7324,
                          "nodeType": "Block",
                          "src": "8978:430:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7307,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 7303,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7301,
                                        "name": "permissionedQuantity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7268,
                                        "src": "9083:20:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 7302,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9106:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9083:24:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 7306,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7304,
                                        "name": "numSold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7247,
                                        "src": "9111:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 7305,
                                        "name": "permissionedQuantity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7268,
                                        "src": "9121:20:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "9111:30:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "9083:58:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c652026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "id": 7308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9159:61:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    },
                                    "value": "No permissioned tokens available & open auction not started"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    }
                                  ],
                                  "id": 7300,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9058:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9058:176:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7310,
                              "nodeType": "ExpressionStatement",
                              "src": "9058:176:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 7320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 7313,
                                          "name": "_signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7229,
                                          "src": "9317:10:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "id": 7314,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7227,
                                          "src": "9329:10:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 7312,
                                        "name": "getSigner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7899,
                                        "src": "9307:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$",
                                          "typeString": "function (bytes calldata,uint256) view returns (address)"
                                        }
                                      },
                                      "id": 7315,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9307:33:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 7316,
                                          "name": "editions",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6980,
                                          "src": "9344:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                            "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                          }
                                        },
                                        "id": 7318,
                                        "indexExpression": {
                                          "id": 7317,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7227,
                                          "src": "9353:10:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9344:20:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                          "typeString": "struct ArtistV3.Edition storage ref"
                                        }
                                      },
                                      "id": 7319,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signerAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6966,
                                      "src": "9344:34:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "9307:71:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "id": 7321,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9380:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    },
                                    "value": "Invalid signer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    }
                                  ],
                                  "id": 7311,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9299:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9299:98:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7323,
                              "nodeType": "ExpressionStatement",
                              "src": "9299:98:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7327,
                                "name": "endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7261,
                                "src": "9478:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 7328,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9488:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 7329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "9488:15:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9478:25:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e2068617320656e646564",
                              "id": 7331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9505:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              },
                              "value": "Auction has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              }
                            ],
                            "id": 7326,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9470:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9470:55:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7333,
                        "nodeType": "ExpressionStatement",
                        "src": "9470:55:38"
                      },
                      {
                        "assignments": [
                          7335
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7335,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "9612:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7402,
                            "src": "9604:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7334,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9604:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7336,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9604:15:38"
                      },
                      {
                        "id": 7358,
                        "nodeType": "UncheckedBlock",
                        "src": "9629:205:38",
                        "statements": [
                          {
                            "expression": {
                              "id": 7347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7337,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7335,
                                "src": "9653:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7340,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7338,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7227,
                                        "src": "9664:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313238",
                                        "id": 7339,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9678:3:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_128_by_1",
                                          "typeString": "int_const 128"
                                        },
                                        "value": "128"
                                      },
                                      "src": "9664:17:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7341,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9663:19:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 7344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7342,
                                        "name": "numSold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7247,
                                        "src": "9686:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 7343,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9696:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "9686:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "id": 7345,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9685:13:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "9663:35:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9653:45:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7348,
                            "nodeType": "ExpressionStatement",
                            "src": "9653:45:38"
                          },
                          {
                            "expression": {
                              "id": 7356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 7349,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6980,
                                    "src": "9781:8:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                    }
                                  },
                                  "id": 7351,
                                  "indexExpression": {
                                    "id": 7350,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7227,
                                    "src": "9790:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9781:20:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                    "typeString": "struct ArtistV3.Edition storage ref"
                                  }
                                },
                                "id": 7352,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "numSold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6954,
                                "src": "9781:28:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 7355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7353,
                                  "name": "numSold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7247,
                                  "src": "9812:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9822:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9812:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "9781:42:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 7357,
                            "nodeType": "ExpressionStatement",
                            "src": "9781:42:38"
                          }
                        ]
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 7359,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6980,
                                "src": "9963:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                }
                              },
                              "id": 7361,
                              "indexExpression": {
                                "id": 7360,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7227,
                                "src": "9972:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9963:20:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                "typeString": "struct ArtistV3.Edition storage ref"
                              }
                            },
                            "id": 7362,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6950,
                            "src": "9963:37:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 7363,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 54,
                              "src": "10004:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 7364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10004:7:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9963:48:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7383,
                          "nodeType": "Block",
                          "src": "10146:137:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 7375,
                                        "name": "editions",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6980,
                                        "src": "10223:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                          "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                        }
                                      },
                                      "id": 7377,
                                      "indexExpression": {
                                        "id": 7376,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7227,
                                        "src": "10232:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10223:20:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                        "typeString": "struct ArtistV3.Edition storage ref"
                                      }
                                    },
                                    "id": 7378,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6950,
                                    "src": "10223:37:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 7379,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "10262:3:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 7380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "src": "10262:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7374,
                                  "name": "_sendFunds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7856,
                                  "src": "10212:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 7381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10212:60:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7382,
                              "nodeType": "ExpressionStatement",
                              "src": "10212:60:38"
                            }
                          ]
                        },
                        "id": 7384,
                        "nodeType": "IfStatement",
                        "src": "9959:324:38",
                        "trueBody": {
                          "id": 7373,
                          "nodeType": "Block",
                          "src": "10013:127:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 7366,
                                    "name": "depositedForEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6988,
                                    "src": "10085:19:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 7368,
                                  "indexExpression": {
                                    "id": 7367,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7227,
                                    "src": "10105:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10085:31:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 7369,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "10120:3:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 7370,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "10120:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10085:44:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7372,
                              "nodeType": "ExpressionStatement",
                              "src": "10085:44:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 7386,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10364:3:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 7387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "10364:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7388,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7335,
                              "src": "10376:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7385,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "10358:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 7389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10358:26:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7390,
                        "nodeType": "ExpressionStatement",
                        "src": "10358:26:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 7392,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "10417:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7393,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7335,
                              "src": "10429:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 7394,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6980,
                                  "src": "10438:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                  }
                                },
                                "id": 7396,
                                "indexExpression": {
                                  "id": 7395,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7227,
                                  "src": "10447:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10438:20:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                  "typeString": "struct ArtistV3.Edition storage ref"
                                }
                              },
                              "id": 7397,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numSold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6954,
                              "src": "10438:28:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 7398,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10468:3:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 7399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "10468:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7391,
                            "name": "EditionPurchased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7029,
                            "src": "10400:16:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint32,address)"
                            }
                          },
                          "id": 7400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10400:79:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7401,
                        "nodeType": "EmitStatement",
                        "src": "10395:84:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7225,
                    "nodeType": "StructuredDocumentation",
                    "src": "7671:224:38",
                    "text": "@notice Creates a new token for the given edition, and assigns it to the buyer\n @param _editionId The id of the edition to purchase\n @param _signature A signed message for authorizing permissioned purchases"
                  },
                  "functionSelector": "abccf3dd",
                  "id": 7403,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "buyEdition",
                  "nameLocation": "7909:10:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7227,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "7928:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7403,
                        "src": "7920:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7226,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7920:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7229,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "7955:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7403,
                        "src": "7940:25:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7228,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7940:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7919:47:38"
                  },
                  "returnParameters": {
                    "id": 7231,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7984:0:38"
                  },
                  "scope": 7900,
                  "src": "7900:2586:38",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7434,
                    "nodeType": "Block",
                    "src": "10544:494:38",
                    "statements": [
                      {
                        "assignments": [
                          7409
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7409,
                            "mutability": "mutable",
                            "name": "remainingForEdition",
                            "nameLocation": "10637:19:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7434,
                            "src": "10629:27:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7408,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10629:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7417,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 7410,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6988,
                              "src": "10659:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 7412,
                            "indexExpression": {
                              "id": 7411,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7405,
                              "src": "10679:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10659:31:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 7413,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6992,
                              "src": "10693:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 7415,
                            "indexExpression": {
                              "id": 7414,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7405,
                              "src": "10713:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10693:31:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10659:65:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10629:95:38"
                      },
                      {
                        "expression": {
                          "id": 7424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7418,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6992,
                              "src": "10796:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 7420,
                            "indexExpression": {
                              "id": 7419,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7405,
                              "src": "10816:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10796:31:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 7421,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6988,
                              "src": "10830:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 7423,
                            "indexExpression": {
                              "id": 7422,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7405,
                              "src": "10850:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10830:31:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10796:65:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7425,
                        "nodeType": "ExpressionStatement",
                        "src": "10796:65:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 7427,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6980,
                                  "src": "10972:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                  }
                                },
                                "id": 7429,
                                "indexExpression": {
                                  "id": 7428,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7405,
                                  "src": "10981:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10972:20:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                  "typeString": "struct ArtistV3.Edition storage ref"
                                }
                              },
                              "id": 7430,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6950,
                              "src": "10972:37:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 7431,
                              "name": "remainingForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7409,
                              "src": "11011:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7426,
                            "name": "_sendFunds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7856,
                            "src": "10961:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 7432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10961:70:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7433,
                        "nodeType": "ExpressionStatement",
                        "src": "10961:70:38"
                      }
                    ]
                  },
                  "functionSelector": "155dd5ee",
                  "id": 7435,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFunds",
                  "nameLocation": "10501:13:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7406,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7405,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "10523:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7435,
                        "src": "10515:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7404,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10515:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10514:20:38"
                  },
                  "returnParameters": {
                    "id": 7407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10544:0:38"
                  },
                  "scope": 7900,
                  "src": "10492:546:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7459,
                    "nodeType": "Block",
                    "src": "11175:129:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7445,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6980,
                                "src": "11185:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                }
                              },
                              "id": 7447,
                              "indexExpression": {
                                "id": 7446,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7438,
                                "src": "11194:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11185:20:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                "typeString": "struct ArtistV3.Edition storage ref"
                              }
                            },
                            "id": 7448,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6960,
                            "src": "11185:30:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7449,
                            "name": "_startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7440,
                            "src": "11218:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "11185:43:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 7451,
                        "nodeType": "ExpressionStatement",
                        "src": "11185:43:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 7453,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6948,
                                "src": "11258:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$6948_$",
                                  "typeString": "type(enum ArtistV3.TimeType)"
                                }
                              },
                              "id": 7454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "START",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6946,
                              "src": "11258:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$6948",
                                "typeString": "enum ArtistV3.TimeType"
                              }
                            },
                            {
                              "id": 7455,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7438,
                              "src": "11274:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7456,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7440,
                              "src": "11286:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$6948",
                                "typeString": "enum ArtistV3.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 7452,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7038,
                            "src": "11243:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$6948_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV3.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 7457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11243:54:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7458,
                        "nodeType": "EmitStatement",
                        "src": "11238:59:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7436,
                    "nodeType": "StructuredDocumentation",
                    "src": "11044:46:38",
                    "text": "@notice Sets the start time for an edition"
                  },
                  "functionSelector": "fbab9e04",
                  "id": 7460,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 7443,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 7442,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "11165:9:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11165:9:38"
                    }
                  ],
                  "name": "setStartTime",
                  "nameLocation": "11104:12:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7438,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "11125:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7460,
                        "src": "11117:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11117:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7440,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "11144:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7460,
                        "src": "11137:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7439,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11137:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11116:39:38"
                  },
                  "returnParameters": {
                    "id": 7444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11175:0:38"
                  },
                  "scope": 7900,
                  "src": "11095:209:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7484,
                    "nodeType": "Block",
                    "src": "11435:121:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7470,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6980,
                                "src": "11445:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                }
                              },
                              "id": 7472,
                              "indexExpression": {
                                "id": 7471,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7463,
                                "src": "11454:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11445:20:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                "typeString": "struct ArtistV3.Edition storage ref"
                              }
                            },
                            "id": 7473,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6962,
                            "src": "11445:28:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7474,
                            "name": "_endTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7465,
                            "src": "11476:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "11445:39:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 7476,
                        "nodeType": "ExpressionStatement",
                        "src": "11445:39:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 7478,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6948,
                                "src": "11514:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$6948_$",
                                  "typeString": "type(enum ArtistV3.TimeType)"
                                }
                              },
                              "id": 7479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "END",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6947,
                              "src": "11514:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$6948",
                                "typeString": "enum ArtistV3.TimeType"
                              }
                            },
                            {
                              "id": 7480,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7463,
                              "src": "11528:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7481,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7465,
                              "src": "11540:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$6948",
                                "typeString": "enum ArtistV3.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 7477,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7038,
                            "src": "11499:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$6948_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV3.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 7482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11499:50:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7483,
                        "nodeType": "EmitStatement",
                        "src": "11494:55:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7461,
                    "nodeType": "StructuredDocumentation",
                    "src": "11310:44:38",
                    "text": "@notice Sets the end time for an edition"
                  },
                  "functionSelector": "bb314ca1",
                  "id": 7485,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 7468,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 7467,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "11425:9:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11425:9:38"
                    }
                  ],
                  "name": "setEndTime",
                  "nameLocation": "11368:10:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7463,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "11387:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7485,
                        "src": "11379:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11379:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7465,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "11406:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7485,
                        "src": "11399:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7464,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11399:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11378:37:38"
                  },
                  "returnParameters": {
                    "id": 7469,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11435:0:38"
                  },
                  "scope": 7900,
                  "src": "11359:197:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7517,
                    "nodeType": "Block",
                    "src": "11711:214:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7496,
                                "name": "_newSignerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7490,
                                "src": "11729:17:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 7499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11758:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 7498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11750:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7497,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11750:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11750:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11729:31:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                              "id": 7502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11762:28:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              },
                              "value": "Signer address cannot be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              }
                            ],
                            "id": 7495,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11721:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11721:70:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7504,
                        "nodeType": "ExpressionStatement",
                        "src": "11721:70:38"
                      },
                      {
                        "expression": {
                          "id": 7510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7505,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6980,
                                "src": "11802:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                }
                              },
                              "id": 7507,
                              "indexExpression": {
                                "id": 7506,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7488,
                                "src": "11811:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11802:20:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                "typeString": "struct ArtistV3.Edition storage ref"
                              }
                            },
                            "id": 7508,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signerAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6966,
                            "src": "11802:34:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7509,
                            "name": "_newSignerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7490,
                            "src": "11839:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11802:54:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7511,
                        "nodeType": "ExpressionStatement",
                        "src": "11802:54:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 7513,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7488,
                              "src": "11888:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7514,
                              "name": "_newSignerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7490,
                              "src": "11900:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7512,
                            "name": "SignerAddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7044,
                            "src": "11871:16:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address)"
                            }
                          },
                          "id": 7515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11871:47:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7516,
                        "nodeType": "EmitStatement",
                        "src": "11866:52:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7486,
                    "nodeType": "StructuredDocumentation",
                    "src": "11562:52:38",
                    "text": "@notice Sets the signature address of an edition"
                  },
                  "functionSelector": "56dee996",
                  "id": 7518,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 7493,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 7492,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "11701:9:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11701:9:38"
                    }
                  ],
                  "name": "setSignerAddress",
                  "nameLocation": "11628:16:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7488,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "11653:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7518,
                        "src": "11645:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7487,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11645:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7490,
                        "mutability": "mutable",
                        "name": "_newSignerAddress",
                        "nameLocation": "11673:17:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7518,
                        "src": "11665:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7489,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11665:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11644:47:38"
                  },
                  "returnParameters": {
                    "id": 7494,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11711:0:38"
                  },
                  "scope": 7900,
                  "src": "11619:306:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7565,
                    "nodeType": "Block",
                    "src": "12095:521:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 7536,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7529,
                                "name": "_permissionedQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7523,
                                "src": "12193:21:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 7535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 7530,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6980,
                                      "src": "12217:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                      }
                                    },
                                    "id": 7532,
                                    "indexExpression": {
                                      "id": 7531,
                                      "name": "_editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7521,
                                      "src": "12226:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12217:20:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                      "typeString": "struct ArtistV3.Edition storage ref"
                                    }
                                  },
                                  "id": 7533,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "quantity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6956,
                                  "src": "12217:29:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12249:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12217:33:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "12193:57:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d757374206e6f7420657863656564207175616e74697479",
                              "id": 7537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12252:26:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f00aaf61ff36edcd294c208e7662638284f52536fb65dcd56ec734d9148f916d",
                                "typeString": "literal_string \"Must not exceed quantity\""
                              },
                              "value": "Must not exceed quantity"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f00aaf61ff36edcd294c208e7662638284f52536fb65dcd56ec734d9148f916d",
                                "typeString": "literal_string \"Must not exceed quantity\""
                              }
                            ],
                            "id": 7528,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12185:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12185:94:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7539,
                        "nodeType": "ExpressionStatement",
                        "src": "12185:94:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 7541,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6980,
                                    "src": "12381:8:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                    }
                                  },
                                  "id": 7543,
                                  "indexExpression": {
                                    "id": 7542,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7521,
                                    "src": "12390:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12381:20:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                    "typeString": "struct ArtistV3.Edition storage ref"
                                  }
                                },
                                "id": 7544,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signerAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6966,
                                "src": "12381:34:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 7547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12427:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 7546,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12419:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7545,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12419:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7548,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12419:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "12381:48:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                              "id": 7550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12431:28:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              },
                              "value": "Edition must have a signer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              }
                            ],
                            "id": 7540,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12373:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12373:87:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7552,
                        "nodeType": "ExpressionStatement",
                        "src": "12373:87:38"
                      },
                      {
                        "expression": {
                          "id": 7558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7553,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6980,
                                "src": "12471:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                }
                              },
                              "id": 7555,
                              "indexExpression": {
                                "id": 7554,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7521,
                                "src": "12480:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12471:20:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                "typeString": "struct ArtistV3.Edition storage ref"
                              }
                            },
                            "id": 7556,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "permissionedQuantity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6964,
                            "src": "12471:41:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7557,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7523,
                            "src": "12515:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "12471:65:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 7559,
                        "nodeType": "ExpressionStatement",
                        "src": "12471:65:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 7561,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7521,
                              "src": "12575:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7562,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7523,
                              "src": "12587:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 7560,
                            "name": "PermissionedQuantitySet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7050,
                            "src": "12551:23:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint32)"
                            }
                          },
                          "id": 7563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12551:58:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7564,
                        "nodeType": "EmitStatement",
                        "src": "12546:63:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7519,
                    "nodeType": "StructuredDocumentation",
                    "src": "11931:57:38",
                    "text": "@notice Sets the permissioned quantity for an edition"
                  },
                  "functionSelector": "52e25bf2",
                  "id": 7566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 7526,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 7525,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "12085:9:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12085:9:38"
                    }
                  ],
                  "name": "setPermissionedQuantity",
                  "nameLocation": "12002:23:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7521,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12034:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7566,
                        "src": "12026:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7520,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12026:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7523,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "12053:21:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7566,
                        "src": "12046:28:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7522,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12046:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12025:50:38"
                  },
                  "returnParameters": {
                    "id": 7527,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12095:0:38"
                  },
                  "scope": 7900,
                  "src": "11993:623:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1051
                  ],
                  "body": {
                    "id": 7603,
                    "nodeType": "Block",
                    "src": "13001:248:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 7577,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7569,
                                  "src": "13027:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7576,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "13019:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 7578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13019:17:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 7579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13038:49:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 7575,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13011:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13011:77:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7581,
                        "nodeType": "ExpressionStatement",
                        "src": "13011:77:38"
                      },
                      {
                        "assignments": [
                          7583
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7583,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "13107:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7603,
                            "src": "13099:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7582,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13099:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7587,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7585,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7569,
                              "src": "13134:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7584,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7775,
                            "src": "13119:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 7586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13119:24:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13099:44:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 7592,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6969,
                                  "src": "13185:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 7593,
                                      "name": "editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7583,
                                      "src": "13194:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7594,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13591,
                                    "src": "13194:18:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 7595,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13194:20:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2f",
                                  "id": 7596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13216:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  "value": "/"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 7597,
                                      "name": "_tokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7569,
                                      "src": "13221:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7598,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13591,
                                    "src": "13221:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 7599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13221:19:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 7590,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13168:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "13168:16:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 7600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13168:73:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13161:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 7588,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "13161:6:38",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13161:81:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 7574,
                        "id": 7602,
                        "nodeType": "Return",
                        "src": "13154:88:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7567,
                    "nodeType": "StructuredDocumentation",
                    "src": "12725:190:38",
                    "text": "@notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\n @dev Concatenate the baseURI, editionId and tokenId, to create URI."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 7604,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "12929:8:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7571,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12968:8:38"
                  },
                  "parameters": {
                    "id": 7570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7569,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "12946:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7604,
                        "src": "12938:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7568,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12938:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12937:18:38"
                  },
                  "returnParameters": {
                    "id": 7574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7573,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7604,
                        "src": "12986:13:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7572,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12986:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12985:15:38"
                  },
                  "scope": 7900,
                  "src": "12920:329:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7619,
                    "nodeType": "Block",
                    "src": "13426:71:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 7614,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6969,
                                  "src": "13467:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "hexValue": "73746f726566726f6e74",
                                  "id": 7615,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13476:12:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  },
                                  "value": "storefront"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  }
                                ],
                                "expression": {
                                  "id": 7612,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13450:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "13450:16:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 7616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13450:39:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13443:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 7610,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "13443:6:38",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13443:47:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 7609,
                        "id": 7618,
                        "nodeType": "Return",
                        "src": "13436:54:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7605,
                    "nodeType": "StructuredDocumentation",
                    "src": "13255:107:38",
                    "text": "@notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront"
                  },
                  "functionSelector": "e8a3d485",
                  "id": 7620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "13376:11:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7606,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13387:2:38"
                  },
                  "returnParameters": {
                    "id": 7609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7608,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7620,
                        "src": "13411:13:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7607,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13411:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13410:15:38"
                  },
                  "scope": 7900,
                  "src": "13367:130:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    149
                  ],
                  "body": {
                    "id": 7678,
                    "nodeType": "Block",
                    "src": "13813:371:38",
                    "statements": [
                      {
                        "assignments": [
                          7634
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7634,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "13831:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7678,
                            "src": "13823:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7633,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13823:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7638,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7636,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7623,
                              "src": "13858:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7635,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7775,
                            "src": "13843:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 7637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13843:24:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13823:44:38"
                      },
                      {
                        "assignments": [
                          7641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7641,
                            "mutability": "mutable",
                            "name": "edition",
                            "nameLocation": "13892:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7678,
                            "src": "13877:22:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$6967_memory_ptr",
                              "typeString": "struct ArtistV3.Edition"
                            },
                            "typeName": {
                              "id": 7640,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 7639,
                                "name": "Edition",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 6967,
                                "src": "13877:7:38"
                              },
                              "referencedDeclaration": 6967,
                              "src": "13877:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6967_storage_ptr",
                                "typeString": "struct ArtistV3.Edition"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7645,
                        "initialValue": {
                          "baseExpression": {
                            "id": 7642,
                            "name": "editions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6980,
                            "src": "13902:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                              "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                            }
                          },
                          "id": 7644,
                          "indexExpression": {
                            "id": 7643,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7634,
                            "src": "13911:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13902:19:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$6967_storage",
                            "typeString": "struct ArtistV3.Edition storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13877:44:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 7646,
                              "name": "edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7641,
                              "src": "13936:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$6967_memory_ptr",
                                "typeString": "struct ArtistV3.Edition memory"
                              }
                            },
                            "id": 7647,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6950,
                            "src": "13936:24:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 7650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13972:3:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 7649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13964:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7648,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13964:7:38",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13964:12:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13936:40:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7659,
                        "nodeType": "IfStatement",
                        "src": "13932:107:38",
                        "trueBody": {
                          "id": 7658,
                          "nodeType": "Block",
                          "src": "13978:61:38",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "expression": {
                                      "id": 7653,
                                      "name": "edition",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7641,
                                      "src": "14000:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$6967_memory_ptr",
                                        "typeString": "struct ArtistV3.Edition memory"
                                      }
                                    },
                                    "id": 7654,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6950,
                                    "src": "14000:24:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 7655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14026:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 7656,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13999:29:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(address payable,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 7632,
                              "id": 7657,
                              "nodeType": "Return",
                              "src": "13992:36:38"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7661
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7661,
                            "mutability": "mutable",
                            "name": "royaltyBPS",
                            "nameLocation": "14057:10:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7678,
                            "src": "14049:18:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7660,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14049:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7667,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 7664,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7641,
                                "src": "14078:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6967_memory_ptr",
                                  "typeString": "struct ArtistV3.Edition memory"
                                }
                              },
                              "id": 7665,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "royaltyBPS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6958,
                              "src": "14078:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 7663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14070:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 7662,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14070:7:38",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14070:27:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14049:48:38"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 7668,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7641,
                                "src": "14116:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$6967_memory_ptr",
                                  "typeString": "struct ArtistV3.Edition memory"
                                }
                              },
                              "id": 7669,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6950,
                              "src": "14116:24:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7672,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7670,
                                      "name": "_salePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7625,
                                      "src": "14143:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 7671,
                                      "name": "royaltyBPS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7661,
                                      "src": "14156:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14143:23:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7673,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "14142:25:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "31305f303030",
                                "id": 7674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14170:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10_000"
                              },
                              "src": "14142:34:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7676,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14115:62:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "functionReturnParameters": 7632,
                        "id": 7677,
                        "nodeType": "Return",
                        "src": "14108:69:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7621,
                    "nodeType": "StructuredDocumentation",
                    "src": "13503:129:38",
                    "text": "@notice Get royalty information for token\n @param _tokenId token id\n @param _salePrice Sale price for the token"
                  },
                  "functionSelector": "2a55205a",
                  "id": 7679,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "13646:11:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7627,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "13734:8:38"
                  },
                  "parameters": {
                    "id": 7626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7623,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "13666:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7679,
                        "src": "13658:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13658:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7625,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "13684:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7679,
                        "src": "13676:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13676:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13657:38:38"
                  },
                  "returnParameters": {
                    "id": 7632,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7629,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "13768:16:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7679,
                        "src": "13760:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7628,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13760:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7631,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "13794:13:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7679,
                        "src": "13786:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7630,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13786:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13759:49:38"
                  },
                  "scope": 7900,
                  "src": "13637:547:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7712,
                    "nodeType": "Block",
                    "src": "14313:174:38",
                    "statements": [
                      {
                        "assignments": [
                          7686
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7686,
                            "mutability": "mutable",
                            "name": "total",
                            "nameLocation": "14331:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7712,
                            "src": "14323:13:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7685,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14323:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7688,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 7687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14339:1:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14323:17:38"
                      },
                      {
                        "body": {
                          "id": 7708,
                          "nodeType": "Block",
                          "src": "14405:54:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7701,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7686,
                                  "src": "14419:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 7702,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6980,
                                      "src": "14428:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$6967_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV3.Edition storage ref)"
                                      }
                                    },
                                    "id": 7704,
                                    "indexExpression": {
                                      "id": 7703,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7690,
                                      "src": "14437:2:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14428:12:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$6967_storage",
                                      "typeString": "struct ArtistV3.Edition storage ref"
                                    }
                                  },
                                  "id": 7705,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "numSold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6954,
                                  "src": "14428:20:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "14419:29:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7707,
                              "nodeType": "ExpressionStatement",
                              "src": "14419:29:38"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7693,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7690,
                            "src": "14371:2:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 7694,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6975,
                                "src": "14376:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 7695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "14376:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 7696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14376:21:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14371:26:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7709,
                        "initializationExpression": {
                          "assignments": [
                            7690
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7690,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "14363:2:38",
                              "nodeType": "VariableDeclaration",
                              "scope": 7709,
                              "src": "14355:10:38",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7689,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14355:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 7692,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 7691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14368:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14355:14:38"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 7699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "14399:4:38",
                            "subExpression": {
                              "id": 7698,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7690,
                              "src": "14399:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7700,
                          "nodeType": "ExpressionStatement",
                          "src": "14399:4:38"
                        },
                        "nodeType": "ForStatement",
                        "src": "14350:109:38"
                      },
                      {
                        "expression": {
                          "id": 7710,
                          "name": "total",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7686,
                          "src": "14475:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7684,
                        "id": 7711,
                        "nodeType": "Return",
                        "src": "14468:12:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7680,
                    "nodeType": "StructuredDocumentation",
                    "src": "14190:63:38",
                    "text": "@notice The total number of tokens created by this contract"
                  },
                  "functionSelector": "18160ddd",
                  "id": 7713,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "14267:11:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7681,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14278:2:38"
                  },
                  "returnParameters": {
                    "id": 7684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7683,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "14304:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14304:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14303:9:38"
                  },
                  "scope": 7900,
                  "src": "14258:229:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    940,
                    2986
                  ],
                  "body": {
                    "id": 7736,
                    "nodeType": "Block",
                    "src": "14784:142:38",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 7729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7725,
                                    "name": "IERC2981Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 150,
                                    "src": "14818:19:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  ],
                                  "id": 7724,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "14813:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14813:25:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981Upgradeable_$150",
                                  "typeString": "type(contract IERC2981Upgradeable)"
                                }
                              },
                              "id": 7727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "14813:37:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 7728,
                              "name": "_interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7716,
                              "src": "14854:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "14813:53:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 7732,
                                "name": "_interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7716,
                                "src": "14906:12:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 7730,
                                "name": "ERC721Upgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "14870:17:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract ERC721Upgradeable)"
                                }
                              },
                              "id": 7731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 940,
                              "src": "14870:35:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 7733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14870:49:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "14813:106:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 7723,
                        "id": 7735,
                        "nodeType": "Return",
                        "src": "14794:125:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7714,
                    "nodeType": "StructuredDocumentation",
                    "src": "14493:127:38",
                    "text": "@notice Informs other contracts which interfaces this contract supports\n @dev https://eips.ethereum.org/EIPS/eip-165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 7737,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "14634:17:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7720,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 7718,
                        "name": "ERC721Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1718,
                        "src": "14718:17:38"
                      },
                      {
                        "id": 7719,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "14737:18:38"
                      }
                    ],
                    "src": "14709:47:38"
                  },
                  "parameters": {
                    "id": 7717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7716,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "14659:12:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7737,
                        "src": "14652:19:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 7715,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "14652:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14651:21:38"
                  },
                  "returnParameters": {
                    "id": 7723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7722,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7737,
                        "src": "14774:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7721,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14774:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14773:6:38"
                  },
                  "scope": 7900,
                  "src": "14625:301:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7749,
                    "nodeType": "Block",
                    "src": "15051:117:38",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 7743,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6975,
                                "src": "15068:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 7744,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "15068:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 7745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15068:21:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 7746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15092:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "15068:25:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7742,
                        "id": 7748,
                        "nodeType": "Return",
                        "src": "15061:32:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7738,
                    "nodeType": "StructuredDocumentation",
                    "src": "14932:58:38",
                    "text": "@notice returns the number of editions for this artist"
                  },
                  "functionSelector": "4bf44026",
                  "id": 7750,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "editionCount",
                  "nameLocation": "15004:12:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7739,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15016:2:38"
                  },
                  "returnParameters": {
                    "id": 7742,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7741,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7750,
                        "src": "15042:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7740,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15042:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15041:9:38"
                  },
                  "scope": 7900,
                  "src": "14995:173:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7774,
                    "nodeType": "Block",
                    "src": "15246:356:38",
                    "statements": [
                      {
                        "assignments": [
                          7758
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7758,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "15328:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7774,
                            "src": "15320:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7757,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15320:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7762,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7759,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7752,
                            "src": "15340:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "313238",
                            "id": 7760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15352:3:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "15340:15:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15320:35:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7763,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7758,
                            "src": "15453:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15466:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15453:14:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7771,
                        "nodeType": "IfStatement",
                        "src": "15449:120:38",
                        "trueBody": {
                          "id": 7770,
                          "nodeType": "Block",
                          "src": "15469:100:38",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 7766,
                                  "name": "_tokenToEdition",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6984,
                                  "src": "15533:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 7768,
                                "indexExpression": {
                                  "id": 7767,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7752,
                                  "src": "15549:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15533:25:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 7756,
                              "id": 7769,
                              "nodeType": "Return",
                              "src": "15526:32:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7772,
                          "name": "editionId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7758,
                          "src": "15586:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7756,
                        "id": 7773,
                        "nodeType": "Return",
                        "src": "15579:16:38"
                      }
                    ]
                  },
                  "functionSelector": "602787ed",
                  "id": 7775,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenToEdition",
                  "nameLocation": "15183:14:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7752,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "15206:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7775,
                        "src": "15198:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7751,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15198:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15197:18:38"
                  },
                  "returnParameters": {
                    "id": 7756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7755,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7775,
                        "src": "15237:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7754,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15237:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15236:9:38"
                  },
                  "scope": 7900,
                  "src": "15174:428:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7821,
                    "nodeType": "Block",
                    "src": "15705:211:38",
                    "statements": [
                      {
                        "assignments": [
                          7788
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7788,
                            "mutability": "mutable",
                            "name": "owners",
                            "nameLocation": "15732:6:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7821,
                            "src": "15715:23:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7786,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15715:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7787,
                              "nodeType": "ArrayTypeName",
                              "src": "15715:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7795,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 7792,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7778,
                                "src": "15755:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 7793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "15755:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "15741:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7789,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15745:7:38",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7790,
                              "nodeType": "ArrayTypeName",
                              "src": "15745:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 7794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15741:31:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15715:57:38"
                      },
                      {
                        "body": {
                          "id": 7817,
                          "nodeType": "Block",
                          "src": "15829:58:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 7807,
                                    "name": "owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7788,
                                    "src": "15843:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 7809,
                                  "indexExpression": {
                                    "id": 7808,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7797,
                                    "src": "15850:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15843:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 7811,
                                        "name": "_tokenIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7778,
                                        "src": "15863:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 7813,
                                      "indexExpression": {
                                        "id": 7812,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7797,
                                        "src": "15873:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15863:12:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7810,
                                    "name": "ownerOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 992,
                                    "src": "15855:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view returns (address)"
                                    }
                                  },
                                  "id": 7814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15855:21:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15843:33:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7816,
                              "nodeType": "ExpressionStatement",
                              "src": "15843:33:38"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7800,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7797,
                            "src": "15802:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 7801,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7778,
                              "src": "15806:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 7802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "15806:16:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15802:20:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7818,
                        "initializationExpression": {
                          "assignments": [
                            7797
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7797,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "15795:1:38",
                              "nodeType": "VariableDeclaration",
                              "scope": 7818,
                              "src": "15787:9:38",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7796,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15787:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 7799,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 7798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15799:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15787:13:38"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 7805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15824:3:38",
                            "subExpression": {
                              "id": 7804,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7797,
                              "src": "15824:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7806,
                          "nodeType": "ExpressionStatement",
                          "src": "15824:3:38"
                        },
                        "nodeType": "ForStatement",
                        "src": "15782:105:38"
                      },
                      {
                        "expression": {
                          "id": 7819,
                          "name": "owners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7788,
                          "src": "15903:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 7783,
                        "id": 7820,
                        "nodeType": "Return",
                        "src": "15896:13:38"
                      }
                    ]
                  },
                  "functionSelector": "52f5c2e4",
                  "id": 7822,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownersOfTokenIds",
                  "nameLocation": "15617:16:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7779,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7778,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nameLocation": "15653:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7822,
                        "src": "15634:28:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7776,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15634:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7777,
                          "nodeType": "ArrayTypeName",
                          "src": "15634:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15633:30:38"
                  },
                  "returnParameters": {
                    "id": 7783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7782,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7822,
                        "src": "15687:16:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7780,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15687:7:38",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7781,
                          "nodeType": "ArrayTypeName",
                          "src": "15687:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15686:18:38"
                  },
                  "scope": 7900,
                  "src": "15608:308:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7855,
                    "nodeType": "Block",
                    "src": "16251:235:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 7833,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "16277:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ArtistV3_$7900",
                                        "typeString": "contract ArtistV3"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ArtistV3_$7900",
                                        "typeString": "contract ArtistV3"
                                      }
                                    ],
                                    "id": 7832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16269:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 7831,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16269:7:38",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7834,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16269:13:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 7835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "16269:21:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 7836,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7827,
                                "src": "16294:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16269:32:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                              "id": 7838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16303:31:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              },
                              "value": "Insufficient balance for send"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              }
                            ],
                            "id": 7830,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16261:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16261:74:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7840,
                        "nodeType": "ExpressionStatement",
                        "src": "16261:74:38"
                      },
                      {
                        "assignments": [
                          7842,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7842,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "16352:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7855,
                            "src": "16347:12:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7841,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "16347:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 7849,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 7847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16397:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 7843,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7825,
                                "src": "16365:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 7844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "16365:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 7846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 7845,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7827,
                                "src": "16388:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "16365:31:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 7848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16365:35:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16346:54:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7851,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7842,
                              "src": "16418:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e74206d61792068617665207265766572746564",
                              "id": 7852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16427:51:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              },
                              "value": "Unable to send value: recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              }
                            ],
                            "id": 7850,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16410:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16410:69:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7854,
                        "nodeType": "ExpressionStatement",
                        "src": "16410:69:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7823,
                    "nodeType": "StructuredDocumentation",
                    "src": "16030:143:38",
                    "text": "@notice Sends funds to an address\n @param _recipient The address to send funds to\n @param _amount The amount of funds to send"
                  },
                  "id": 7856,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendFunds",
                  "nameLocation": "16187:10:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7825,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "16214:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7856,
                        "src": "16198:26:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 7824,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16198:15:38",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7827,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "16234:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7856,
                        "src": "16226:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7826,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16226:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16197:45:38"
                  },
                  "returnParameters": {
                    "id": 7829,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16251:0:38"
                  },
                  "scope": 7900,
                  "src": "16178:308:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 7898,
                    "nodeType": "Block",
                    "src": "16823:361:38",
                    "statements": [
                      {
                        "assignments": [
                          7867
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7867,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "16841:6:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7898,
                            "src": "16833:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7866,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16833:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7888,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 7871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16907:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 7872,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6999,
                                  "src": "16935:16:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 7876,
                                          "name": "PERMISSIONED_SALE_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6997,
                                          "src": "16990:26:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 7879,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "17026:4:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ArtistV3_$7900",
                                                "typeString": "contract ArtistV3"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_ArtistV3_$7900",
                                                "typeString": "contract ArtistV3"
                                              }
                                            ],
                                            "id": 7878,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "17018:7:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 7877,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "17018:7:38",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 7880,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "17018:13:38",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 7881,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "17033:3:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 7882,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "17033:10:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 7883,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7861,
                                          "src": "17045:10:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 7874,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "16979:3:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 7875,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "16979:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 7884,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16979:77:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 7873,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "16969:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 7885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16969:88:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 7869,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16873:3:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "16873:16:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 7886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16873:198:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7868,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "16850:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 7887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16850:231:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16833:248:38"
                      },
                      {
                        "assignments": [
                          7890
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7890,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "17099:16:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7898,
                            "src": "17091:24:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7889,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17091:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7895,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7893,
                              "name": "_signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7859,
                              "src": "17133:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 7891,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7867,
                              "src": "17118:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 7892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4427,
                            "src": "17118:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 7894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17118:26:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17091:53:38"
                      },
                      {
                        "expression": {
                          "id": 7896,
                          "name": "recoveredAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7890,
                          "src": "17161:16:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 7865,
                        "id": 7897,
                        "nodeType": "Return",
                        "src": "17154:23:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7857,
                    "nodeType": "StructuredDocumentation",
                    "src": "16492:229:38",
                    "text": "@notice Gets signer address to validate permissioned purchase\n @param _signature signed message\n @param _editionId edition id\n @return address of signer\n @dev https://eips.ethereum.org/EIPS/eip-712"
                  },
                  "id": 7899,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "16735:9:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7859,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "16760:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7899,
                        "src": "16745:25:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7858,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16745:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7861,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "16780:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7899,
                        "src": "16772:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7860,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16772:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16744:47:38"
                  },
                  "returnParameters": {
                    "id": 7865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7864,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7899,
                        "src": "16814:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7863,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16814:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16813:9:38"
                  },
                  "scope": 7900,
                  "src": "16726:458:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 7901,
              "src": "1465:15721:38",
              "usedErrors": []
            }
          ],
          "src": "45:17142:38"
        },
        "id": 38
      },
      "contracts/ArtistV4.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistV4.sol",
          "exportedSymbols": {
            "ArtistV4": [
              9043
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSA": [
              4678
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "LibUintToString": [
              13592
            ],
            "OwnableUpgradeable": [
              131
            ]
          },
          "id": 9044,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7902,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:23:39"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "id": 7905,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9044,
              "sourceUnit": 151,
              "src": "1538:127:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7903,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 150,
                    "src": "1546:19:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 7904,
                    "name": "IERC165Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2987,
                    "src": "1567:18:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "id": 7907,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9044,
              "sourceUnit": 1719,
              "src": "1666:105:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7906,
                    "name": "ERC721Upgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1718,
                    "src": "1674:17:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 7909,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9044,
              "sourceUnit": 132,
              "src": "1772:101:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7908,
                    "name": "OwnableUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 131,
                    "src": "1780:18:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/LibUintToString.sol",
              "file": "./utils/LibUintToString.sol",
              "id": 7911,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9044,
              "sourceUnit": 13593,
              "src": "1874:60:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7910,
                    "name": "LibUintToString",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13592,
                    "src": "1882:15:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 7913,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9044,
              "sourceUnit": 2239,
              "src": "1935:102:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7912,
                    "name": "CountersUpgradeable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2238,
                    "src": "1943:19:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 7915,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9044,
              "sourceUnit": 4679,
              "src": "2038:75:39",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7914,
                    "name": "ECDSA",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4678,
                    "src": "2046:5:39",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7917,
                    "name": "ERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1718,
                    "src": "2426:17:39"
                  },
                  "id": 7918,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2426:17:39"
                },
                {
                  "baseName": {
                    "id": 7919,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 150,
                    "src": "2445:19:39"
                  },
                  "id": 7920,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2445:19:39"
                },
                {
                  "baseName": {
                    "id": 7921,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "2466:18:39"
                  },
                  "id": 7922,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2466:18:39"
                }
              ],
              "canonicalName": "ArtistV4",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 7916,
                "nodeType": "StructuredDocumentation",
                "src": "2115:290:39",
                "text": "@title Artist\n @author SoundXYZ - @gigamesh & @vigneshka\n @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol"
              },
              "fullyImplemented": true,
              "id": 9043,
              "linearizedBaseContracts": [
                9043,
                131,
                150,
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "ArtistV4",
              "nameLocation": "2414:8:39",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 7925,
                  "libraryName": {
                    "id": 7923,
                    "name": "LibUintToString",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 13592,
                    "src": "2591:15:39"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2585:34:39",
                  "typeName": {
                    "id": 7924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2611:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 7929,
                  "libraryName": {
                    "id": 7926,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "2630:19:39"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2624:58:39",
                  "typeName": {
                    "id": 7928,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 7927,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2654:27:39"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2654:27:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 7932,
                  "libraryName": {
                    "id": 7930,
                    "name": "ECDSA",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4678,
                    "src": "2693:5:39"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2687:24:39",
                  "typeName": {
                    "id": 7931,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2703:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "canonicalName": "ArtistV4.TimeType",
                  "id": 7935,
                  "members": [
                    {
                      "id": 7933,
                      "name": "START",
                      "nameLocation": "2741:5:39",
                      "nodeType": "EnumValue",
                      "src": "2741:5:39"
                    },
                    {
                      "id": 7934,
                      "name": "END",
                      "nameLocation": "2756:3:39",
                      "nodeType": "EnumValue",
                      "src": "2756:3:39"
                    }
                  ],
                  "name": "TimeType",
                  "nameLocation": "2722:8:39",
                  "nodeType": "EnumDefinition",
                  "src": "2717:48:39"
                },
                {
                  "canonicalName": "ArtistV4.Edition",
                  "id": 7954,
                  "members": [
                    {
                      "constant": false,
                      "id": 7937,
                      "mutability": "mutable",
                      "name": "fundingRecipient",
                      "nameLocation": "2910:16:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "2894:32:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 7936,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2894:15:39",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7939,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "3007:5:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "2999:13:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7938,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2999:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7941,
                      "mutability": "mutable",
                      "name": "numSold",
                      "nameLocation": "3074:7:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "3067:14:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7940,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3067:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7943,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "3156:8:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "3149:15:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7942,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3149:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7945,
                      "mutability": "mutable",
                      "name": "royaltyBPS",
                      "nameLocation": "3214:10:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "3207:17:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7944,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3207:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7947,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "3309:9:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "3302:16:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7946,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3302:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7949,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "3401:7:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "3394:14:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7948,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3394:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7951,
                      "mutability": "mutable",
                      "name": "permissionedQuantity",
                      "nameLocation": "3468:20:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "3461:27:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7950,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3461:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7953,
                      "mutability": "mutable",
                      "name": "signerAddress",
                      "nameLocation": "3542:13:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7954,
                      "src": "3534:21:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7952,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3534:7:39",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Edition",
                  "nameLocation": "2820:7:39",
                  "nodeType": "StructDefinition",
                  "scope": 9043,
                  "src": "2813:749:39",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 7956,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "3680:7:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "3664:23:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7955,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3664:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7959,
                  "mutability": "mutable",
                  "name": "atTokenId",
                  "nameLocation": "3730:9:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "3694:45:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 7958,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 7957,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "3694:27:39"
                    },
                    "referencedDeclaration": 2170,
                    "src": "3694:27:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 7962,
                  "mutability": "mutable",
                  "name": "atEditionId",
                  "nameLocation": "3801:11:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "3765:47:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 7961,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 7960,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "3765:27:39"
                    },
                    "referencedDeclaration": 2170,
                    "src": "3765:27:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "279c806e",
                  "id": 7967,
                  "mutability": "mutable",
                  "name": "editions",
                  "nameLocation": "3904:8:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "3869:43:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                    "typeString": "mapping(uint256 => struct ArtistV4.Edition)"
                  },
                  "typeName": {
                    "id": 7966,
                    "keyType": {
                      "id": 7963,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3877:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3869:27:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                      "typeString": "mapping(uint256 => struct ArtistV4.Edition)"
                    },
                    "valueType": {
                      "id": 7965,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 7964,
                        "name": "Edition",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7954,
                        "src": "3888:7:39"
                      },
                      "referencedDeclaration": 7954,
                      "src": "3888:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Edition_$7954_storage_ptr",
                        "typeString": "struct ArtistV4.Edition"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 7971,
                  "mutability": "mutable",
                  "name": "_tokenToEdition",
                  "nameLocation": "4015:15:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "3979:51:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 7970,
                    "keyType": {
                      "id": 7968,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3987:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3979:27:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 7969,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3998:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "e1a3d573",
                  "id": 7975,
                  "mutability": "mutable",
                  "name": "depositedForEdition",
                  "nameLocation": "4144:19:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "4109:54:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 7974,
                    "keyType": {
                      "id": 7972,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4117:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4109:27:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 7973,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4128:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d3bb0528",
                  "id": 7979,
                  "mutability": "mutable",
                  "name": "withdrawnForEdition",
                  "nameLocation": "4285:19:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "4250:54:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 7978,
                    "keyType": {
                      "id": 7976,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4258:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4250:27:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 7977,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4269:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 7984,
                  "mutability": "constant",
                  "name": "PERMISSIONED_SALE_TYPEHASH",
                  "nameLocation": "4407:26:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "4382:171:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7980,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4382:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "45646974696f6e496e666f286164647265737320636f6e7472616374416464726573732c61646472657373206275796572416464726573732c75696e743235362065646974696f6e49642c75696e74323536207469636b65744e756d62657229",
                        "id": 7982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4454:98:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        },
                        "value": "EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        }
                      ],
                      "id": 7981,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "4444:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 7983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4444:109:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 7986,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "4683:16:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "4657:42:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7985,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4657:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 7992,
                  "mutability": "mutable",
                  "name": "ticketNumbers",
                  "nameLocation": "4838:13:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 9043,
                  "src": "4790:61:39",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                  },
                  "typeName": {
                    "id": 7991,
                    "keyType": {
                      "id": 7987,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4798:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4790:47:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                    },
                    "valueType": {
                      "id": 7990,
                      "keyType": {
                        "id": 7988,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4817:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "4809:27:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      },
                      "valueType": {
                        "id": 7989,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4828:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3",
                  "id": 8012,
                  "name": "EditionCreated",
                  "nameLocation": "4959:14:39",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8011,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7994,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4999:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "4983:25:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7993,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4983:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7996,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "5026:16:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5018:24:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7995,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5018:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7998,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "5060:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5052:13:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7997,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5052:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8000,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "quantity",
                        "nameLocation": "5082:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5075:15:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7999,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5075:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8002,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "royaltyBPS",
                        "nameLocation": "5107:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5100:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8001,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5100:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8004,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "5134:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5127:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8003,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5127:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8006,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "5160:7:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5153:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8005,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5153:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8008,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5184:20:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5177:27:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8007,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5177:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8010,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5222:13:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8012,
                        "src": "5214:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8009,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5214:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4973:268:39"
                  },
                  "src": "4953:289:39"
                },
                {
                  "anonymous": false,
                  "eventSelector": "c3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251",
                  "id": 8024,
                  "name": "EditionPurchased",
                  "nameLocation": "5254:16:39",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8023,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8014,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5296:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8024,
                        "src": "5280:25:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8013,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5280:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8016,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5331:7:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8024,
                        "src": "5315:23:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8015,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5315:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8018,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "numSold",
                        "nameLocation": "5439:7:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8024,
                        "src": "5432:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8017,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5432:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8020,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nameLocation": "5531:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8024,
                        "src": "5515:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8019,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5515:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8022,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ticketNumber",
                        "nameLocation": "5554:12:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8024,
                        "src": "5546:20:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8021,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5546:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5270:302:39"
                  },
                  "src": "5248:325:39"
                },
                {
                  "anonymous": false,
                  "eventSelector": "494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c",
                  "id": 8033,
                  "name": "AuctionTimeSet",
                  "nameLocation": "5585:14:39",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8027,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timeType",
                        "nameLocation": "5609:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8033,
                        "src": "5600:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TimeType_$7935",
                          "typeString": "enum ArtistV4.TimeType"
                        },
                        "typeName": {
                          "id": 8026,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 8025,
                            "name": "TimeType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7935,
                            "src": "5600:8:39"
                          },
                          "referencedDeclaration": 7935,
                          "src": "5600:8:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TimeType_$7935",
                            "typeString": "enum ArtistV4.TimeType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8029,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5627:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8033,
                        "src": "5619:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8028,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5619:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8031,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newTime",
                        "nameLocation": "5653:7:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8033,
                        "src": "5638:22:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8030,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5638:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5599:62:39"
                  },
                  "src": "5579:83:39"
                },
                {
                  "anonymous": false,
                  "eventSelector": "73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a534",
                  "id": 8039,
                  "name": "SignerAddressSet",
                  "nameLocation": "5674:16:39",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8035,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5699:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8039,
                        "src": "5691:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8034,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5691:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8037,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5726:13:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8039,
                        "src": "5710:29:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5710:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5690:50:39"
                  },
                  "src": "5668:73:39"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae",
                  "id": 8045,
                  "name": "PermissionedQuantitySet",
                  "nameLocation": "5753:23:39",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8041,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5785:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8045,
                        "src": "5777:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8040,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5777:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8043,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5803:20:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8045,
                        "src": "5796:27:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8042,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5796:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5776:48:39"
                  },
                  "src": "5747:78:39"
                },
                {
                  "body": {
                    "id": 8062,
                    "nodeType": "Block",
                    "src": "6007:116:39",
                    "statements": [
                      {
                        "expression": {
                          "id": 8060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8049,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7986,
                            "src": "6017:16:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                        "id": 8054,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6067:31:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        },
                                        "value": "EIP712Domain(uint256 chainId)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        }
                                      ],
                                      "id": 8053,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "6057:9:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 8055,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6057:42:39",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 8056,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "6101:5:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 8057,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "6101:13:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8051,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "6046:3:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 8052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "6046:10:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 8058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6046:69:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 8050,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "6036:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 8059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6036:80:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6017:99:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 8061,
                        "nodeType": "ExpressionStatement",
                        "src": "6017:99:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8046,
                    "nodeType": "StructuredDocumentation",
                    "src": "5956:32:39",
                    "text": "@notice Contract constructor"
                  },
                  "id": 8063,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8047,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6004:2:39"
                  },
                  "returnParameters": {
                    "id": 8048,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6007:0:39"
                  },
                  "scope": 9043,
                  "src": "5993:130:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8110,
                    "nodeType": "Block",
                    "src": "6433:390:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8080,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8070,
                              "src": "6457:5:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 8081,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8072,
                              "src": "6464:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 8079,
                            "name": "__ERC721_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "6443:13:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 8082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6443:29:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8083,
                        "nodeType": "ExpressionStatement",
                        "src": "6443:29:39"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8084,
                            "name": "__Ownable_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "6482:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6482:16:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8086,
                        "nodeType": "ExpressionStatement",
                        "src": "6482:16:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8088,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8066,
                              "src": "6588:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8087,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 105,
                            "src": "6570:17:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6570:25:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8090,
                        "nodeType": "ExpressionStatement",
                        "src": "6570:25:39"
                      },
                      {
                        "expression": {
                          "id": 8103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8091,
                            "name": "baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7956,
                            "src": "6665:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 8096,
                                    "name": "_baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8074,
                                    "src": "6699:8:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "id": 8097,
                                        "name": "_artistId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8068,
                                        "src": "6709:9:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 8098,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13591,
                                      "src": "6709:18:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 8099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6709:20:39",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 8100,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6731:3:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 8094,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "6682:3:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 8095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "6682:16:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 8101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6682:53:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 8093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6675:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 8092,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "6675:6:39",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6675:61:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "6665:71:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 8104,
                        "nodeType": "ExpressionStatement",
                        "src": "6665:71:39"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 8105,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "6793:11:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 8107,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "6793:21:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 8108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6793:23:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8109,
                        "nodeType": "ExpressionStatement",
                        "src": "6793:23:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8064,
                    "nodeType": "StructuredDocumentation",
                    "src": "6129:111:39",
                    "text": "@notice Initializes the contract\n @param _owner Owner of edition\n @param _name Name of artist"
                  },
                  "functionSelector": "abfc83a0",
                  "id": 8111,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8077,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8076,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "6421:11:39"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6421:11:39"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "6254:10:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8066,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "6282:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8111,
                        "src": "6274:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8065,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6274:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8068,
                        "mutability": "mutable",
                        "name": "_artistId",
                        "nameLocation": "6306:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8111,
                        "src": "6298:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6298:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8070,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "6339:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8111,
                        "src": "6325:19:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8069,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6325:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8072,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "6368:7:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8111,
                        "src": "6354:21:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8071,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6354:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8074,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "6399:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8111,
                        "src": "6385:22:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8073,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6385:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6264:149:39"
                  },
                  "returnParameters": {
                    "id": 8078,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6433:0:39"
                  },
                  "scope": 9043,
                  "src": "6245:578:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8209,
                    "nodeType": "Block",
                    "src": "7744:1073:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 8136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8134,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8118,
                                "src": "7762:9:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7774:1:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7762:13:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d75737420736574207175616e74697479",
                              "id": 8137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7777:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              },
                              "value": "Must set quantity"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              }
                            ],
                            "id": 8133,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7754:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7754:43:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8139,
                        "nodeType": "ExpressionStatement",
                        "src": "7754:43:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8141,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8114,
                                "src": "7815:17:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 8144,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7844:1:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 8143,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7836:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8142,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7836:7:39",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7836:10:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7815:31:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                              "id": 8147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7848:27:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              },
                              "value": "Must set fundingRecipient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              }
                            ],
                            "id": 8140,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7807:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7807:69:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8149,
                        "nodeType": "ExpressionStatement",
                        "src": "7807:69:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 8153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8151,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8124,
                                "src": "7894:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 8152,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8122,
                                "src": "7905:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "7894:21:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e2073746172742074696d65",
                              "id": 8154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7917:42:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              },
                              "value": "End time must be greater than start time"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              }
                            ],
                            "id": 8150,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7886:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7886:74:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8156,
                        "nodeType": "ExpressionStatement",
                        "src": "7886:74:39"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 8159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8157,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8126,
                            "src": "7975:21:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7999:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7975:25:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8171,
                        "nodeType": "IfStatement",
                        "src": "7971:123:39",
                        "trueBody": {
                          "id": 8170,
                          "nodeType": "Block",
                          "src": "8002:92:39",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 8166,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8161,
                                      "name": "_signerAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8128,
                                      "src": "8024:14:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 8164,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8050:1:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 8163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8042:7:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 8162,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8042:7:39",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 8165,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8042:10:39",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8024:28:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "id": 8167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8054:28:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    },
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    }
                                  ],
                                  "id": 8160,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8016:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8016:67:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8169,
                              "nodeType": "ExpressionStatement",
                              "src": "8016:67:39"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 8188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 8172,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7967,
                              "src": "8104:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                              }
                            },
                            "id": 8176,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 8173,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7962,
                                  "src": "8113:11:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 8174,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8113:19:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 8175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8113:21:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8104:31:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_storage",
                              "typeString": "struct ArtistV4.Edition storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8178,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8114,
                                "src": "8178:17:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 8179,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8116,
                                "src": "8216:6:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 8180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8245:1:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 8181,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8118,
                                "src": "8270:9:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 8182,
                                "name": "_royaltyBPS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8120,
                                "src": "8305:11:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 8183,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8122,
                                "src": "8341:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 8184,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8124,
                                "src": "8374:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 8185,
                                "name": "_permissionedQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8126,
                                "src": "8418:21:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 8186,
                                "name": "_signerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8128,
                                "src": "8468:14:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 8177,
                              "name": "Edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7954,
                              "src": "8138:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Edition_$7954_storage_ptr_$",
                                "typeString": "type(struct ArtistV4.Edition storage pointer)"
                              }
                            },
                            "id": 8187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "fundingRecipient",
                              "price",
                              "numSold",
                              "quantity",
                              "royaltyBPS",
                              "startTime",
                              "endTime",
                              "permissionedQuantity",
                              "signerAddress"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "8138:355:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_memory_ptr",
                              "typeString": "struct ArtistV4.Edition memory"
                            }
                          },
                          "src": "8104:389:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$7954_storage",
                            "typeString": "struct ArtistV4.Edition storage ref"
                          }
                        },
                        "id": 8189,
                        "nodeType": "ExpressionStatement",
                        "src": "8104:389:39"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 8191,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7962,
                                  "src": "8537:11:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 8192,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8537:19:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 8193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8537:21:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8194,
                              "name": "_fundingRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8114,
                              "src": "8572:17:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 8195,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8116,
                              "src": "8603:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8196,
                              "name": "_quantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8118,
                              "src": "8623:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 8197,
                              "name": "_royaltyBPS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8120,
                              "src": "8646:11:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 8198,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8122,
                              "src": "8671:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 8199,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8124,
                              "src": "8695:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 8200,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8126,
                              "src": "8717:21:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 8201,
                              "name": "_signerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8128,
                              "src": "8752:14:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8190,
                            "name": "EditionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8012,
                            "src": "8509:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint32,uint32,uint32,uint32,uint32,address)"
                            }
                          },
                          "id": 8202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8509:267:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8203,
                        "nodeType": "EmitStatement",
                        "src": "8504:272:39"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 8204,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7962,
                              "src": "8787:11:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 8206,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "8787:21:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 8207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8787:23:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8208,
                        "nodeType": "ExpressionStatement",
                        "src": "8787:23:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8112,
                    "nodeType": "StructuredDocumentation",
                    "src": "6829:619:39",
                    "text": "@notice Creates a new edition.\n @param _fundingRecipient The account that will receive sales revenue.\n @param _price The price at which each token will be sold, in ETH.\n @param _quantity The maximum number of tokens that can be sold.\n @param _royaltyBPS The royalty amount in bps.\n @param _startTime The start time of the auction, in seconds since unix epoch.\n @param _endTime The end time of the auction, in seconds since unix epoch.\n @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n @param _signerAddress signer address."
                  },
                  "functionSelector": "73aaf879",
                  "id": 8210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8131,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8130,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "7734:9:39"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7734:9:39"
                    }
                  ],
                  "name": "createEdition",
                  "nameLocation": "7462:13:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8114,
                        "mutability": "mutable",
                        "name": "_fundingRecipient",
                        "nameLocation": "7501:17:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7485:33:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 8113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7485:15:39",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8116,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "7536:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7528:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7528:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8118,
                        "mutability": "mutable",
                        "name": "_quantity",
                        "nameLocation": "7559:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7552:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8117,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7552:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8120,
                        "mutability": "mutable",
                        "name": "_royaltyBPS",
                        "nameLocation": "7585:11:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7578:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8119,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7578:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8122,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "7613:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7606:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8121,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7606:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8124,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "7640:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7633:15:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8123,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7633:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8126,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "7665:21:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7658:28:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8125,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7658:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8128,
                        "mutability": "mutable",
                        "name": "_signerAddress",
                        "nameLocation": "7704:14:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "7696:22:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8127,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7696:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7475:249:39"
                  },
                  "returnParameters": {
                    "id": 8132,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7744:0:39"
                  },
                  "scope": 9043,
                  "src": "7453:1364:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8387,
                    "nodeType": "Block",
                    "src": "9290:2682:39",
                    "statements": [
                      {
                        "assignments": [
                          8221
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8221,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "9361:5:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "9353:13:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8220,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9353:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8226,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 8222,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7967,
                              "src": "9369:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                              }
                            },
                            "id": 8224,
                            "indexExpression": {
                              "id": 8223,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "9378:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9369:20:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_storage",
                              "typeString": "struct ArtistV4.Edition storage ref"
                            }
                          },
                          "id": 8225,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7939,
                          "src": "9369:26:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9353:42:39"
                      },
                      {
                        "assignments": [
                          8228
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8228,
                            "mutability": "mutable",
                            "name": "quantity",
                            "nameLocation": "9412:8:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "9405:15:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 8227,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9405:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8233,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 8229,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7967,
                              "src": "9423:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                              }
                            },
                            "id": 8231,
                            "indexExpression": {
                              "id": 8230,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "9432:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9423:20:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_storage",
                              "typeString": "struct ArtistV4.Edition storage ref"
                            }
                          },
                          "id": 8232,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7943,
                          "src": "9423:29:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9405:47:39"
                      },
                      {
                        "assignments": [
                          8235
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8235,
                            "mutability": "mutable",
                            "name": "numSold",
                            "nameLocation": "9469:7:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "9462:14:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 8234,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9462:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8240,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 8236,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7967,
                              "src": "9479:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                              }
                            },
                            "id": 8238,
                            "indexExpression": {
                              "id": 8237,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "9488:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9479:20:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_storage",
                              "typeString": "struct ArtistV4.Edition storage ref"
                            }
                          },
                          "id": 8239,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numSold",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7941,
                          "src": "9479:28:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9462:45:39"
                      },
                      {
                        "assignments": [
                          8242
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8242,
                            "mutability": "mutable",
                            "name": "newNumSold",
                            "nameLocation": "9524:10:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "9517:17:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 8241,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9517:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8246,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 8245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8243,
                            "name": "numSold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8235,
                            "src": "9537:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 8244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9547:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9537:11:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9517:31:39"
                      },
                      {
                        "assignments": [
                          8248
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8248,
                            "mutability": "mutable",
                            "name": "startTime",
                            "nameLocation": "9565:9:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "9558:16:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 8247,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9558:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8253,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 8249,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7967,
                              "src": "9577:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                              }
                            },
                            "id": 8251,
                            "indexExpression": {
                              "id": 8250,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "9586:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9577:20:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_storage",
                              "typeString": "struct ArtistV4.Edition storage ref"
                            }
                          },
                          "id": 8252,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7947,
                          "src": "9577:30:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9558:49:39"
                      },
                      {
                        "assignments": [
                          8255
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8255,
                            "mutability": "mutable",
                            "name": "endTime",
                            "nameLocation": "9624:7:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "9617:14:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 8254,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9617:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8260,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 8256,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7967,
                              "src": "9634:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                              }
                            },
                            "id": 8258,
                            "indexExpression": {
                              "id": 8257,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "9643:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9634:20:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_storage",
                              "typeString": "struct ArtistV4.Edition storage ref"
                            }
                          },
                          "id": 8259,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7949,
                          "src": "9634:28:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9617:45:39"
                      },
                      {
                        "assignments": [
                          8262
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8262,
                            "mutability": "mutable",
                            "name": "permissionedQuantity",
                            "nameLocation": "9679:20:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "9672:27:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 8261,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9672:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8267,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 8263,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7967,
                              "src": "9702:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                              }
                            },
                            "id": 8265,
                            "indexExpression": {
                              "id": 8264,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "9711:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9702:20:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_storage",
                              "typeString": "struct ArtistV4.Edition storage ref"
                            }
                          },
                          "id": 8266,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permissionedQuantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7951,
                          "src": "9702:41:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9672:71:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 8271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8269,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8228,
                                "src": "9906:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9917:1:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9906:12:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                              "id": 8272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9920:24:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              },
                              "value": "Edition does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              }
                            ],
                            "id": 8268,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9898:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9898:47:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8274,
                        "nodeType": "ExpressionStatement",
                        "src": "9898:47:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 8276,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "10026:3:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 8277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "10026:9:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 8278,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8221,
                                "src": "10039:5:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10026:18:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d7573742073656e6420656e6f75676820746f207075726368617365207468652065646974696f6e2e",
                              "id": 8280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10046:43:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              },
                              "value": "Must send enough to purchase the edition."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              }
                            ],
                            "id": 8275,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10018:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10018:72:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8282,
                        "nodeType": "ExpressionStatement",
                        "src": "10018:72:39"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8283,
                            "name": "startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8248,
                            "src": "10156:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 8284,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "10168:5:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 8285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "10168:15:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10156:27:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8316,
                          "nodeType": "Block",
                          "src": "10608:293:39",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 8312,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8310,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8235,
                                      "src": "10834:7:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 8311,
                                      "name": "quantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8228,
                                      "src": "10844:8:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "10834:18:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f75742e",
                                    "id": 8313,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10854:35:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    },
                                    "value": "This edition is already sold out."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    }
                                  ],
                                  "id": 8309,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10826:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10826:64:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8315,
                              "nodeType": "ExpressionStatement",
                              "src": "10826:64:39"
                            }
                          ]
                        },
                        "id": 8317,
                        "nodeType": "IfStatement",
                        "src": "10152:749:39",
                        "trueBody": {
                          "id": 8308,
                          "nodeType": "Block",
                          "src": "10185:417:39",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 8290,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8288,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8235,
                                      "src": "10273:7:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 8289,
                                      "name": "permissionedQuantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8262,
                                      "src": "10283:20:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "10273:30:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c652026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "id": 8291,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10305:61:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    },
                                    "value": "No permissioned tokens available & open auction not started"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    }
                                  ],
                                  "id": 8287,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10265:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8292,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10265:102:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8293,
                              "nodeType": "ExpressionStatement",
                              "src": "10265:102:39"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 8304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 8296,
                                          "name": "_signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8215,
                                          "src": "10467:10:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "id": 8297,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8213,
                                          "src": "10479:10:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 8298,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8217,
                                          "src": "10491:13:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 8295,
                                        "name": "getSigner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8974,
                                        "src": "10457:9:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                                          "typeString": "function (bytes calldata,uint256,uint256) returns (address)"
                                        }
                                      },
                                      "id": 8299,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10457:48:39",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 8300,
                                          "name": "editions",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7967,
                                          "src": "10509:8:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                            "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                          }
                                        },
                                        "id": 8302,
                                        "indexExpression": {
                                          "id": 8301,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8213,
                                          "src": "10518:10:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10509:20:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                          "typeString": "struct ArtistV4.Edition storage ref"
                                        }
                                      },
                                      "id": 8303,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signerAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7953,
                                      "src": "10509:34:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "10457:86:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "id": 8305,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10561:16:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    },
                                    "value": "Invalid signer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    }
                                  ],
                                  "id": 8294,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10432:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10432:159:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8307,
                              "nodeType": "ExpressionStatement",
                              "src": "10432:159:39"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8319,
                                "name": "endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8255,
                                "src": "10971:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 8320,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "10981:5:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 8321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "10981:15:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10971:25:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e2068617320656e646564",
                              "id": 8323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10998:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              },
                              "value": "Auction has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              }
                            ],
                            "id": 8318,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10963:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10963:55:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8325,
                        "nodeType": "ExpressionStatement",
                        "src": "10963:55:39"
                      },
                      {
                        "assignments": [
                          8327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8327,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "11105:7:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8387,
                            "src": "11097:15:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8326,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11097:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8328,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11097:15:39"
                      },
                      {
                        "id": 8345,
                        "nodeType": "UncheckedBlock",
                        "src": "11122:201:39",
                        "statements": [
                          {
                            "expression": {
                              "id": 8336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 8329,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8327,
                                "src": "11146:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8335,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8332,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8330,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8213,
                                        "src": "11157:10:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313238",
                                        "id": 8331,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11171:3:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_128_by_1",
                                          "typeString": "int_const 128"
                                        },
                                        "value": "128"
                                      },
                                      "src": "11157:17:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8333,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "11156:19:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 8334,
                                  "name": "newNumSold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8242,
                                  "src": "11178:10:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "11156:32:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11146:42:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8337,
                            "nodeType": "ExpressionStatement",
                            "src": "11146:42:39"
                          },
                          {
                            "expression": {
                              "id": 8343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 8338,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7967,
                                    "src": "11271:8:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                    }
                                  },
                                  "id": 8340,
                                  "indexExpression": {
                                    "id": 8339,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8213,
                                    "src": "11280:10:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11271:20:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                    "typeString": "struct ArtistV4.Edition storage ref"
                                  }
                                },
                                "id": 8341,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "numSold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7941,
                                "src": "11271:28:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 8342,
                                "name": "newNumSold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8242,
                                "src": "11302:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "11271:41:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 8344,
                            "nodeType": "ExpressionStatement",
                            "src": "11271:41:39"
                          }
                        ]
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 8346,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7967,
                                "src": "11452:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                }
                              },
                              "id": 8348,
                              "indexExpression": {
                                "id": 8347,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8213,
                                "src": "11461:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11452:20:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                "typeString": "struct ArtistV4.Edition storage ref"
                              }
                            },
                            "id": 8349,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7937,
                            "src": "11452:37:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 8350,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 54,
                              "src": "11493:5:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 8351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11493:7:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11452:48:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8370,
                          "nodeType": "Block",
                          "src": "11635:137:39",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 8362,
                                        "name": "editions",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7967,
                                        "src": "11712:8:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                          "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                        }
                                      },
                                      "id": 8364,
                                      "indexExpression": {
                                        "id": 8363,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8213,
                                        "src": "11721:10:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "11712:20:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                        "typeString": "struct ArtistV4.Edition storage ref"
                                      }
                                    },
                                    "id": 8365,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7937,
                                    "src": "11712:37:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 8366,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11751:3:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 8367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "src": "11751:9:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8361,
                                  "name": "_sendFunds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8887,
                                  "src": "11701:10:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 8368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11701:60:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8369,
                              "nodeType": "ExpressionStatement",
                              "src": "11701:60:39"
                            }
                          ]
                        },
                        "id": 8371,
                        "nodeType": "IfStatement",
                        "src": "11448:324:39",
                        "trueBody": {
                          "id": 8360,
                          "nodeType": "Block",
                          "src": "11502:127:39",
                          "statements": [
                            {
                              "expression": {
                                "id": 8358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 8353,
                                    "name": "depositedForEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7975,
                                    "src": "11574:19:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 8355,
                                  "indexExpression": {
                                    "id": 8354,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8213,
                                    "src": "11594:10:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11574:31:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 8356,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "11609:3:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "11609:9:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11574:44:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8359,
                              "nodeType": "ExpressionStatement",
                              "src": "11574:44:39"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8373,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11853:3:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "11853:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8375,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8327,
                              "src": "11865:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8372,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "11847:5:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 8376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11847:26:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8377,
                        "nodeType": "ExpressionStatement",
                        "src": "11847:26:39"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 8379,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "11906:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8380,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8327,
                              "src": "11918:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8381,
                              "name": "newNumSold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8242,
                              "src": "11927:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 8382,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11939:3:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "11939:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8384,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8217,
                              "src": "11951:13:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8378,
                            "name": "EditionPurchased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8024,
                            "src": "11889:16:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint32,address,uint256)"
                            }
                          },
                          "id": 8385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11889:76:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8386,
                        "nodeType": "EmitStatement",
                        "src": "11884:81:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8211,
                    "nodeType": "StructuredDocumentation",
                    "src": "8823:325:39",
                    "text": "@notice Creates a new token for the given edition, and assigns it to the buyer\n @param _editionId The id of the edition to purchase\n @param _signature A signed message for authorizing permissioned purchases\n @param _ticketNumber Ticket number required for validating this buyer hasn't already bought."
                  },
                  "functionSelector": "f71e54fb",
                  "id": 8388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "buyEdition",
                  "nameLocation": "9162:10:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8218,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8213,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "9190:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8388,
                        "src": "9182:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9182:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8215,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "9225:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8388,
                        "src": "9210:25:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8214,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9210:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8217,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "9253:13:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8388,
                        "src": "9245:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8216,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9245:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9172:100:39"
                  },
                  "returnParameters": {
                    "id": 8219,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9290:0:39"
                  },
                  "scope": 9043,
                  "src": "9153:2819:39",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8419,
                    "nodeType": "Block",
                    "src": "12030:494:39",
                    "statements": [
                      {
                        "assignments": [
                          8394
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8394,
                            "mutability": "mutable",
                            "name": "remainingForEdition",
                            "nameLocation": "12123:19:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8419,
                            "src": "12115:27:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8393,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12115:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8402,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 8395,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7975,
                              "src": "12145:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 8397,
                            "indexExpression": {
                              "id": 8396,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8390,
                              "src": "12165:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12145:31:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 8398,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7979,
                              "src": "12179:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 8400,
                            "indexExpression": {
                              "id": 8399,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8390,
                              "src": "12199:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12179:31:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12145:65:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12115:95:39"
                      },
                      {
                        "expression": {
                          "id": 8409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 8403,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7979,
                              "src": "12282:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 8405,
                            "indexExpression": {
                              "id": 8404,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8390,
                              "src": "12302:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12282:31:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 8406,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7975,
                              "src": "12316:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 8408,
                            "indexExpression": {
                              "id": 8407,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8390,
                              "src": "12336:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12316:31:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12282:65:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8410,
                        "nodeType": "ExpressionStatement",
                        "src": "12282:65:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 8412,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7967,
                                  "src": "12458:8:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                  }
                                },
                                "id": 8414,
                                "indexExpression": {
                                  "id": 8413,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8390,
                                  "src": "12467:10:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12458:20:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                  "typeString": "struct ArtistV4.Edition storage ref"
                                }
                              },
                              "id": 8415,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7937,
                              "src": "12458:37:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 8416,
                              "name": "remainingForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8394,
                              "src": "12497:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8411,
                            "name": "_sendFunds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8887,
                            "src": "12447:10:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 8417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12447:70:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8418,
                        "nodeType": "ExpressionStatement",
                        "src": "12447:70:39"
                      }
                    ]
                  },
                  "functionSelector": "155dd5ee",
                  "id": 8420,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFunds",
                  "nameLocation": "11987:13:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8390,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12009:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8420,
                        "src": "12001:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12001:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12000:20:39"
                  },
                  "returnParameters": {
                    "id": 8392,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12030:0:39"
                  },
                  "scope": 9043,
                  "src": "11978:546:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8444,
                    "nodeType": "Block",
                    "src": "12661:129:39",
                    "statements": [
                      {
                        "expression": {
                          "id": 8435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 8430,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7967,
                                "src": "12671:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                }
                              },
                              "id": 8432,
                              "indexExpression": {
                                "id": 8431,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8423,
                                "src": "12680:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12671:20:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                "typeString": "struct ArtistV4.Edition storage ref"
                              }
                            },
                            "id": 8433,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7947,
                            "src": "12671:30:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8434,
                            "name": "_startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8425,
                            "src": "12704:10:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "12671:43:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 8436,
                        "nodeType": "ExpressionStatement",
                        "src": "12671:43:39"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8438,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7935,
                                "src": "12744:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$7935_$",
                                  "typeString": "type(enum ArtistV4.TimeType)"
                                }
                              },
                              "id": 8439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "START",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7933,
                              "src": "12744:14:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$7935",
                                "typeString": "enum ArtistV4.TimeType"
                              }
                            },
                            {
                              "id": 8440,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8423,
                              "src": "12760:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8441,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8425,
                              "src": "12772:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$7935",
                                "typeString": "enum ArtistV4.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 8437,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8033,
                            "src": "12729:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$7935_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV4.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 8442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12729:54:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8443,
                        "nodeType": "EmitStatement",
                        "src": "12724:59:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8421,
                    "nodeType": "StructuredDocumentation",
                    "src": "12530:46:39",
                    "text": "@notice Sets the start time for an edition"
                  },
                  "functionSelector": "fbab9e04",
                  "id": 8445,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8428,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8427,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "12651:9:39"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12651:9:39"
                    }
                  ],
                  "name": "setStartTime",
                  "nameLocation": "12590:12:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8423,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12611:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8445,
                        "src": "12603:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12603:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8425,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "12630:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8445,
                        "src": "12623:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8424,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12623:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12602:39:39"
                  },
                  "returnParameters": {
                    "id": 8429,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12661:0:39"
                  },
                  "scope": 9043,
                  "src": "12581:209:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8469,
                    "nodeType": "Block",
                    "src": "12921:121:39",
                    "statements": [
                      {
                        "expression": {
                          "id": 8460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 8455,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7967,
                                "src": "12931:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                }
                              },
                              "id": 8457,
                              "indexExpression": {
                                "id": 8456,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8448,
                                "src": "12940:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12931:20:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                "typeString": "struct ArtistV4.Edition storage ref"
                              }
                            },
                            "id": 8458,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7949,
                            "src": "12931:28:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8459,
                            "name": "_endTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8450,
                            "src": "12962:8:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "12931:39:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 8461,
                        "nodeType": "ExpressionStatement",
                        "src": "12931:39:39"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8463,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7935,
                                "src": "13000:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$7935_$",
                                  "typeString": "type(enum ArtistV4.TimeType)"
                                }
                              },
                              "id": 8464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "END",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7934,
                              "src": "13000:12:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$7935",
                                "typeString": "enum ArtistV4.TimeType"
                              }
                            },
                            {
                              "id": 8465,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8448,
                              "src": "13014:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8466,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8450,
                              "src": "13026:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$7935",
                                "typeString": "enum ArtistV4.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 8462,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8033,
                            "src": "12985:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$7935_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV4.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 8467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12985:50:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8468,
                        "nodeType": "EmitStatement",
                        "src": "12980:55:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8446,
                    "nodeType": "StructuredDocumentation",
                    "src": "12796:44:39",
                    "text": "@notice Sets the end time for an edition"
                  },
                  "functionSelector": "bb314ca1",
                  "id": 8470,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8453,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8452,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "12911:9:39"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12911:9:39"
                    }
                  ],
                  "name": "setEndTime",
                  "nameLocation": "12854:10:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8448,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12873:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8470,
                        "src": "12865:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8447,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12865:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8450,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "12892:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8470,
                        "src": "12885:15:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8449,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12885:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12864:37:39"
                  },
                  "returnParameters": {
                    "id": 8454,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12921:0:39"
                  },
                  "scope": 9043,
                  "src": "12845:197:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8502,
                    "nodeType": "Block",
                    "src": "13197:214:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8481,
                                "name": "_newSignerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8475,
                                "src": "13215:17:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 8484,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13244:1:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 8483,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13236:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8482,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13236:7:39",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13236:10:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13215:31:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                              "id": 8487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13248:28:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              },
                              "value": "Signer address cannot be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              }
                            ],
                            "id": 8480,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13207:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13207:70:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8489,
                        "nodeType": "ExpressionStatement",
                        "src": "13207:70:39"
                      },
                      {
                        "expression": {
                          "id": 8495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 8490,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7967,
                                "src": "13288:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                }
                              },
                              "id": 8492,
                              "indexExpression": {
                                "id": 8491,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8473,
                                "src": "13297:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13288:20:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                "typeString": "struct ArtistV4.Edition storage ref"
                              }
                            },
                            "id": 8493,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signerAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7953,
                            "src": "13288:34:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8494,
                            "name": "_newSignerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8475,
                            "src": "13325:17:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13288:54:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8496,
                        "nodeType": "ExpressionStatement",
                        "src": "13288:54:39"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 8498,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8473,
                              "src": "13374:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8499,
                              "name": "_newSignerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8475,
                              "src": "13386:17:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8497,
                            "name": "SignerAddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8039,
                            "src": "13357:16:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address)"
                            }
                          },
                          "id": 8500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13357:47:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8501,
                        "nodeType": "EmitStatement",
                        "src": "13352:52:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8471,
                    "nodeType": "StructuredDocumentation",
                    "src": "13048:52:39",
                    "text": "@notice Sets the signature address of an edition"
                  },
                  "functionSelector": "56dee996",
                  "id": 8503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8478,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8477,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "13187:9:39"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13187:9:39"
                    }
                  ],
                  "name": "setSignerAddress",
                  "nameLocation": "13114:16:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8473,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13139:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8503,
                        "src": "13131:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8472,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13131:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8475,
                        "mutability": "mutable",
                        "name": "_newSignerAddress",
                        "nameLocation": "13159:17:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8503,
                        "src": "13151:25:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13151:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13130:47:39"
                  },
                  "returnParameters": {
                    "id": 8479,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13197:0:39"
                  },
                  "scope": 9043,
                  "src": "13105:306:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8538,
                    "nodeType": "Block",
                    "src": "13581:337:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 8514,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7967,
                                    "src": "13683:8:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                    }
                                  },
                                  "id": 8516,
                                  "indexExpression": {
                                    "id": 8515,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8506,
                                    "src": "13692:10:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13683:20:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                    "typeString": "struct ArtistV4.Edition storage ref"
                                  }
                                },
                                "id": 8517,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signerAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7953,
                                "src": "13683:34:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 8520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13729:1:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 8519,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13721:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8518,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13721:7:39",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13721:10:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13683:48:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                              "id": 8523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13733:28:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              },
                              "value": "Edition must have a signer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              }
                            ],
                            "id": 8513,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13675:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13675:87:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8525,
                        "nodeType": "ExpressionStatement",
                        "src": "13675:87:39"
                      },
                      {
                        "expression": {
                          "id": 8531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 8526,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7967,
                                "src": "13773:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                }
                              },
                              "id": 8528,
                              "indexExpression": {
                                "id": 8527,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8506,
                                "src": "13782:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13773:20:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                "typeString": "struct ArtistV4.Edition storage ref"
                              }
                            },
                            "id": 8529,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "permissionedQuantity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7951,
                            "src": "13773:41:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8530,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8508,
                            "src": "13817:21:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13773:65:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 8532,
                        "nodeType": "ExpressionStatement",
                        "src": "13773:65:39"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 8534,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8506,
                              "src": "13877:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8535,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8508,
                              "src": "13889:21:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 8533,
                            "name": "PermissionedQuantitySet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8045,
                            "src": "13853:23:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint32)"
                            }
                          },
                          "id": 8536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13853:58:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8537,
                        "nodeType": "EmitStatement",
                        "src": "13848:63:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8504,
                    "nodeType": "StructuredDocumentation",
                    "src": "13417:57:39",
                    "text": "@notice Sets the permissioned quantity for an edition"
                  },
                  "functionSelector": "52e25bf2",
                  "id": 8539,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8511,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8510,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "13571:9:39"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13571:9:39"
                    }
                  ],
                  "name": "setPermissionedQuantity",
                  "nameLocation": "13488:23:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8506,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13520:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8539,
                        "src": "13512:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8505,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13512:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8508,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "13539:21:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8539,
                        "src": "13532:28:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8507,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13532:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13511:50:39"
                  },
                  "returnParameters": {
                    "id": 8512,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13581:0:39"
                  },
                  "scope": 9043,
                  "src": "13479:439:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1051
                  ],
                  "body": {
                    "id": 8576,
                    "nodeType": "Block",
                    "src": "14303:248:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8550,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8542,
                                  "src": "14329:8:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8549,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "14321:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 8551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14321:17:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 8552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14340:49:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 8548,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14313:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14313:77:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8554,
                        "nodeType": "ExpressionStatement",
                        "src": "14313:77:39"
                      },
                      {
                        "assignments": [
                          8556
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8556,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "14409:9:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8576,
                            "src": "14401:17:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8555,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14401:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8560,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8558,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8542,
                              "src": "14436:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8557,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8749,
                            "src": "14421:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 8559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14421:24:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14401:44:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8565,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7956,
                                  "src": "14487:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 8566,
                                      "name": "editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8556,
                                      "src": "14496:9:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8567,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13591,
                                    "src": "14496:18:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 8568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14496:20:39",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2f",
                                  "id": 8569,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14518:3:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  "value": "/"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 8570,
                                      "name": "_tokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8542,
                                      "src": "14523:8:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8571,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13591,
                                    "src": "14523:17:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 8572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14523:19:39",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                    "typeString": "literal_string \"/\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 8563,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14470:3:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "14470:16:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14470:73:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 8562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14463:6:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 8561,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "14463:6:39",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14463:81:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 8547,
                        "id": 8575,
                        "nodeType": "Return",
                        "src": "14456:88:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8540,
                    "nodeType": "StructuredDocumentation",
                    "src": "14027:190:39",
                    "text": "@notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[artistId]/[editionId]/[tokenId]\n @dev Concatenate the baseURI, editionId and tokenId, to create URI."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 8577,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "14231:8:39",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8544,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14270:8:39"
                  },
                  "parameters": {
                    "id": 8543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8542,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "14248:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8577,
                        "src": "14240:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14240:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14239:18:39"
                  },
                  "returnParameters": {
                    "id": 8547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8546,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8577,
                        "src": "14288:13:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8545,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14288:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14287:15:39"
                  },
                  "scope": 9043,
                  "src": "14222:329:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8592,
                    "nodeType": "Block",
                    "src": "14728:71:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8587,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7956,
                                  "src": "14769:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "hexValue": "73746f726566726f6e74",
                                  "id": 8588,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14778:12:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  },
                                  "value": "storefront"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                    "typeString": "literal_string \"storefront\""
                                  }
                                ],
                                "expression": {
                                  "id": 8585,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14752:3:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "14752:16:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14752:39:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 8584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14745:6:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 8583,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "14745:6:39",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14745:47:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 8582,
                        "id": 8591,
                        "nodeType": "Return",
                        "src": "14738:54:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8578,
                    "nodeType": "StructuredDocumentation",
                    "src": "14557:107:39",
                    "text": "@notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[artistId]/storefront"
                  },
                  "functionSelector": "e8a3d485",
                  "id": 8593,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "14678:11:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8579,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14689:2:39"
                  },
                  "returnParameters": {
                    "id": 8582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8581,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8593,
                        "src": "14713:13:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8580,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14713:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14712:15:39"
                  },
                  "scope": 9043,
                  "src": "14669:130:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    149
                  ],
                  "body": {
                    "id": 8651,
                    "nodeType": "Block",
                    "src": "15115:371:39",
                    "statements": [
                      {
                        "assignments": [
                          8607
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8607,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "15133:9:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8651,
                            "src": "15125:17:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8606,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15125:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8611,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8609,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8596,
                              "src": "15160:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8608,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8749,
                            "src": "15145:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 8610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15145:24:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15125:44:39"
                      },
                      {
                        "assignments": [
                          8614
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8614,
                            "mutability": "mutable",
                            "name": "edition",
                            "nameLocation": "15194:7:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8651,
                            "src": "15179:22:39",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$7954_memory_ptr",
                              "typeString": "struct ArtistV4.Edition"
                            },
                            "typeName": {
                              "id": 8613,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 8612,
                                "name": "Edition",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 7954,
                                "src": "15179:7:39"
                              },
                              "referencedDeclaration": 7954,
                              "src": "15179:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$7954_storage_ptr",
                                "typeString": "struct ArtistV4.Edition"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8618,
                        "initialValue": {
                          "baseExpression": {
                            "id": 8615,
                            "name": "editions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7967,
                            "src": "15204:8:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                              "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                            }
                          },
                          "id": 8617,
                          "indexExpression": {
                            "id": 8616,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8607,
                            "src": "15213:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15204:19:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$7954_storage",
                            "typeString": "struct ArtistV4.Edition storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15179:44:39"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 8619,
                              "name": "edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8614,
                              "src": "15238:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$7954_memory_ptr",
                                "typeString": "struct ArtistV4.Edition memory"
                              }
                            },
                            "id": 8620,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7937,
                            "src": "15238:24:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 8623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15274:3:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 8622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15266:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8621,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15266:7:39",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15266:12:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "15238:40:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8632,
                        "nodeType": "IfStatement",
                        "src": "15234:107:39",
                        "trueBody": {
                          "id": 8631,
                          "nodeType": "Block",
                          "src": "15280:61:39",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "expression": {
                                      "id": 8626,
                                      "name": "edition",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8614,
                                      "src": "15302:7:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$7954_memory_ptr",
                                        "typeString": "struct ArtistV4.Edition memory"
                                      }
                                    },
                                    "id": 8627,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7937,
                                    "src": "15302:24:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 8628,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15328:1:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 8629,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "15301:29:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(address payable,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 8605,
                              "id": 8630,
                              "nodeType": "Return",
                              "src": "15294:36:39"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8634
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8634,
                            "mutability": "mutable",
                            "name": "royaltyBPS",
                            "nameLocation": "15359:10:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8651,
                            "src": "15351:18:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8633,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15351:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8640,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8637,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8614,
                                "src": "15380:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$7954_memory_ptr",
                                  "typeString": "struct ArtistV4.Edition memory"
                                }
                              },
                              "id": 8638,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "royaltyBPS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7945,
                              "src": "15380:18:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 8636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15372:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 8635,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15372:7:39",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15372:27:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15351:48:39"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 8641,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8614,
                                "src": "15418:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$7954_memory_ptr",
                                  "typeString": "struct ArtistV4.Edition memory"
                                }
                              },
                              "id": 8642,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7937,
                              "src": "15418:24:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8645,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8643,
                                      "name": "_salePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8598,
                                      "src": "15445:10:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 8644,
                                      "name": "royaltyBPS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8634,
                                      "src": "15458:10:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "15445:23:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 8646,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "15444:25:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "31305f303030",
                                "id": 8647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15472:6:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10_000"
                              },
                              "src": "15444:34:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8649,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "15417:62:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "functionReturnParameters": 8605,
                        "id": 8650,
                        "nodeType": "Return",
                        "src": "15410:69:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8594,
                    "nodeType": "StructuredDocumentation",
                    "src": "14805:129:39",
                    "text": "@notice Get royalty information for token\n @param _tokenId token id\n @param _salePrice Sale price for the token"
                  },
                  "functionSelector": "2a55205a",
                  "id": 8652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "14948:11:39",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8600,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15036:8:39"
                  },
                  "parameters": {
                    "id": 8599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8596,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "14968:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8652,
                        "src": "14960:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14960:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8598,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "14986:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8652,
                        "src": "14978:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8597,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14978:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14959:38:39"
                  },
                  "returnParameters": {
                    "id": 8605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8602,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "15070:16:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8652,
                        "src": "15062:24:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8601,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15062:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8604,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "15096:13:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8652,
                        "src": "15088:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15088:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15061:49:39"
                  },
                  "scope": 9043,
                  "src": "14939:547:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8685,
                    "nodeType": "Block",
                    "src": "15615:174:39",
                    "statements": [
                      {
                        "assignments": [
                          8659
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8659,
                            "mutability": "mutable",
                            "name": "total",
                            "nameLocation": "15633:5:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8685,
                            "src": "15625:13:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8658,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15625:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8661,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 8660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15641:1:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15625:17:39"
                      },
                      {
                        "body": {
                          "id": 8681,
                          "nodeType": "Block",
                          "src": "15707:54:39",
                          "statements": [
                            {
                              "expression": {
                                "id": 8679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8674,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8659,
                                  "src": "15721:5:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 8675,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7967,
                                      "src": "15730:8:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$7954_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV4.Edition storage ref)"
                                      }
                                    },
                                    "id": 8677,
                                    "indexExpression": {
                                      "id": 8676,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8663,
                                      "src": "15739:2:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15730:12:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$7954_storage",
                                      "typeString": "struct ArtistV4.Edition storage ref"
                                    }
                                  },
                                  "id": 8678,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "numSold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7941,
                                  "src": "15730:20:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "15721:29:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8680,
                              "nodeType": "ExpressionStatement",
                              "src": "15721:29:39"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8666,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8663,
                            "src": "15673:2:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 8667,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7962,
                                "src": "15678:11:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 8668,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "15678:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 8669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15678:21:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15673:26:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8682,
                        "initializationExpression": {
                          "assignments": [
                            8663
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8663,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "15665:2:39",
                              "nodeType": "VariableDeclaration",
                              "scope": 8682,
                              "src": "15657:10:39",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8662,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15657:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 8665,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 8664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15670:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15657:14:39"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 8672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15701:4:39",
                            "subExpression": {
                              "id": 8671,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8663,
                              "src": "15701:2:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8673,
                          "nodeType": "ExpressionStatement",
                          "src": "15701:4:39"
                        },
                        "nodeType": "ForStatement",
                        "src": "15652:109:39"
                      },
                      {
                        "expression": {
                          "id": 8683,
                          "name": "total",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8659,
                          "src": "15777:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8657,
                        "id": 8684,
                        "nodeType": "Return",
                        "src": "15770:12:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8653,
                    "nodeType": "StructuredDocumentation",
                    "src": "15492:63:39",
                    "text": "@notice The total number of tokens created by this contract"
                  },
                  "functionSelector": "18160ddd",
                  "id": 8686,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "15569:11:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8654,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15580:2:39"
                  },
                  "returnParameters": {
                    "id": 8657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8656,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8686,
                        "src": "15606:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8655,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15606:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15605:9:39"
                  },
                  "scope": 9043,
                  "src": "15560:229:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    940,
                    2986
                  ],
                  "body": {
                    "id": 8709,
                    "nodeType": "Block",
                    "src": "16086:142:39",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 8702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8698,
                                    "name": "IERC2981Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 150,
                                    "src": "16120:19:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  ],
                                  "id": 8697,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "16115:4:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 8699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16115:25:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981Upgradeable_$150",
                                  "typeString": "type(contract IERC2981Upgradeable)"
                                }
                              },
                              "id": 8700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "16115:37:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 8701,
                              "name": "_interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8689,
                              "src": "16156:12:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "16115:53:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 8705,
                                "name": "_interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8689,
                                "src": "16208:12:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 8703,
                                "name": "ERC721Upgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "16172:17:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract ERC721Upgradeable)"
                                }
                              },
                              "id": 8704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 940,
                              "src": "16172:35:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 8706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16172:49:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16115:106:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 8696,
                        "id": 8708,
                        "nodeType": "Return",
                        "src": "16096:125:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8687,
                    "nodeType": "StructuredDocumentation",
                    "src": "15795:127:39",
                    "text": "@notice Informs other contracts which interfaces this contract supports\n @dev https://eips.ethereum.org/EIPS/eip-165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 8710,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "15936:17:39",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8693,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 8691,
                        "name": "ERC721Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1718,
                        "src": "16020:17:39"
                      },
                      {
                        "id": 8692,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "16039:18:39"
                      }
                    ],
                    "src": "16011:47:39"
                  },
                  "parameters": {
                    "id": 8690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8689,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "15961:12:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8710,
                        "src": "15954:19:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 8688,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "15954:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15953:21:39"
                  },
                  "returnParameters": {
                    "id": 8696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8695,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8710,
                        "src": "16076:4:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8694,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16076:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16075:6:39"
                  },
                  "scope": 9043,
                  "src": "15927:301:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8722,
                    "nodeType": "Block",
                    "src": "16353:117:39",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 8716,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7962,
                                "src": "16370:11:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 8717,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "16370:19:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 8718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16370:21:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 8719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16394:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "16370:25:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8715,
                        "id": 8721,
                        "nodeType": "Return",
                        "src": "16363:32:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8711,
                    "nodeType": "StructuredDocumentation",
                    "src": "16234:58:39",
                    "text": "@notice returns the number of editions for this artist"
                  },
                  "functionSelector": "4bf44026",
                  "id": 8723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "editionCount",
                  "nameLocation": "16306:12:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8712,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16318:2:39"
                  },
                  "returnParameters": {
                    "id": 8715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8714,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8723,
                        "src": "16344:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8713,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16344:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16343:9:39"
                  },
                  "scope": 9043,
                  "src": "16297:173:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8748,
                    "nodeType": "Block",
                    "src": "16641:356:39",
                    "statements": [
                      {
                        "assignments": [
                          8732
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8732,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "16723:9:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8748,
                            "src": "16715:17:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8731,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16715:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8736,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8733,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8726,
                            "src": "16735:8:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "313238",
                            "id": 8734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16747:3:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "16735:15:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16715:35:39"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8737,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8732,
                            "src": "16848:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16861:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16848:14:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8745,
                        "nodeType": "IfStatement",
                        "src": "16844:120:39",
                        "trueBody": {
                          "id": 8744,
                          "nodeType": "Block",
                          "src": "16864:100:39",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 8740,
                                  "name": "_tokenToEdition",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7971,
                                  "src": "16928:15:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 8742,
                                "indexExpression": {
                                  "id": 8741,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8726,
                                  "src": "16944:8:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16928:25:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 8730,
                              "id": 8743,
                              "nodeType": "Return",
                              "src": "16921:32:39"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 8746,
                          "name": "editionId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8732,
                          "src": "16981:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8730,
                        "id": 8747,
                        "nodeType": "Return",
                        "src": "16974:16:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8724,
                    "nodeType": "StructuredDocumentation",
                    "src": "16476:88:39",
                    "text": "@notice Returns the edition id for a given token id\n @param _tokenId token id"
                  },
                  "functionSelector": "602787ed",
                  "id": 8749,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenToEdition",
                  "nameLocation": "16578:14:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8726,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "16601:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8749,
                        "src": "16593:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8725,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16593:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16592:18:39"
                  },
                  "returnParameters": {
                    "id": 8730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8729,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8749,
                        "src": "16632:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16632:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16631:9:39"
                  },
                  "scope": 9043,
                  "src": "16569:428:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8796,
                    "nodeType": "Block",
                    "src": "17223:211:39",
                    "statements": [
                      {
                        "assignments": [
                          8763
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8763,
                            "mutability": "mutable",
                            "name": "owners",
                            "nameLocation": "17250:6:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8796,
                            "src": "17233:23:39",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8761,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17233:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8762,
                              "nodeType": "ArrayTypeName",
                              "src": "17233:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8770,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8767,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8753,
                                "src": "17273:9:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 8768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "17273:16:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "17259:13:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8764,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17263:7:39",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8765,
                              "nodeType": "ArrayTypeName",
                              "src": "17263:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 8769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17259:31:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17233:57:39"
                      },
                      {
                        "body": {
                          "id": 8792,
                          "nodeType": "Block",
                          "src": "17347:58:39",
                          "statements": [
                            {
                              "expression": {
                                "id": 8790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 8782,
                                    "name": "owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8763,
                                    "src": "17361:6:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 8784,
                                  "indexExpression": {
                                    "id": 8783,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8772,
                                    "src": "17368:1:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17361:9:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 8786,
                                        "name": "_tokenIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8753,
                                        "src": "17381:9:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 8788,
                                      "indexExpression": {
                                        "id": 8787,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8772,
                                        "src": "17391:1:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "17381:12:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 8785,
                                    "name": "ownerOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 992,
                                    "src": "17373:7:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view returns (address)"
                                    }
                                  },
                                  "id": 8789,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17373:21:39",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "17361:33:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8791,
                              "nodeType": "ExpressionStatement",
                              "src": "17361:33:39"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8775,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8772,
                            "src": "17320:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 8776,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8753,
                              "src": "17324:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 8777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "17324:16:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17320:20:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8793,
                        "initializationExpression": {
                          "assignments": [
                            8772
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8772,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "17313:1:39",
                              "nodeType": "VariableDeclaration",
                              "scope": 8793,
                              "src": "17305:9:39",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8771,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17305:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 8774,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 8773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17317:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "17305:13:39"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 8780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "17342:3:39",
                            "subExpression": {
                              "id": 8779,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8772,
                              "src": "17342:1:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8781,
                          "nodeType": "ExpressionStatement",
                          "src": "17342:3:39"
                        },
                        "nodeType": "ForStatement",
                        "src": "17300:105:39"
                      },
                      {
                        "expression": {
                          "id": 8794,
                          "name": "owners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8763,
                          "src": "17421:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 8758,
                        "id": 8795,
                        "nodeType": "Return",
                        "src": "17414:13:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8750,
                    "nodeType": "StructuredDocumentation",
                    "src": "17003:118:39",
                    "text": "@notice Returns a list of owner addresses for a given list of token ids\n @param _tokenIds List of token ids"
                  },
                  "functionSelector": "52f5c2e4",
                  "id": 8797,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownersOfTokenIds",
                  "nameLocation": "17135:16:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8753,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nameLocation": "17171:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8797,
                        "src": "17152:28:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8751,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17152:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8752,
                          "nodeType": "ArrayTypeName",
                          "src": "17152:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17151:30:39"
                  },
                  "returnParameters": {
                    "id": 8758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8757,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8797,
                        "src": "17205:16:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8755,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17205:7:39",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8756,
                          "nodeType": "ArrayTypeName",
                          "src": "17205:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17204:18:39"
                  },
                  "scope": 9043,
                  "src": "17126:308:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8852,
                    "nodeType": "Block",
                    "src": "17589:308:39",
                    "statements": [
                      {
                        "assignments": [
                          8812
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8812,
                            "mutability": "mutable",
                            "name": "claimed",
                            "nameLocation": "17613:7:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8852,
                            "src": "17599:21:39",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8810,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "17599:4:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8811,
                              "nodeType": "ArrayTypeName",
                              "src": "17599:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8819,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8816,
                                "name": "_ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8802,
                                "src": "17634:14:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 8817,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "17634:21:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "17623:10:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bool[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8813,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "17627:4:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8814,
                              "nodeType": "ArrayTypeName",
                              "src": "17627:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            }
                          },
                          "id": 8818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17623:33:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17599:57:39"
                      },
                      {
                        "body": {
                          "id": 8848,
                          "nodeType": "Block",
                          "src": "17719:147:39",
                          "statements": [
                            {
                              "assignments": [
                                8832,
                                null,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8832,
                                  "mutability": "mutable",
                                  "name": "storedBit",
                                  "nameLocation": "17742:9:39",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8848,
                                  "src": "17734:17:39",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8831,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17734:7:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null,
                                null,
                                null
                              ],
                              "id": 8839,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 8834,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8799,
                                    "src": "17784:10:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 8835,
                                      "name": "_ticketNumbers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8802,
                                      "src": "17796:14:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 8837,
                                    "indexExpression": {
                                      "id": 8836,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8821,
                                      "src": "17811:1:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "17796:17:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8833,
                                  "name": "_getBitForTicketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9042,
                                  "src": "17761:22:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 8838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17761:53:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17733:81:39"
                            },
                            {
                              "expression": {
                                "id": 8846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 8840,
                                    "name": "claimed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8812,
                                    "src": "17828:7:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 8842,
                                  "indexExpression": {
                                    "id": 8841,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8821,
                                    "src": "17836:1:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17828:10:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8843,
                                    "name": "storedBit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8832,
                                    "src": "17841:9:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 8844,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17854:1:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "17841:14:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "17828:27:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8847,
                              "nodeType": "ExpressionStatement",
                              "src": "17828:27:39"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8824,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8821,
                            "src": "17687:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 8825,
                              "name": "_ticketNumbers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8802,
                              "src": "17691:14:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 8826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "17691:21:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17687:25:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8849,
                        "initializationExpression": {
                          "assignments": [
                            8821
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8821,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "17680:1:39",
                              "nodeType": "VariableDeclaration",
                              "scope": 8849,
                              "src": "17672:9:39",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8820,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17672:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 8823,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 8822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17684:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "17672:13:39"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 8829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "17714:3:39",
                            "subExpression": {
                              "id": 8828,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8821,
                              "src": "17714:1:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8830,
                          "nodeType": "ExpressionStatement",
                          "src": "17714:3:39"
                        },
                        "nodeType": "ForStatement",
                        "src": "17667:199:39"
                      },
                      {
                        "expression": {
                          "id": 8850,
                          "name": "claimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8812,
                          "src": "17883:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "functionReturnParameters": 8807,
                        "id": 8851,
                        "nodeType": "Return",
                        "src": "17876:14:39"
                      }
                    ]
                  },
                  "functionSelector": "065d5b85",
                  "id": 8853,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkTicketNumbers",
                  "nameLocation": "17449:18:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8799,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "17476:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8853,
                        "src": "17468:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8798,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17468:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8802,
                        "mutability": "mutable",
                        "name": "_ticketNumbers",
                        "nameLocation": "17507:14:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8853,
                        "src": "17488:33:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8800,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17488:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8801,
                          "nodeType": "ArrayTypeName",
                          "src": "17488:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17467:55:39"
                  },
                  "returnParameters": {
                    "id": 8807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8806,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8853,
                        "src": "17570:13:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8804,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "17570:4:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 8805,
                          "nodeType": "ArrayTypeName",
                          "src": "17570:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17569:15:39"
                  },
                  "scope": 9043,
                  "src": "17440:457:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8886,
                    "nodeType": "Block",
                    "src": "18230:235:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 8864,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "18256:4:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ArtistV4_$9043",
                                        "typeString": "contract ArtistV4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ArtistV4_$9043",
                                        "typeString": "contract ArtistV4"
                                      }
                                    ],
                                    "id": 8863,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "18248:7:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8862,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "18248:7:39",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 8865,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18248:13:39",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 8866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "18248:21:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 8867,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8858,
                                "src": "18273:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18248:32:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                              "id": 8869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18282:31:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              },
                              "value": "Insufficient balance for send"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              }
                            ],
                            "id": 8861,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18240:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18240:74:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8871,
                        "nodeType": "ExpressionStatement",
                        "src": "18240:74:39"
                      },
                      {
                        "assignments": [
                          8873,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8873,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "18331:7:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8886,
                            "src": "18326:12:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8872,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "18326:4:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 8880,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 8878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18376:2:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 8874,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8856,
                                "src": "18344:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 8875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "18344:15:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 8877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 8876,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8858,
                                "src": "18367:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "18344:31:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 8879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18344:35:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18325:54:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8882,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8873,
                              "src": "18397:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e74206d61792068617665207265766572746564",
                              "id": 8883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18406:51:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              },
                              "value": "Unable to send value: recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              }
                            ],
                            "id": 8881,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18389:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18389:69:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8885,
                        "nodeType": "ExpressionStatement",
                        "src": "18389:69:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8854,
                    "nodeType": "StructuredDocumentation",
                    "src": "18009:143:39",
                    "text": "@notice Sends funds to an address\n @param _recipient The address to send funds to\n @param _amount The amount of funds to send"
                  },
                  "id": 8887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendFunds",
                  "nameLocation": "18166:10:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8856,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "18193:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8887,
                        "src": "18177:26:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 8855,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18177:15:39",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8858,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "18213:7:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8887,
                        "src": "18205:15:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8857,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18205:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18176:45:39"
                  },
                  "returnParameters": {
                    "id": 8860,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18230:0:39"
                  },
                  "scope": 9043,
                  "src": "18157:308:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 8973,
                    "nodeType": "Block",
                    "src": "18850:1062:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8900,
                                "name": "_ticketNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8894,
                                "src": "19036:13:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                },
                                "id": 8903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 8901,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19052:1:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 8902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19055:2:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "19052:5:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                }
                              },
                              "src": "19036:21:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                              "id": 8905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19059:27:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              },
                              "value": "Ticket number exceeds max"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              }
                            ],
                            "id": 8899,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "19028:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19028:59:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8907,
                        "nodeType": "ExpressionStatement",
                        "src": "19028:59:39"
                      },
                      {
                        "assignments": [
                          8909,
                          8911,
                          8913,
                          8915
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8909,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "19151:9:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8973,
                            "src": "19143:17:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8908,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19143:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8911,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "19182:10:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8973,
                            "src": "19174:18:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8910,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19174:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8913,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "19214:16:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8973,
                            "src": "19206:24:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8912,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19206:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8915,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "19252:16:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8973,
                            "src": "19244:24:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8914,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19244:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8920,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8917,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8892,
                              "src": "19304:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8918,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8894,
                              "src": "19316:13:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8916,
                            "name": "_getBitForTicketNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9042,
                            "src": "19281:22:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 8919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19281:49:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19129:201:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8922,
                                "name": "storedBit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8909,
                                "src": "19349:9:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19362:1:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "19349:14:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c726561647920636c61696d6564",
                              "id": 8925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19365:46:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              },
                              "value": "Invalid ticket number or NFT already claimed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              }
                            ],
                            "id": 8921,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "19341:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19341:71:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8927,
                        "nodeType": "ExpressionStatement",
                        "src": "19341:71:39"
                      },
                      {
                        "expression": {
                          "id": 8942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 8928,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7992,
                                "src": "19497:13:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 8931,
                              "indexExpression": {
                                "id": 8929,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8892,
                                "src": "19511:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "19497:25:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 8932,
                            "indexExpression": {
                              "id": 8930,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8915,
                              "src": "19523:16:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "19497:43:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8933,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8911,
                              "src": "19543:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 8936,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19565:1:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 8935,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19557:7:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8934,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19557:7:39",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 8937,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19557:10:39",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "id": 8938,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8913,
                                    "src": "19571:16:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19557:30:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8940,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "19556:32:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19543:45:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19497:91:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8943,
                        "nodeType": "ExpressionStatement",
                        "src": "19497:91:39"
                      },
                      {
                        "assignments": [
                          8945
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8945,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "19607:6:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 8973,
                            "src": "19599:14:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 8944,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "19599:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8967,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 8949,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19673:10:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 8950,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7986,
                                  "src": "19701:16:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 8954,
                                          "name": "PERMISSIONED_SALE_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7984,
                                          "src": "19756:26:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 8957,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "19792:4:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ArtistV4_$9043",
                                                "typeString": "contract ArtistV4"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_ArtistV4_$9043",
                                                "typeString": "contract ArtistV4"
                                              }
                                            ],
                                            "id": 8956,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "19784:7:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 8955,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "19784:7:39",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 8958,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19784:13:39",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 8959,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "19799:3:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 8960,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "19799:10:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 8961,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8892,
                                          "src": "19811:10:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 8962,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8894,
                                          "src": "19823:13:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 8952,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "19745:3:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 8953,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "19745:10:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 8963,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19745:92:39",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 8951,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "19735:9:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8964,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19735:103:39",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 8947,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "19639:3:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "19639:16:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19639:213:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 8946,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "19616:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 8966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19616:246:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19599:263:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8970,
                              "name": "_signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8890,
                              "src": "19894:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 8968,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8945,
                              "src": "19879:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 8969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4427,
                            "src": "19879:14:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 8971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19879:26:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 8898,
                        "id": 8972,
                        "nodeType": "Return",
                        "src": "19872:33:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8888,
                    "nodeType": "StructuredDocumentation",
                    "src": "18471:229:39",
                    "text": "@notice Gets signer address to validate permissioned purchase\n @param _signature signed message\n @param _editionId edition id\n @return address of signer\n @dev https://eips.ethereum.org/EIPS/eip-712"
                  },
                  "id": 8974,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "18714:9:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8890,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "18748:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8974,
                        "src": "18733:25:39",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8889,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18733:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8892,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "18776:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8974,
                        "src": "18768:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8891,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18768:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8894,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "18804:13:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 8974,
                        "src": "18796:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8893,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18796:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18723:100:39"
                  },
                  "returnParameters": {
                    "id": 8898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8897,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8974,
                        "src": "18841:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8896,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18841:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18840:9:39"
                  },
                  "scope": 9043,
                  "src": "18705:1207:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 9041,
                    "nodeType": "Block",
                    "src": "20288:763:39",
                    "statements": [
                      {
                        "assignments": [
                          8991
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8991,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "20306:10:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 9041,
                            "src": "20298:18:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8990,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20298:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8992,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20298:18:39"
                      },
                      {
                        "assignments": [
                          8994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8994,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "20374:16:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 9041,
                            "src": "20366:24:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8993,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20366:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8995,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20366:24:39"
                      },
                      {
                        "assignments": [
                          8997
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8997,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "20444:16:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 9041,
                            "src": "20436:24:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8996,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20436:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8998,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20436:24:39"
                      },
                      {
                        "assignments": [
                          9000
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9000,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "20539:9:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 9041,
                            "src": "20531:17:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8999,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20531:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9001,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20531:17:39"
                      },
                      {
                        "id": 9014,
                        "nodeType": "UncheckedBlock",
                        "src": "20629:125:39",
                        "statements": [
                          {
                            "expression": {
                              "id": 9006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 9002,
                                "name": "ticketNumbersIdx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8994,
                                "src": "20653:16:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9003,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8979,
                                  "src": "20672:13:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 9004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20688:3:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "20672:19:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "20653:38:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9007,
                            "nodeType": "ExpressionStatement",
                            "src": "20653:38:39"
                          },
                          {
                            "expression": {
                              "id": 9012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 9008,
                                "name": "localGroupOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8997,
                                "src": "20705:16:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9009,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8979,
                                  "src": "20724:13:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 9010,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20740:3:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "20724:19:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "20705:38:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9013,
                            "nodeType": "ExpressionStatement",
                            "src": "20705:38:39"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 9021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9015,
                            "name": "localGroup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8991,
                            "src": "20812:10:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 9016,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7992,
                                "src": "20825:13:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 9018,
                              "indexExpression": {
                                "id": 9017,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8977,
                                "src": "20839:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20825:25:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 9020,
                            "indexExpression": {
                              "id": 9019,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8994,
                              "src": "20851:16:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20825:43:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20812:56:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9022,
                        "nodeType": "ExpressionStatement",
                        "src": "20812:56:39"
                      },
                      {
                        "expression": {
                          "id": 9033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9023,
                            "name": "storedBit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9000,
                            "src": "20910:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 9024,
                                    "name": "localGroup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8991,
                                    "src": "20923:10:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "id": 9025,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8997,
                                    "src": "20937:16:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "20923:30:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9027,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "20922:32:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "31",
                                  "id": 9030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20965:1:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "id": 9029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20957:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 9028,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20957:7:39",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20957:10:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "20922:45:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20910:57:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9034,
                        "nodeType": "ExpressionStatement",
                        "src": "20910:57:39"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 9035,
                              "name": "storedBit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9000,
                              "src": "20986:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9036,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8991,
                              "src": "20997:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9037,
                              "name": "localGroupOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8997,
                              "src": "21009:16:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9038,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8994,
                              "src": "21027:16:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 9039,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20985:59:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8989,
                        "id": 9040,
                        "nodeType": "Return",
                        "src": "20978:66:39"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8975,
                    "nodeType": "StructuredDocumentation",
                    "src": "19918:146:39",
                    "text": "@notice Gets the bit variables associated with a ticket number\n @param _editionId edition id\n @param _ticketNumber ticket number"
                  },
                  "id": 9042,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBitForTicketNumber",
                  "nameLocation": "20078:22:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8977,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "20109:10:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 9042,
                        "src": "20101:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8976,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20101:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8979,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "20129:13:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 9042,
                        "src": "20121:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20121:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20100:43:39"
                  },
                  "returnParameters": {
                    "id": 8989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8982,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9042,
                        "src": "20203:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8981,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20203:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8984,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9042,
                        "src": "20224:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20224:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8986,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9042,
                        "src": "20245:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20245:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8988,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9042,
                        "src": "20266:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20266:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20189:94:39"
                  },
                  "scope": 9043,
                  "src": "20069:982:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 9044,
              "src": "2405:18648:39",
              "usedErrors": []
            }
          ],
          "src": "45:21009:39"
        },
        "id": 39
      },
      "contracts/ArtistV5.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistV5.sol",
          "exportedSymbols": {
            "AccessManager": [
              11928
            ],
            "AddressUpgradeable": [
              2122
            ],
            "ArtistV5": [
              10364
            ],
            "ContextUpgradeable": [
              2164
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSA": [
              4678
            ],
            "ERC165Upgradeable": [
              2975
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "IERC721MetadataUpgradeable": [
              1879
            ],
            "IERC721ReceiverUpgradeable": [
              1736
            ],
            "IERC721Upgradeable": [
              1852
            ],
            "Initializable": [
              690
            ],
            "Strings": [
              4271
            ],
            "StringsUpgradeable": [
              2524
            ]
          },
          "id": 10365,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9045,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".14"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:24:40"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "id": 9046,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10365,
              "sourceUnit": 151,
              "src": "1539:80:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "id": 9047,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10365,
              "sourceUnit": 1719,
              "src": "1620:80:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 9048,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10365,
              "sourceUnit": 2239,
              "src": "1701:75:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 9049,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10365,
              "sourceUnit": 4679,
              "src": "1777:62:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "@openzeppelin/contracts/utils/Strings.sol",
              "id": 9050,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10365,
              "sourceUnit": 4272,
              "src": "1840:51:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/auxillary/AccessManager.sol",
              "file": "./auxillary/AccessManager.sol",
              "id": 9051,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 10365,
              "sourceUnit": 11929,
              "src": "1892:39:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9053,
                    "name": "ERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1718,
                    "src": "2244:17:40"
                  },
                  "id": 9054,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2244:17:40"
                },
                {
                  "baseName": {
                    "id": 9055,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 150,
                    "src": "2263:19:40"
                  },
                  "id": 9056,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2263:19:40"
                },
                {
                  "baseName": {
                    "id": 9057,
                    "name": "AccessManager",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11928,
                    "src": "2284:13:40"
                  },
                  "id": 9058,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2284:13:40"
                }
              ],
              "canonicalName": "ArtistV5",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 9052,
                "nodeType": "StructuredDocumentation",
                "src": "1933:290:40",
                "text": "@title Artist\n @author SoundXYZ - @gigamesh & @vigneshka\n @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol"
              },
              "fullyImplemented": true,
              "id": 10364,
              "linearizedBaseContracts": [
                10364,
                11928,
                150,
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "ArtistV5",
              "nameLocation": "2232:8:40",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "27399d36",
                  "id": 9063,
                  "mutability": "constant",
                  "name": "PERMISSIONED_SALE_TYPEHASH",
                  "nameLocation": "2496:26:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "2472:170:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9059,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2472:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "45646974696f6e496e666f286164647265737320636f6e7472616374416464726573732c61646472657373206275796572416464726573732c75696e743235362065646974696f6e49642c75696e74323536207469636b65744e756d62657229",
                        "id": 9061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2543:98:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        },
                        "value": "EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        }
                      ],
                      "id": 9060,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2533:9:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 9062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2533:109:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 9065,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "2771:16:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "2746:41:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9064,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2746:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 9067,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "2853:7:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "2837:23:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9066,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2837:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "3ef2dbc2",
                  "id": 9070,
                  "mutability": "mutable",
                  "name": "atTokenId",
                  "nameLocation": "2902:9:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "2867:44:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 9069,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9068,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2867:27:40"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2867:27:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "9725d92e",
                  "id": 9073,
                  "mutability": "mutable",
                  "name": "atEditionId",
                  "nameLocation": "2972:11:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "2937:46:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 9072,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9071,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2937:27:40"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2937:27:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "279c806e",
                  "id": 9078,
                  "mutability": "mutable",
                  "name": "editions",
                  "nameLocation": "3075:8:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "3040:43:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                    "typeString": "mapping(uint256 => struct ArtistV5.Edition)"
                  },
                  "typeName": {
                    "id": 9077,
                    "keyType": {
                      "id": 9074,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3048:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3040:27:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                      "typeString": "mapping(uint256 => struct ArtistV5.Edition)"
                    },
                    "valueType": {
                      "id": 9076,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 9075,
                        "name": "Edition",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 9117,
                        "src": "3059:7:40"
                      },
                      "referencedDeclaration": 9117,
                      "src": "3059:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Edition_$9117_storage_ptr",
                        "typeString": "struct ArtistV5.Edition"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "5076a64d",
                  "id": 9082,
                  "mutability": "mutable",
                  "name": "_tokenToEdition",
                  "nameLocation": "3185:15:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "3150:50:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 9081,
                    "keyType": {
                      "id": 9079,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3158:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3150:27:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 9080,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3169:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e1a3d573",
                  "id": 9086,
                  "mutability": "mutable",
                  "name": "depositedForEdition",
                  "nameLocation": "3314:19:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "3279:54:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 9085,
                    "keyType": {
                      "id": 9083,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3287:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3279:27:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 9084,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3298:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d3bb0528",
                  "id": 9090,
                  "mutability": "mutable",
                  "name": "withdrawnForEdition",
                  "nameLocation": "3455:19:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "3420:54:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 9089,
                    "keyType": {
                      "id": 9087,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3428:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3420:27:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 9088,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3439:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 9096,
                  "mutability": "mutable",
                  "name": "ticketNumbers",
                  "nameLocation": "3613:13:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 10364,
                  "src": "3565:61:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                  },
                  "typeName": {
                    "id": 9095,
                    "keyType": {
                      "id": 9091,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3573:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3565:47:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                    },
                    "valueType": {
                      "id": 9094,
                      "keyType": {
                        "id": 9092,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3592:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "3584:27:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      },
                      "valueType": {
                        "id": 9093,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3603:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "ArtistV5.Edition",
                  "id": 9117,
                  "members": [
                    {
                      "constant": false,
                      "id": 9098,
                      "mutability": "mutable",
                      "name": "fundingRecipient",
                      "nameLocation": "3824:16:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "3808:32:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 9097,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3808:15:40",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9100,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "3921:5:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "3913:13:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9099,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3913:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9102,
                      "mutability": "mutable",
                      "name": "numSold",
                      "nameLocation": "3988:7:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "3981:14:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 9101,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3981:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9104,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "4070:8:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "4063:15:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 9103,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4063:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9106,
                      "mutability": "mutable",
                      "name": "royaltyBPS",
                      "nameLocation": "4128:10:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "4121:17:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 9105,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4121:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9108,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "4223:9:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "4216:16:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 9107,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4216:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9110,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "4315:7:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "4308:14:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 9109,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4308:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9112,
                      "mutability": "mutable",
                      "name": "permissionedQuantity",
                      "nameLocation": "4382:20:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "4375:27:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 9111,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4375:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9114,
                      "mutability": "mutable",
                      "name": "signerAddress",
                      "nameLocation": "4456:13:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "4448:21:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9113,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4448:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9116,
                      "mutability": "mutable",
                      "name": "baseURI",
                      "nameLocation": "4522:7:40",
                      "nodeType": "VariableDeclaration",
                      "scope": 9117,
                      "src": "4515:14:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 9115,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4515:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Edition",
                  "nameLocation": "3734:7:40",
                  "nodeType": "StructDefinition",
                  "scope": 10364,
                  "src": "3727:809:40",
                  "visibility": "public"
                },
                {
                  "global": false,
                  "id": 9121,
                  "libraryName": {
                    "id": 9118,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "4548:19:40"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "4542:58:40",
                  "typeName": {
                    "id": 9120,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9119,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "4572:27:40"
                    },
                    "referencedDeclaration": 2170,
                    "src": "4572:27:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 9124,
                  "libraryName": {
                    "id": 9122,
                    "name": "ECDSA",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4678,
                    "src": "4611:5:40"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "4605:24:40",
                  "typeName": {
                    "id": 9123,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4621:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "canonicalName": "ArtistV5.TimeType",
                  "id": 9127,
                  "members": [
                    {
                      "id": 9125,
                      "name": "START",
                      "nameLocation": "4659:5:40",
                      "nodeType": "EnumValue",
                      "src": "4659:5:40"
                    },
                    {
                      "id": 9126,
                      "name": "END",
                      "nameLocation": "4674:3:40",
                      "nodeType": "EnumValue",
                      "src": "4674:3:40"
                    }
                  ],
                  "name": "TimeType",
                  "nameLocation": "4640:8:40",
                  "nodeType": "EnumDefinition",
                  "src": "4635:48:40"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3",
                  "id": 9147,
                  "name": "EditionCreated",
                  "nameLocation": "4790:14:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9129,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4830:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "4814:25:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4814:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9131,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "4857:16:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "4849:24:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4849:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9133,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "4891:5:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "4883:13:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4883:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9135,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "quantity",
                        "nameLocation": "4913:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "4906:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9134,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4906:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9137,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "royaltyBPS",
                        "nameLocation": "4938:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "4931:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9136,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4931:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9139,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "4965:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "4958:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9138,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4958:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9141,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "4991:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "4984:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9140,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4984:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9143,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5015:20:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "5008:27:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9142,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5008:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9145,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5053:13:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9147,
                        "src": "5045:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9144,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5045:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4804:268:40"
                  },
                  "src": "4784:289:40"
                },
                {
                  "anonymous": false,
                  "eventSelector": "c3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251",
                  "id": 9159,
                  "name": "EditionPurchased",
                  "nameLocation": "5085:16:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9149,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5127:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9159,
                        "src": "5111:25:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9148,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5111:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9151,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5162:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9159,
                        "src": "5146:23:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9150,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5146:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9153,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "numSold",
                        "nameLocation": "5270:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9159,
                        "src": "5263:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9152,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5263:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9155,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nameLocation": "5362:5:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9159,
                        "src": "5346:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9154,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5346:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9157,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ticketNumber",
                        "nameLocation": "5385:12:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9159,
                        "src": "5377:20:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5377:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5101:302:40"
                  },
                  "src": "5079:325:40"
                },
                {
                  "anonymous": false,
                  "eventSelector": "494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c",
                  "id": 9168,
                  "name": "AuctionTimeSet",
                  "nameLocation": "5416:14:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9162,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timeType",
                        "nameLocation": "5440:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9168,
                        "src": "5431:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TimeType_$9127",
                          "typeString": "enum ArtistV5.TimeType"
                        },
                        "typeName": {
                          "id": 9161,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9160,
                            "name": "TimeType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 9127,
                            "src": "5431:8:40"
                          },
                          "referencedDeclaration": 9127,
                          "src": "5431:8:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TimeType_$9127",
                            "typeString": "enum ArtistV5.TimeType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9164,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5458:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9168,
                        "src": "5450:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9163,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5450:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9166,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newTime",
                        "nameLocation": "5484:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9168,
                        "src": "5469:22:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9165,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5469:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5430:62:40"
                  },
                  "src": "5410:83:40"
                },
                {
                  "anonymous": false,
                  "eventSelector": "73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a534",
                  "id": 9174,
                  "name": "SignerAddressSet",
                  "nameLocation": "5505:16:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9170,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5530:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9174,
                        "src": "5522:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9169,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5522:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9172,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5557:13:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9174,
                        "src": "5541:29:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5541:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5521:50:40"
                  },
                  "src": "5499:73:40"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae",
                  "id": 9180,
                  "name": "PermissionedQuantitySet",
                  "nameLocation": "5584:23:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9176,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5616:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9180,
                        "src": "5608:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9175,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5608:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9178,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5634:20:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9180,
                        "src": "5627:27:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9177,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5627:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5607:48:40"
                  },
                  "src": "5578:78:40"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd412589",
                  "id": 9186,
                  "name": "BaseURISet",
                  "nameLocation": "5668:10:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9182,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5687:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9186,
                        "src": "5679:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9181,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5679:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9184,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "baseURI",
                        "nameLocation": "5705:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9186,
                        "src": "5698:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9183,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5698:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5678:35:40"
                  },
                  "src": "5662:52:40"
                },
                {
                  "body": {
                    "id": 9203,
                    "nodeType": "Block",
                    "src": "5896:116:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 9201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9190,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9065,
                            "src": "5906:16:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                        "id": 9195,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5956:31:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        },
                                        "value": "EIP712Domain(uint256 chainId)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        }
                                      ],
                                      "id": 9194,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "5946:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 9196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5946:42:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 9197,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "5990:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 9198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "5990:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9192,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "5935:3:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 9193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "5935:10:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 9199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5935:69:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 9191,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "5925:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 9200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5925:80:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5906:99:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 9202,
                        "nodeType": "ExpressionStatement",
                        "src": "5906:99:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9187,
                    "nodeType": "StructuredDocumentation",
                    "src": "5845:32:40",
                    "text": "@notice Contract constructor"
                  },
                  "id": 9204,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9188,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5893:2:40"
                  },
                  "returnParameters": {
                    "id": 9189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5896:0:40"
                  },
                  "scope": 10364,
                  "src": "5882:130:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9245,
                    "nodeType": "Block",
                    "src": "6398:378:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9219,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9209,
                              "src": "6422:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 9220,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9211,
                              "src": "6429:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 9218,
                            "name": "__ERC721_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "6408:13:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 9221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6408:29:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9222,
                        "nodeType": "ExpressionStatement",
                        "src": "6408:29:40"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9223,
                            "name": "__AccessManager_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11742,
                            "src": "6447:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 9224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6447:22:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9225,
                        "nodeType": "ExpressionStatement",
                        "src": "6447:22:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9227,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9207,
                              "src": "6559:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9226,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11799,
                            "src": "6541:17:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 9228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6541:25:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9229,
                        "nodeType": "ExpressionStatement",
                        "src": "6541:25:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 9230,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "6627:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 9231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "6627:13:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 9232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6644:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "6627:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9239,
                        "nodeType": "IfStatement",
                        "src": "6623:67:40",
                        "trueBody": {
                          "id": 9238,
                          "nodeType": "Block",
                          "src": "6647:43:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9234,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9067,
                                  "src": "6661:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9235,
                                  "name": "_baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9213,
                                  "src": "6671:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "6661:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 9237,
                              "nodeType": "ExpressionStatement",
                              "src": "6661:18:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 9240,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9073,
                              "src": "6746:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 9242,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "6746:21:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 9243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6746:23:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9244,
                        "nodeType": "ExpressionStatement",
                        "src": "6746:23:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9205,
                    "nodeType": "StructuredDocumentation",
                    "src": "6018:214:40",
                    "text": "@notice Initializes the contract\n @param _owner Owner of edition\n @param _name Name of artist\n @param _symbol Symbol for the artist\n @param _baseURI Default base URI for all editions"
                  },
                  "functionSelector": "5f1e6f6d",
                  "id": 9246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 9216,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9215,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "6386:11:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6386:11:40"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "6246:10:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9207,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "6274:6:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9246,
                        "src": "6266:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9206,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6266:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9209,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "6304:5:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9246,
                        "src": "6290:19:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9208,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6290:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9211,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "6333:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9246,
                        "src": "6319:21:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9210,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6319:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9213,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "6364:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9246,
                        "src": "6350:22:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9212,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6350:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6256:122:40"
                  },
                  "returnParameters": {
                    "id": 9217,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6398:0:40"
                  },
                  "scope": 10364,
                  "src": "6237:539:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9359,
                    "nodeType": "Block",
                    "src": "7878:1178:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 9276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9274,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9253,
                                "src": "7896:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 9275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7908:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7896:13:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d75737420736574207175616e74697479",
                              "id": 9277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7911:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              },
                              "value": "Must set quantity"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              }
                            ],
                            "id": 9273,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7888:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7888:43:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9279,
                        "nodeType": "ExpressionStatement",
                        "src": "7888:43:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9281,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9249,
                                "src": "7949:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 9284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7978:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 9283,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7970:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9282,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7970:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7970:10:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7949:31:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                              "id": 9287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7982:27:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              },
                              "value": "Must set fundingRecipient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              }
                            ],
                            "id": 9280,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7941:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7941:69:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9289,
                        "nodeType": "ExpressionStatement",
                        "src": "7941:69:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 9293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9291,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9259,
                                "src": "8028:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 9292,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9257,
                                "src": "8039:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "8028:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e2073746172742074696d65",
                              "id": 9294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8051:42:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              },
                              "value": "End time must be greater than start time"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              }
                            ],
                            "id": 9290,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8020:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8020:74:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9296,
                        "nodeType": "ExpressionStatement",
                        "src": "8020:74:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9298,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9265,
                                "src": "8112:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 9299,
                                    "name": "atEditionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9073,
                                    "src": "8126:11:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                      "typeString": "struct CountersUpgradeable.Counter storage ref"
                                    }
                                  },
                                  "id": 9300,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "current",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2182,
                                  "src": "8126:19:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                    "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                  }
                                },
                                "id": 9301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8126:21:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8112:35:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57726f6e672065646974696f6e204944",
                              "id": 9303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8149:18:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737",
                                "typeString": "literal_string \"Wrong edition ID\""
                              },
                              "value": "Wrong edition ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737",
                                "typeString": "literal_string \"Wrong edition ID\""
                              }
                            ],
                            "id": 9297,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8104:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8104:64:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9305,
                        "nodeType": "ExpressionStatement",
                        "src": "8104:64:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 9308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9306,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9261,
                            "src": "8183:21:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8207:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8183:25:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9320,
                        "nodeType": "IfStatement",
                        "src": "8179:123:40",
                        "trueBody": {
                          "id": 9319,
                          "nodeType": "Block",
                          "src": "8210:92:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 9315,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9310,
                                      "name": "_signerAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9263,
                                      "src": "8232:14:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 9313,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8258:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 9312,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8250:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 9311,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8250:7:40",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 9314,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8250:10:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8232:28:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "id": 9316,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8262:28:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    },
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    }
                                  ],
                                  "id": 9309,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8224:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8224:67:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9318,
                              "nodeType": "ExpressionStatement",
                              "src": "8224:67:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 9338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9321,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "8312:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9325,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 9322,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9073,
                                  "src": "8321:11:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 9323,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8321:19:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 9324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8321:21:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8312:31:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9327,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9249,
                                "src": "8386:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 9328,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9251,
                                "src": "8424:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 9329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8453:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 9330,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9253,
                                "src": "8478:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 9331,
                                "name": "_royaltyBPS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9255,
                                "src": "8513:11:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 9332,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9257,
                                "src": "8549:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 9333,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9259,
                                "src": "8582:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 9334,
                                "name": "_permissionedQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9261,
                                "src": "8626:21:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 9335,
                                "name": "_signerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9263,
                                "src": "8676:14:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9336,
                                "name": "_baseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9267,
                                "src": "8713:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 9326,
                              "name": "Edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9117,
                              "src": "8346:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Edition_$9117_storage_ptr_$",
                                "typeString": "type(struct ArtistV5.Edition storage pointer)"
                              }
                            },
                            "id": 9337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "fundingRecipient",
                              "price",
                              "numSold",
                              "quantity",
                              "royaltyBPS",
                              "startTime",
                              "endTime",
                              "permissionedQuantity",
                              "signerAddress",
                              "baseURI"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "8346:386:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_memory_ptr",
                              "typeString": "struct ArtistV5.Edition memory"
                            }
                          },
                          "src": "8312:420:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$9117_storage",
                            "typeString": "struct ArtistV5.Edition storage ref"
                          }
                        },
                        "id": 9339,
                        "nodeType": "ExpressionStatement",
                        "src": "8312:420:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 9341,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9073,
                                  "src": "8776:11:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 9342,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8776:19:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 9343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8776:21:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9344,
                              "name": "_fundingRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9249,
                              "src": "8811:17:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 9345,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9251,
                              "src": "8842:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9346,
                              "name": "_quantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9253,
                              "src": "8862:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 9347,
                              "name": "_royaltyBPS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9255,
                              "src": "8885:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 9348,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9257,
                              "src": "8910:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 9349,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9259,
                              "src": "8934:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 9350,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9261,
                              "src": "8956:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 9351,
                              "name": "_signerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9263,
                              "src": "8991:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9340,
                            "name": "EditionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9147,
                            "src": "8748:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint32,uint32,uint32,uint32,uint32,address)"
                            }
                          },
                          "id": 9352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8748:267:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9353,
                        "nodeType": "EmitStatement",
                        "src": "8743:272:40"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 9354,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9073,
                              "src": "9026:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 9356,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "9026:21:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 9357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9026:23:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9358,
                        "nodeType": "ExpressionStatement",
                        "src": "9026:23:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9247,
                    "nodeType": "StructuredDocumentation",
                    "src": "6782:722:40",
                    "text": "@notice Creates a new edition.\n @param _fundingRecipient The account that will receive sales revenue.\n @param _price The price at which each token will be sold, in ETH.\n @param _quantity The maximum number of tokens that can be sold.\n @param _royaltyBPS The royalty amount in bps.\n @param _startTime The start time of the auction, in seconds since unix epoch.\n @param _endTime The end time of the auction, in seconds since unix epoch.\n @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n @param _signerAddress signer address.\n @param _editionId The expected edition ID\n @param _baseURI The base URI for the edition"
                  },
                  "functionSelector": "8e116aea",
                  "id": 9360,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9270,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "7866:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 9271,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9269,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "7850:15:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7850:27:40"
                    }
                  ],
                  "name": "createEdition",
                  "nameLocation": "7518:13:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9249,
                        "mutability": "mutable",
                        "name": "_fundingRecipient",
                        "nameLocation": "7557:17:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7541:33:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 9248,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7541:15:40",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9251,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "7592:6:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7584:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9250,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7584:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9253,
                        "mutability": "mutable",
                        "name": "_quantity",
                        "nameLocation": "7615:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7608:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9252,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7608:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9255,
                        "mutability": "mutable",
                        "name": "_royaltyBPS",
                        "nameLocation": "7641:11:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7634:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9254,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7634:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9257,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "7669:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7662:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9256,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7662:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9259,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "7696:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7689:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9258,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7689:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9261,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "7721:21:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7714:28:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9260,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7714:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9263,
                        "mutability": "mutable",
                        "name": "_signerAddress",
                        "nameLocation": "7760:14:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7752:22:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9262,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7752:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9265,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "7792:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7784:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9264,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7784:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9267,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "7826:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9360,
                        "src": "7812:22:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9266,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7812:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7531:309:40"
                  },
                  "returnParameters": {
                    "id": 9272,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7878:0:40"
                  },
                  "scope": 10364,
                  "src": "7509:1547:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9537,
                    "nodeType": "Block",
                    "src": "9529:2681:40",
                    "statements": [
                      {
                        "assignments": [
                          9371
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9371,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "9600:5:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "9592:13:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9370,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9592:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9376,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 9372,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "9608:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9374,
                            "indexExpression": {
                              "id": 9373,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9363,
                              "src": "9617:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9608:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "id": 9375,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9100,
                          "src": "9608:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9592:42:40"
                      },
                      {
                        "assignments": [
                          9378
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9378,
                            "mutability": "mutable",
                            "name": "quantity",
                            "nameLocation": "9651:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "9644:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 9377,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9644:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9383,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 9379,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "9662:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9381,
                            "indexExpression": {
                              "id": 9380,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9363,
                              "src": "9671:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9662:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "id": 9382,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9104,
                          "src": "9662:29:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9644:47:40"
                      },
                      {
                        "assignments": [
                          9385
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9385,
                            "mutability": "mutable",
                            "name": "numSold",
                            "nameLocation": "9708:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "9701:14:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 9384,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9701:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9390,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 9386,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "9718:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9388,
                            "indexExpression": {
                              "id": 9387,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9363,
                              "src": "9727:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9718:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "id": 9389,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numSold",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9102,
                          "src": "9718:28:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9701:45:40"
                      },
                      {
                        "assignments": [
                          9392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9392,
                            "mutability": "mutable",
                            "name": "newNumSold",
                            "nameLocation": "9763:10:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "9756:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 9391,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9756:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9396,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 9395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9393,
                            "name": "numSold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9385,
                            "src": "9776:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 9394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9786:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9776:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9756:31:40"
                      },
                      {
                        "assignments": [
                          9398
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9398,
                            "mutability": "mutable",
                            "name": "startTime",
                            "nameLocation": "9804:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "9797:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 9397,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9797:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9403,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 9399,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "9816:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9401,
                            "indexExpression": {
                              "id": 9400,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9363,
                              "src": "9825:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9816:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "id": 9402,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9108,
                          "src": "9816:30:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9797:49:40"
                      },
                      {
                        "assignments": [
                          9405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9405,
                            "mutability": "mutable",
                            "name": "endTime",
                            "nameLocation": "9863:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "9856:14:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 9404,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9856:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9410,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 9406,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "9873:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9408,
                            "indexExpression": {
                              "id": 9407,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9363,
                              "src": "9882:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9873:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "id": 9409,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9110,
                          "src": "9873:28:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9856:45:40"
                      },
                      {
                        "assignments": [
                          9412
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9412,
                            "mutability": "mutable",
                            "name": "permissionedQuantity",
                            "nameLocation": "9918:20:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "9911:27:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 9411,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9911:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9417,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 9413,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "9941:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9415,
                            "indexExpression": {
                              "id": 9414,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9363,
                              "src": "9950:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9941:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "id": 9416,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permissionedQuantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9112,
                          "src": "9941:41:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9911:71:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 9421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9419,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9378,
                                "src": "10145:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 9420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10156:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10145:12:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                              "id": 9422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10159:24:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              },
                              "value": "Edition does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              }
                            ],
                            "id": 9418,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10137:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10137:47:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9424,
                        "nodeType": "ExpressionStatement",
                        "src": "10137:47:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 9426,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "10265:3:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "10265:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 9428,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9371,
                                "src": "10278:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10265:18:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d7573742073656e6420656e6f75676820746f207075726368617365207468652065646974696f6e2e",
                              "id": 9430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10285:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              },
                              "value": "Must send enough to purchase the edition."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              }
                            ],
                            "id": 9425,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10257:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10257:72:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9432,
                        "nodeType": "ExpressionStatement",
                        "src": "10257:72:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9434,
                                "name": "endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9405,
                                "src": "10399:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 9435,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "10409:5:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 9436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "10409:15:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10399:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e2068617320656e646564",
                              "id": 9438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10426:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              },
                              "value": "Auction has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              }
                            ],
                            "id": 9433,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10391:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10391:55:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9440,
                        "nodeType": "ExpressionStatement",
                        "src": "10391:55:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9441,
                            "name": "startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9398,
                            "src": "10512:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 9442,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "10524:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 9443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "10524:15:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10512:27:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9474,
                          "nodeType": "Block",
                          "src": "10964:293:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 9470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9468,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9385,
                                      "src": "11190:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 9469,
                                      "name": "quantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9378,
                                      "src": "11200:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "11190:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f75742e",
                                    "id": 9471,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11210:35:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    },
                                    "value": "This edition is already sold out."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    }
                                  ],
                                  "id": 9467,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "11182:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11182:64:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9473,
                              "nodeType": "ExpressionStatement",
                              "src": "11182:64:40"
                            }
                          ]
                        },
                        "id": 9475,
                        "nodeType": "IfStatement",
                        "src": "10508:749:40",
                        "trueBody": {
                          "id": 9466,
                          "nodeType": "Block",
                          "src": "10541:417:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 9448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9446,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9385,
                                      "src": "10629:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 9447,
                                      "name": "permissionedQuantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9412,
                                      "src": "10639:20:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "10629:30:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c652026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "id": 9449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10661:61:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    },
                                    "value": "No permissioned tokens available & open auction not started"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    }
                                  ],
                                  "id": 9445,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10621:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10621:102:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9451,
                              "nodeType": "ExpressionStatement",
                              "src": "10621:102:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 9462,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 9454,
                                          "name": "_signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9365,
                                          "src": "10823:10:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "id": 9455,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9363,
                                          "src": "10835:10:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 9456,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9367,
                                          "src": "10847:13:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 9453,
                                        "name": "getSigner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10249,
                                        "src": "10813:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                                          "typeString": "function (bytes calldata,uint256,uint256) returns (address)"
                                        }
                                      },
                                      "id": 9457,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10813:48:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 9458,
                                          "name": "editions",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9078,
                                          "src": "10865:8:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                            "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                          }
                                        },
                                        "id": 9460,
                                        "indexExpression": {
                                          "id": 9459,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9363,
                                          "src": "10874:10:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10865:20:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                          "typeString": "struct ArtistV5.Edition storage ref"
                                        }
                                      },
                                      "id": 9461,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signerAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9114,
                                      "src": "10865:34:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "10813:86:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "id": 9463,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10917:16:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    },
                                    "value": "Invalid signer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    }
                                  ],
                                  "id": 9452,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10788:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10788:159:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9465,
                              "nodeType": "ExpressionStatement",
                              "src": "10788:159:40"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          9477
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9477,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "11343:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9537,
                            "src": "11335:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9476,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11335:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9478,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11335:15:40"
                      },
                      {
                        "id": 9495,
                        "nodeType": "UncheckedBlock",
                        "src": "11360:201:40",
                        "statements": [
                          {
                            "expression": {
                              "id": 9486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 9479,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9477,
                                "src": "11384:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9482,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9480,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9363,
                                        "src": "11395:10:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313238",
                                        "id": 9481,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11409:3:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_128_by_1",
                                          "typeString": "int_const 128"
                                        },
                                        "value": "128"
                                      },
                                      "src": "11395:17:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 9483,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "11394:19:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 9484,
                                  "name": "newNumSold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9392,
                                  "src": "11416:10:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "11394:32:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11384:42:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9487,
                            "nodeType": "ExpressionStatement",
                            "src": "11384:42:40"
                          },
                          {
                            "expression": {
                              "id": 9493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 9488,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9078,
                                    "src": "11509:8:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                    }
                                  },
                                  "id": 9490,
                                  "indexExpression": {
                                    "id": 9489,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9363,
                                    "src": "11518:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11509:20:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                    "typeString": "struct ArtistV5.Edition storage ref"
                                  }
                                },
                                "id": 9491,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "numSold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9102,
                                "src": "11509:28:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 9492,
                                "name": "newNumSold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9392,
                                "src": "11540:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "11509:41:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 9494,
                            "nodeType": "ExpressionStatement",
                            "src": "11509:41:40"
                          }
                        ]
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 9496,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9078,
                                "src": "11690:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                }
                              },
                              "id": 9498,
                              "indexExpression": {
                                "id": 9497,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9363,
                                "src": "11699:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11690:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                "typeString": "struct ArtistV5.Edition storage ref"
                              }
                            },
                            "id": 9499,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9098,
                            "src": "11690:37:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 9500,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11762,
                              "src": "11731:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 9501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11731:7:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11690:48:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9520,
                          "nodeType": "Block",
                          "src": "11873:137:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 9512,
                                        "name": "editions",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9078,
                                        "src": "11950:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                          "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                        }
                                      },
                                      "id": 9514,
                                      "indexExpression": {
                                        "id": 9513,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9363,
                                        "src": "11959:10:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "11950:20:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                        "typeString": "struct ArtistV5.Edition storage ref"
                                      }
                                    },
                                    "id": 9515,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9098,
                                    "src": "11950:37:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 9516,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11989:3:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 9517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "src": "11989:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9511,
                                  "name": "_sendFunds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10162,
                                  "src": "11939:10:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 9518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11939:60:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9519,
                              "nodeType": "ExpressionStatement",
                              "src": "11939:60:40"
                            }
                          ]
                        },
                        "id": 9521,
                        "nodeType": "IfStatement",
                        "src": "11686:324:40",
                        "trueBody": {
                          "id": 9510,
                          "nodeType": "Block",
                          "src": "11740:127:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 9503,
                                    "name": "depositedForEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9086,
                                    "src": "11812:19:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 9505,
                                  "indexExpression": {
                                    "id": 9504,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9363,
                                    "src": "11832:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11812:31:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 9506,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "11847:3:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "11847:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11812:44:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9509,
                              "nodeType": "ExpressionStatement",
                              "src": "11812:44:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 9523,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12091:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12091:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9525,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9477,
                              "src": "12103:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9522,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "12085:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12085:26:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9527,
                        "nodeType": "ExpressionStatement",
                        "src": "12085:26:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9529,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9363,
                              "src": "12144:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9530,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9477,
                              "src": "12156:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9531,
                              "name": "newNumSold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9392,
                              "src": "12165:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 9532,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12177:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12177:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9534,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9367,
                              "src": "12189:13:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9528,
                            "name": "EditionPurchased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9159,
                            "src": "12127:16:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint32,address,uint256)"
                            }
                          },
                          "id": 9535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12127:76:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9536,
                        "nodeType": "EmitStatement",
                        "src": "12122:81:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9361,
                    "nodeType": "StructuredDocumentation",
                    "src": "9062:325:40",
                    "text": "@notice Creates a new token for the given edition, and assigns it to the buyer\n @param _editionId The id of the edition to purchase\n @param _signature A signed message for authorizing permissioned purchases\n @param _ticketNumber Ticket number required for validating this buyer hasn't already bought."
                  },
                  "functionSelector": "f71e54fb",
                  "id": 9538,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "buyEdition",
                  "nameLocation": "9401:10:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9363,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "9429:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9538,
                        "src": "9421:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9362,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9421:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9365,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "9464:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9538,
                        "src": "9449:25:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 9364,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9449:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9367,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "9492:13:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9538,
                        "src": "9484:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9366,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9484:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9411:100:40"
                  },
                  "returnParameters": {
                    "id": 9369,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9529:0:40"
                  },
                  "scope": 10364,
                  "src": "9392:2818:40",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9570,
                    "nodeType": "Block",
                    "src": "12414:494:40",
                    "statements": [
                      {
                        "assignments": [
                          9545
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9545,
                            "mutability": "mutable",
                            "name": "remainingForEdition",
                            "nameLocation": "12507:19:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9570,
                            "src": "12499:27:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9544,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12499:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9553,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 9546,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9086,
                              "src": "12529:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 9548,
                            "indexExpression": {
                              "id": 9547,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9541,
                              "src": "12549:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12529:31:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 9549,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9090,
                              "src": "12563:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 9551,
                            "indexExpression": {
                              "id": 9550,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9541,
                              "src": "12583:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12563:31:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12529:65:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12499:95:40"
                      },
                      {
                        "expression": {
                          "id": 9560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9554,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9090,
                              "src": "12666:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 9556,
                            "indexExpression": {
                              "id": 9555,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9541,
                              "src": "12686:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12666:31:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 9557,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9086,
                              "src": "12700:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 9559,
                            "indexExpression": {
                              "id": 9558,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9541,
                              "src": "12720:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12700:31:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12666:65:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9561,
                        "nodeType": "ExpressionStatement",
                        "src": "12666:65:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 9563,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9078,
                                  "src": "12842:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                  }
                                },
                                "id": 9565,
                                "indexExpression": {
                                  "id": 9564,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9541,
                                  "src": "12851:10:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12842:20:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                  "typeString": "struct ArtistV5.Edition storage ref"
                                }
                              },
                              "id": 9566,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9098,
                              "src": "12842:37:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 9567,
                              "name": "remainingForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9545,
                              "src": "12881:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9562,
                            "name": "_sendFunds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10162,
                            "src": "12831:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 9568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12831:70:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9569,
                        "nodeType": "ExpressionStatement",
                        "src": "12831:70:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9539,
                    "nodeType": "StructuredDocumentation",
                    "src": "12216:141:40",
                    "text": "@notice Withdraws from the Artist to the fundingRecipient for an edition\n @param _editionId The id of the edition to withdraw from"
                  },
                  "functionSelector": "155dd5ee",
                  "id": 9571,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFunds",
                  "nameLocation": "12371:13:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9541,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12393:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9571,
                        "src": "12385:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9540,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12385:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12384:20:40"
                  },
                  "returnParameters": {
                    "id": 9543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12414:0:40"
                  },
                  "scope": 10364,
                  "src": "12362:546:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9596,
                    "nodeType": "Block",
                    "src": "13215:129:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 9587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 9582,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9078,
                                "src": "13225:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                }
                              },
                              "id": 9584,
                              "indexExpression": {
                                "id": 9583,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9574,
                                "src": "13234:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13225:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                "typeString": "struct ArtistV5.Edition storage ref"
                              }
                            },
                            "id": 9585,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9108,
                            "src": "13225:30:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9586,
                            "name": "_startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9576,
                            "src": "13258:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13225:43:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 9588,
                        "nodeType": "ExpressionStatement",
                        "src": "13225:43:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 9590,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9127,
                                "src": "13298:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$9127_$",
                                  "typeString": "type(enum ArtistV5.TimeType)"
                                }
                              },
                              "id": 9591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "START",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9125,
                              "src": "13298:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$9127",
                                "typeString": "enum ArtistV5.TimeType"
                              }
                            },
                            {
                              "id": 9592,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9574,
                              "src": "13314:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9593,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9576,
                              "src": "13326:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$9127",
                                "typeString": "enum ArtistV5.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 9589,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9168,
                            "src": "13283:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$9127_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV5.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 9594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13283:54:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9595,
                        "nodeType": "EmitStatement",
                        "src": "13278:59:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9572,
                    "nodeType": "StructuredDocumentation",
                    "src": "12914:198:40",
                    "text": "@notice Sets the start time for an edition\n @param _editionId The id of the edition to set the start time for\n @param _startTime The start time to set (in seconds since unix epoch)"
                  },
                  "functionSelector": "fbab9e04",
                  "id": 9597,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9579,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "13203:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 9580,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9578,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "13187:15:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13187:27:40"
                    }
                  ],
                  "name": "setStartTime",
                  "nameLocation": "13126:12:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9577,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9574,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13147:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9597,
                        "src": "13139:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9573,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13139:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9576,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "13166:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9597,
                        "src": "13159:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9575,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13159:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13138:39:40"
                  },
                  "returnParameters": {
                    "id": 9581,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13215:0:40"
                  },
                  "scope": 10364,
                  "src": "13117:227:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9622,
                    "nodeType": "Block",
                    "src": "13639:121:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 9613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 9608,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9078,
                                "src": "13649:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                }
                              },
                              "id": 9610,
                              "indexExpression": {
                                "id": 9609,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9600,
                                "src": "13658:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13649:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                "typeString": "struct ArtistV5.Edition storage ref"
                              }
                            },
                            "id": 9611,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9110,
                            "src": "13649:28:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9612,
                            "name": "_endTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9602,
                            "src": "13680:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13649:39:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 9614,
                        "nodeType": "ExpressionStatement",
                        "src": "13649:39:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 9616,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9127,
                                "src": "13718:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$9127_$",
                                  "typeString": "type(enum ArtistV5.TimeType)"
                                }
                              },
                              "id": 9617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "END",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9126,
                              "src": "13718:12:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$9127",
                                "typeString": "enum ArtistV5.TimeType"
                              }
                            },
                            {
                              "id": 9618,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9600,
                              "src": "13732:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9619,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9602,
                              "src": "13744:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$9127",
                                "typeString": "enum ArtistV5.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 9615,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9168,
                            "src": "13703:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$9127_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV5.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 9620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13703:50:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9621,
                        "nodeType": "EmitStatement",
                        "src": "13698:55:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9598,
                    "nodeType": "StructuredDocumentation",
                    "src": "13350:190:40",
                    "text": "@notice Sets the end time for an edition\n @param _editionId The id of the edition to set the end time for\n @param _endTime The end time to set (in seconds since unix epoch)"
                  },
                  "functionSelector": "bb314ca1",
                  "id": 9623,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9605,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "13627:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 9606,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9604,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "13611:15:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13611:27:40"
                    }
                  ],
                  "name": "setEndTime",
                  "nameLocation": "13554:10:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9600,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13573:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9623,
                        "src": "13565:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13565:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9602,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "13592:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9623,
                        "src": "13585:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9601,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13585:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13564:37:40"
                  },
                  "returnParameters": {
                    "id": 9607,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13639:0:40"
                  },
                  "scope": 10364,
                  "src": "13545:215:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9656,
                    "nodeType": "Block",
                    "src": "14088:214:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9635,
                                "name": "_newSignerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9628,
                                "src": "14106:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 9638,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14135:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 9637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14127:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9636,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14127:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14127:10:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14106:31:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                              "id": 9641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14139:28:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              },
                              "value": "Signer address cannot be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              }
                            ],
                            "id": 9634,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14098:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14098:70:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9643,
                        "nodeType": "ExpressionStatement",
                        "src": "14098:70:40"
                      },
                      {
                        "expression": {
                          "id": 9649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 9644,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9078,
                                "src": "14179:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                }
                              },
                              "id": 9646,
                              "indexExpression": {
                                "id": 9645,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9626,
                                "src": "14188:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14179:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                "typeString": "struct ArtistV5.Edition storage ref"
                              }
                            },
                            "id": 9647,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signerAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9114,
                            "src": "14179:34:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9648,
                            "name": "_newSignerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9628,
                            "src": "14216:17:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14179:54:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9650,
                        "nodeType": "ExpressionStatement",
                        "src": "14179:54:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9652,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9626,
                              "src": "14265:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9653,
                              "name": "_newSignerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9628,
                              "src": "14277:17:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9651,
                            "name": "SignerAddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9174,
                            "src": "14248:16:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address)"
                            }
                          },
                          "id": 9654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14248:47:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9655,
                        "nodeType": "EmitStatement",
                        "src": "14243:52:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9624,
                    "nodeType": "StructuredDocumentation",
                    "src": "13766:207:40",
                    "text": "@notice Sets the signature address of an edition\n @param _editionId The edition id to set the signature address for\n @param _newSignerAddress The address that will be used to sign purchases"
                  },
                  "functionSelector": "56dee996",
                  "id": 9657,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9631,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "14076:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 9632,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9630,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "14060:15:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14060:27:40"
                    }
                  ],
                  "name": "setSignerAddress",
                  "nameLocation": "13987:16:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9626,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "14012:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9657,
                        "src": "14004:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14004:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9628,
                        "mutability": "mutable",
                        "name": "_newSignerAddress",
                        "nameLocation": "14032:17:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9657,
                        "src": "14024:25:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9627,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14024:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14003:47:40"
                  },
                  "returnParameters": {
                    "id": 9633,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14088:0:40"
                  },
                  "scope": 10364,
                  "src": "13978:324:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9693,
                    "nodeType": "Block",
                    "src": "14654:337:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 9669,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9078,
                                    "src": "14756:8:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                    }
                                  },
                                  "id": 9671,
                                  "indexExpression": {
                                    "id": 9670,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9660,
                                    "src": "14765:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14756:20:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                    "typeString": "struct ArtistV5.Edition storage ref"
                                  }
                                },
                                "id": 9672,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signerAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9114,
                                "src": "14756:34:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 9675,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14802:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 9674,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14794:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9673,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14794:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14794:10:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14756:48:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                              "id": 9678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14806:28:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              },
                              "value": "Edition must have a signer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              }
                            ],
                            "id": 9668,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14748:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14748:87:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9680,
                        "nodeType": "ExpressionStatement",
                        "src": "14748:87:40"
                      },
                      {
                        "expression": {
                          "id": 9686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 9681,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9078,
                                "src": "14846:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                }
                              },
                              "id": 9683,
                              "indexExpression": {
                                "id": 9682,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9660,
                                "src": "14855:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14846:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                "typeString": "struct ArtistV5.Edition storage ref"
                              }
                            },
                            "id": 9684,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "permissionedQuantity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9112,
                            "src": "14846:41:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9685,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9662,
                            "src": "14890:21:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "14846:65:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 9687,
                        "nodeType": "ExpressionStatement",
                        "src": "14846:65:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9689,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9660,
                              "src": "14950:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9690,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9662,
                              "src": "14962:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 9688,
                            "name": "PermissionedQuantitySet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "14926:23:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint32)"
                            }
                          },
                          "id": 9691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14926:58:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9692,
                        "nodeType": "EmitStatement",
                        "src": "14921:63:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9658,
                    "nodeType": "StructuredDocumentation",
                    "src": "14308:201:40",
                    "text": "@notice Sets the permissioned quantity for an edition\n @param _editionId The edition id to set the permissioned quantity for\n @param _permissionedQuantity The new permissiond quantity"
                  },
                  "functionSelector": "52e25bf2",
                  "id": 9694,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9665,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "14638:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 9666,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9664,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "14622:15:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14622:27:40"
                    }
                  ],
                  "name": "setPermissionedQuantity",
                  "nameLocation": "14523:23:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9660,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "14555:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9694,
                        "src": "14547:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9659,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14547:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9662,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "14574:21:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9694,
                        "src": "14567:28:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 9661,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14567:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14546:50:40"
                  },
                  "returnParameters": {
                    "id": 9667,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14654:0:40"
                  },
                  "scope": 10364,
                  "src": "14514:477:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9721,
                    "nodeType": "Block",
                    "src": "15217:153:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 9711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 9705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 9701,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "15235:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 9702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15235:12:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 9703,
                                    "name": "soundRecoveryAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10128,
                                    "src": "15251:20:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 9704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15251:22:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15235:38:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 9710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 9706,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "15277:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 9707,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15277:12:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 9708,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11762,
                                    "src": "15293:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 9709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15293:7:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15277:23:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "15235:65:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "756e617574686f72697a6564",
                              "id": 9712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15302:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 9700,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15227:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15227:90:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9714,
                        "nodeType": "ExpressionStatement",
                        "src": "15227:90:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9718,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9697,
                              "src": "15353:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 9715,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "15328:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ArtistV5_$10364_$",
                                "typeString": "type(contract super ArtistV5)"
                              }
                            },
                            "id": 9717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11819,
                            "src": "15328:24:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 9719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15328:35:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9720,
                        "nodeType": "ExpressionStatement",
                        "src": "15328:35:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9695,
                    "nodeType": "StructuredDocumentation",
                    "src": "14997:161:40",
                    "text": "@notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\n @param _newOwner The new owner of the contract"
                  },
                  "functionSelector": "75a8f08f",
                  "id": 9722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setOwnerOverride",
                  "nameLocation": "15172:16:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9697,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "15197:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9722,
                        "src": "15189:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9696,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15189:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15188:19:40"
                  },
                  "returnParameters": {
                    "id": 9699,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15217:0:40"
                  },
                  "scope": 10364,
                  "src": "15163:207:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9762,
                    "nodeType": "Block",
                    "src": "15626:263:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 9746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 9739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 9734,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9078,
                                      "src": "15657:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                      }
                                    },
                                    "id": 9736,
                                    "indexExpression": {
                                      "id": 9735,
                                      "name": "_editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9725,
                                      "src": "15666:10:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15657:20:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                      "typeString": "struct ArtistV5.Edition storage ref"
                                    }
                                  },
                                  "id": 9737,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "quantity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9104,
                                  "src": "15657:29:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 9738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15689:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15657:33:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 9745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 9740,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9078,
                                      "src": "15694:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                      }
                                    },
                                    "id": 9742,
                                    "indexExpression": {
                                      "id": 9741,
                                      "name": "_editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9725,
                                      "src": "15703:10:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15694:20:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                      "typeString": "struct ArtistV5.Edition storage ref"
                                    }
                                  },
                                  "id": 9743,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "permissionedQuantity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9112,
                                  "src": "15694:41:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 9744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15738:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15694:45:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "15657:82:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e6f6e6578697374656e742065646974696f6e",
                              "id": 9747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15753:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163",
                                "typeString": "literal_string \"Nonexistent edition\""
                              },
                              "value": "Nonexistent edition"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163",
                                "typeString": "literal_string \"Nonexistent edition\""
                              }
                            ],
                            "id": 9733,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15636:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15636:148:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9749,
                        "nodeType": "ExpressionStatement",
                        "src": "15636:148:40"
                      },
                      {
                        "expression": {
                          "id": 9755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 9750,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9078,
                                "src": "15795:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                }
                              },
                              "id": 9752,
                              "indexExpression": {
                                "id": 9751,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9725,
                                "src": "15804:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15795:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                "typeString": "struct ArtistV5.Edition storage ref"
                              }
                            },
                            "id": 9753,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "baseURI",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9116,
                            "src": "15795:28:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9754,
                            "name": "_baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9727,
                            "src": "15826:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "15795:39:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 9756,
                        "nodeType": "ExpressionStatement",
                        "src": "15795:39:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9758,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9725,
                              "src": "15861:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9759,
                              "name": "_baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9727,
                              "src": "15873:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 9757,
                            "name": "BaseURISet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9186,
                            "src": "15850:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,string memory)"
                            }
                          },
                          "id": 9760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15850:32:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9761,
                        "nodeType": "EmitStatement",
                        "src": "15845:37:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9723,
                    "nodeType": "StructuredDocumentation",
                    "src": "15376:135:40",
                    "text": "@notice Sets the base URI for an edition\n @param _editionId The target edition's id\n @param _baseURI The new base URI"
                  },
                  "functionSelector": "79672692",
                  "id": 9763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9730,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "15614:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 9731,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 9729,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "15598:15:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15598:27:40"
                    }
                  ],
                  "name": "setEditionBaseURI",
                  "nameLocation": "15525:17:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9728,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9725,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "15551:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9763,
                        "src": "15543:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15543:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9727,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "15579:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9763,
                        "src": "15563:24:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9726,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15563:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15542:46:40"
                  },
                  "returnParameters": {
                    "id": 9732,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15626:0:40"
                  },
                  "scope": 10364,
                  "src": "15516:373:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1051
                  ],
                  "body": {
                    "id": 9823,
                    "nodeType": "Block",
                    "src": "16272:615:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 9774,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9766,
                                  "src": "16298:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9773,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "16290:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 9775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16290:17:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 9776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16309:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 9772,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16282:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16282:77:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9778,
                        "nodeType": "ExpressionStatement",
                        "src": "16282:77:40"
                      },
                      {
                        "assignments": [
                          9780
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9780,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "16378:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9823,
                            "src": "16370:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9779,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16370:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9784,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9782,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9766,
                              "src": "16405:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9781,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9995,
                            "src": "16390:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 9783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16390:24:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16370:44:40"
                      },
                      {
                        "assignments": [
                          9786
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9786,
                            "mutability": "mutable",
                            "name": "editionBaseURI",
                            "nameLocation": "16439:14:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9823,
                            "src": "16425:28:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 9785,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "16425:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9791,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 9787,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9078,
                              "src": "16456:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                              }
                            },
                            "id": 9789,
                            "indexExpression": {
                              "id": 9788,
                              "name": "editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9780,
                              "src": "16465:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16456:19:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_storage",
                              "typeString": "struct ArtistV5.Edition storage ref"
                            }
                          },
                          "id": 9790,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "baseURI",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9116,
                          "src": "16456:27:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16425:58:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 9794,
                                  "name": "editionBaseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9786,
                                  "src": "16667:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 9793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16661:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 9792,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16661:5:40",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16661:21:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 9796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "16661:28:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 9797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16692:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "16661:32:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9811,
                        "nodeType": "IfStatement",
                        "src": "16657:145:40",
                        "trueBody": {
                          "id": 9810,
                          "nodeType": "Block",
                          "src": "16695:107:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9802,
                                    "name": "editionBaseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9786,
                                    "src": "16730:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 9805,
                                        "name": "_tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9766,
                                        "src": "16763:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 9803,
                                        "name": "Strings",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4271,
                                        "src": "16746:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                          "typeString": "type(library Strings)"
                                        }
                                      },
                                      "id": 9804,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4133,
                                      "src": "16746:16:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 9806,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16746:26:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f6d657461646174612e6a736f6e",
                                    "id": 9807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16774:16:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c",
                                      "typeString": "literal_string \"/metadata.json\""
                                    },
                                    "value": "/metadata.json"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c",
                                      "typeString": "literal_string \"/metadata.json\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 9800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16716:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 9799,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16716:6:40",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 9801,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "16716:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 9808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16716:75:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 9771,
                              "id": 9809,
                              "nodeType": "Return",
                              "src": "16709:82:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 9815,
                                "name": "_contractBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10363,
                                "src": "16833:16:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 9816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16833:18:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 9819,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9766,
                                  "src": "16870:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 9817,
                                  "name": "Strings",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4271,
                                  "src": "16853:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                    "typeString": "type(library Strings)"
                                  }
                                },
                                "id": 9818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4133,
                                "src": "16853:16:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 9820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16853:26:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 9813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16819:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 9812,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "16819:6:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "16819:13:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 9821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16819:61:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 9771,
                        "id": 9822,
                        "nodeType": "Return",
                        "src": "16812:68:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9764,
                    "nodeType": "StructuredDocumentation",
                    "src": "15998:188:40",
                    "text": "@notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\n @dev Concatenate the baseURI and tokenId, to create URI."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 9824,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "16200:8:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9768,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16239:8:40"
                  },
                  "parameters": {
                    "id": 9767,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9766,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "16217:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9824,
                        "src": "16209:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9765,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16209:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16208:18:40"
                  },
                  "returnParameters": {
                    "id": 9771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9770,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9824,
                        "src": "16257:13:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9769,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "16257:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16256:15:40"
                  },
                  "scope": 10364,
                  "src": "16191:696:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9838,
                    "nodeType": "Block",
                    "src": "17071:71:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 9833,
                                "name": "_contractBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10363,
                                "src": "17102:16:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 9834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17102:18:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "73746f726566726f6e74",
                              "id": 9835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17122:12:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                "typeString": "literal_string \"storefront\""
                              },
                              "value": "storefront"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                "typeString": "literal_string \"storefront\""
                              }
                            ],
                            "expression": {
                              "id": 9831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17088:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 9830,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "17088:6:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "17088:13:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 9836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17088:47:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 9829,
                        "id": 9837,
                        "nodeType": "Return",
                        "src": "17081:54:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9825,
                    "nodeType": "StructuredDocumentation",
                    "src": "16893:114:40",
                    "text": "@notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront"
                  },
                  "functionSelector": "e8a3d485",
                  "id": 9839,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "17021:11:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9826,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17032:2:40"
                  },
                  "returnParameters": {
                    "id": 9829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9828,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9839,
                        "src": "17056:13:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 9827,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17056:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17055:15:40"
                  },
                  "scope": 10364,
                  "src": "17012:130:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    149
                  ],
                  "body": {
                    "id": 9897,
                    "nodeType": "Block",
                    "src": "17458:371:40",
                    "statements": [
                      {
                        "assignments": [
                          9853
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9853,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "17476:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9897,
                            "src": "17468:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9852,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17468:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9857,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9855,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9842,
                              "src": "17503:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9854,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9995,
                            "src": "17488:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 9856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17488:24:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17468:44:40"
                      },
                      {
                        "assignments": [
                          9860
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9860,
                            "mutability": "mutable",
                            "name": "edition",
                            "nameLocation": "17537:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9897,
                            "src": "17522:22:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$9117_memory_ptr",
                              "typeString": "struct ArtistV5.Edition"
                            },
                            "typeName": {
                              "id": 9859,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 9858,
                                "name": "Edition",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 9117,
                                "src": "17522:7:40"
                              },
                              "referencedDeclaration": 9117,
                              "src": "17522:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_storage_ptr",
                                "typeString": "struct ArtistV5.Edition"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9864,
                        "initialValue": {
                          "baseExpression": {
                            "id": 9861,
                            "name": "editions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9078,
                            "src": "17547:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                              "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                            }
                          },
                          "id": 9863,
                          "indexExpression": {
                            "id": 9862,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9853,
                            "src": "17556:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17547:19:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$9117_storage",
                            "typeString": "struct ArtistV5.Edition storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17522:44:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 9865,
                              "name": "edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9860,
                              "src": "17581:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$9117_memory_ptr",
                                "typeString": "struct ArtistV5.Edition memory"
                              }
                            },
                            "id": 9866,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9098,
                            "src": "17581:24:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 9869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17617:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 9868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17609:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9867,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17609:7:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17609:12:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17581:40:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9878,
                        "nodeType": "IfStatement",
                        "src": "17577:107:40",
                        "trueBody": {
                          "id": 9877,
                          "nodeType": "Block",
                          "src": "17623:61:40",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "expression": {
                                      "id": 9872,
                                      "name": "edition",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9860,
                                      "src": "17645:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$9117_memory_ptr",
                                        "typeString": "struct ArtistV5.Edition memory"
                                      }
                                    },
                                    "id": 9873,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9098,
                                    "src": "17645:24:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 9874,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17671:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 9875,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17644:29:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(address payable,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 9851,
                              "id": 9876,
                              "nodeType": "Return",
                              "src": "17637:36:40"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          9880
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9880,
                            "mutability": "mutable",
                            "name": "royaltyBPS",
                            "nameLocation": "17702:10:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9897,
                            "src": "17694:18:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9879,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17694:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9886,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 9883,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9860,
                                "src": "17723:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$9117_memory_ptr",
                                  "typeString": "struct ArtistV5.Edition memory"
                                }
                              },
                              "id": 9884,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "royaltyBPS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9106,
                              "src": "17723:18:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 9882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17715:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 9881,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17715:7:40",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 9885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17715:27:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17694:48:40"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 9887,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9860,
                                "src": "17761:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$9117_memory_ptr",
                                  "typeString": "struct ArtistV5.Edition memory"
                                }
                              },
                              "id": 9888,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9098,
                              "src": "17761:24:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9891,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9889,
                                      "name": "_salePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9844,
                                      "src": "17788:10:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 9890,
                                      "name": "royaltyBPS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9880,
                                      "src": "17801:10:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "17788:23:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 9892,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17787:25:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "31305f303030",
                                "id": 9893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17815:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10_000"
                              },
                              "src": "17787:34:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 9895,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "17760:62:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "functionReturnParameters": 9851,
                        "id": 9896,
                        "nodeType": "Return",
                        "src": "17753:69:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9840,
                    "nodeType": "StructuredDocumentation",
                    "src": "17148:129:40",
                    "text": "@notice Get royalty information for token\n @param _tokenId token id\n @param _salePrice Sale price for the token"
                  },
                  "functionSelector": "2a55205a",
                  "id": 9898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "17291:11:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9846,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17379:8:40"
                  },
                  "parameters": {
                    "id": 9845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9842,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "17311:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9898,
                        "src": "17303:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17303:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9844,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "17329:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9898,
                        "src": "17321:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17321:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17302:38:40"
                  },
                  "returnParameters": {
                    "id": 9851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9848,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "17413:16:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9898,
                        "src": "17405:24:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9847,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17405:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9850,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "17439:13:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9898,
                        "src": "17431:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9849,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17431:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17404:49:40"
                  },
                  "scope": 10364,
                  "src": "17282:547:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9931,
                    "nodeType": "Block",
                    "src": "17958:174:40",
                    "statements": [
                      {
                        "assignments": [
                          9905
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9905,
                            "mutability": "mutable",
                            "name": "total",
                            "nameLocation": "17976:5:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9931,
                            "src": "17968:13:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9904,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17968:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9907,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 9906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17984:1:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17968:17:40"
                      },
                      {
                        "body": {
                          "id": 9927,
                          "nodeType": "Block",
                          "src": "18050:54:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9925,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9920,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9905,
                                  "src": "18064:5:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 9921,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9078,
                                      "src": "18073:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$9117_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV5.Edition storage ref)"
                                      }
                                    },
                                    "id": 9923,
                                    "indexExpression": {
                                      "id": 9922,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9909,
                                      "src": "18082:2:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18073:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$9117_storage",
                                      "typeString": "struct ArtistV5.Edition storage ref"
                                    }
                                  },
                                  "id": 9924,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "numSold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9102,
                                  "src": "18073:20:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "18064:29:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9926,
                              "nodeType": "ExpressionStatement",
                              "src": "18064:29:40"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9912,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9909,
                            "src": "18016:2:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 9913,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9073,
                                "src": "18021:11:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 9914,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "18021:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 9915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18021:21:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18016:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9928,
                        "initializationExpression": {
                          "assignments": [
                            9909
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9909,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "18008:2:40",
                              "nodeType": "VariableDeclaration",
                              "scope": 9928,
                              "src": "18000:10:40",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9908,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18000:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 9911,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 9910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18013:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18000:14:40"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 9918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "18044:4:40",
                            "subExpression": {
                              "id": 9917,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9909,
                              "src": "18044:2:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9919,
                          "nodeType": "ExpressionStatement",
                          "src": "18044:4:40"
                        },
                        "nodeType": "ForStatement",
                        "src": "17995:109:40"
                      },
                      {
                        "expression": {
                          "id": 9929,
                          "name": "total",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9905,
                          "src": "18120:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9903,
                        "id": 9930,
                        "nodeType": "Return",
                        "src": "18113:12:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9899,
                    "nodeType": "StructuredDocumentation",
                    "src": "17835:63:40",
                    "text": "@notice The total number of tokens created by this contract"
                  },
                  "functionSelector": "18160ddd",
                  "id": 9932,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "17912:11:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9900,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17923:2:40"
                  },
                  "returnParameters": {
                    "id": 9903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9902,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9932,
                        "src": "17949:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17949:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17948:9:40"
                  },
                  "scope": 10364,
                  "src": "17903:229:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    940,
                    2986
                  ],
                  "body": {
                    "id": 9955,
                    "nodeType": "Block",
                    "src": "18483:142:40",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9944,
                                    "name": "IERC2981Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 150,
                                    "src": "18517:19:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  ],
                                  "id": 9943,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "18512:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 9945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18512:25:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981Upgradeable_$150",
                                  "typeString": "type(contract IERC2981Upgradeable)"
                                }
                              },
                              "id": 9946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "18512:37:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 9947,
                              "name": "_interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9935,
                              "src": "18553:12:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "18512:53:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 9951,
                                "name": "_interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9935,
                                "src": "18605:12:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 9949,
                                "name": "ERC721Upgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "18569:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract ERC721Upgradeable)"
                                }
                              },
                              "id": 9950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 940,
                              "src": "18569:35:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 9952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18569:49:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18512:106:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9942,
                        "id": 9954,
                        "nodeType": "Return",
                        "src": "18493:125:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9933,
                    "nodeType": "StructuredDocumentation",
                    "src": "18138:181:40",
                    "text": "@notice Informs other contracts which interfaces this contract supports\n @param _interfaceId The interface id to check\n @dev https://eips.ethereum.org/EIPS/eip-165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 9956,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "18333:17:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9939,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 9937,
                        "name": "ERC721Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1718,
                        "src": "18417:17:40"
                      },
                      {
                        "id": 9938,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "18436:18:40"
                      }
                    ],
                    "src": "18408:47:40"
                  },
                  "parameters": {
                    "id": 9936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9935,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "18358:12:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9956,
                        "src": "18351:19:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 9934,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "18351:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18350:21:40"
                  },
                  "returnParameters": {
                    "id": 9942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9941,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9956,
                        "src": "18473:4:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9940,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18473:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18472:6:40"
                  },
                  "scope": 10364,
                  "src": "18324:301:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9968,
                    "nodeType": "Block",
                    "src": "18750:117:40",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 9962,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9073,
                                "src": "18767:11:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 9963,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "18767:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 9964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18767:21:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 9965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18791:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "18767:25:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9961,
                        "id": 9967,
                        "nodeType": "Return",
                        "src": "18760:32:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9957,
                    "nodeType": "StructuredDocumentation",
                    "src": "18631:58:40",
                    "text": "@notice returns the number of editions for this artist"
                  },
                  "functionSelector": "4bf44026",
                  "id": 9969,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "editionCount",
                  "nameLocation": "18703:12:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9958,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18715:2:40"
                  },
                  "returnParameters": {
                    "id": 9961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9960,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9969,
                        "src": "18741:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18741:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18740:9:40"
                  },
                  "scope": 10364,
                  "src": "18694:173:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9994,
                    "nodeType": "Block",
                    "src": "19038:356:40",
                    "statements": [
                      {
                        "assignments": [
                          9978
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9978,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "19120:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9994,
                            "src": "19112:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9977,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19112:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9982,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9979,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9972,
                            "src": "19132:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "313238",
                            "id": 9980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19144:3:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "19132:15:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19112:35:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9983,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9978,
                            "src": "19245:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19258:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19245:14:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9991,
                        "nodeType": "IfStatement",
                        "src": "19241:120:40",
                        "trueBody": {
                          "id": 9990,
                          "nodeType": "Block",
                          "src": "19261:100:40",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 9986,
                                  "name": "_tokenToEdition",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9082,
                                  "src": "19325:15:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 9988,
                                "indexExpression": {
                                  "id": 9987,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9972,
                                  "src": "19341:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19325:25:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 9976,
                              "id": 9989,
                              "nodeType": "Return",
                              "src": "19318:32:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 9992,
                          "name": "editionId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9978,
                          "src": "19378:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9976,
                        "id": 9993,
                        "nodeType": "Return",
                        "src": "19371:16:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9970,
                    "nodeType": "StructuredDocumentation",
                    "src": "18873:88:40",
                    "text": "@notice Returns the edition id for a given token id\n @param _tokenId token id"
                  },
                  "functionSelector": "602787ed",
                  "id": 9995,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenToEdition",
                  "nameLocation": "18975:14:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9972,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "18998:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9995,
                        "src": "18990:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9971,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18990:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18989:18:40"
                  },
                  "returnParameters": {
                    "id": 9976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9975,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9995,
                        "src": "19029:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9974,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19029:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19028:9:40"
                  },
                  "scope": 10364,
                  "src": "18966:428:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10042,
                    "nodeType": "Block",
                    "src": "19620:211:40",
                    "statements": [
                      {
                        "assignments": [
                          10009
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10009,
                            "mutability": "mutable",
                            "name": "owners",
                            "nameLocation": "19647:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10042,
                            "src": "19630:23:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10007,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19630:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 10008,
                              "nodeType": "ArrayTypeName",
                              "src": "19630:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10016,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 10013,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9999,
                                "src": "19670:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 10014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "19670:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19656:13:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10010,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19660:7:40",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 10011,
                              "nodeType": "ArrayTypeName",
                              "src": "19660:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 10015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19656:31:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19630:57:40"
                      },
                      {
                        "body": {
                          "id": 10038,
                          "nodeType": "Block",
                          "src": "19744:58:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 10036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 10028,
                                    "name": "owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10009,
                                    "src": "19758:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 10030,
                                  "indexExpression": {
                                    "id": 10029,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10018,
                                    "src": "19765:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19758:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 10032,
                                        "name": "_tokenIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9999,
                                        "src": "19778:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 10034,
                                      "indexExpression": {
                                        "id": 10033,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10018,
                                        "src": "19788:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "19778:12:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 10031,
                                    "name": "ownerOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 992,
                                    "src": "19770:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view returns (address)"
                                    }
                                  },
                                  "id": 10035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19770:21:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "19758:33:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 10037,
                              "nodeType": "ExpressionStatement",
                              "src": "19758:33:40"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10021,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10018,
                            "src": "19717:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 10022,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9999,
                              "src": "19721:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 10023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "19721:16:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19717:20:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10039,
                        "initializationExpression": {
                          "assignments": [
                            10018
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10018,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "19710:1:40",
                              "nodeType": "VariableDeclaration",
                              "scope": 10039,
                              "src": "19702:9:40",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10017,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19702:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 10020,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 10019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19714:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "19702:13:40"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 10026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "19739:3:40",
                            "subExpression": {
                              "id": 10025,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10018,
                              "src": "19739:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10027,
                          "nodeType": "ExpressionStatement",
                          "src": "19739:3:40"
                        },
                        "nodeType": "ForStatement",
                        "src": "19697:105:40"
                      },
                      {
                        "expression": {
                          "id": 10040,
                          "name": "owners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10009,
                          "src": "19818:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 10004,
                        "id": 10041,
                        "nodeType": "Return",
                        "src": "19811:13:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9996,
                    "nodeType": "StructuredDocumentation",
                    "src": "19400:118:40",
                    "text": "@notice Returns a list of owner addresses for a given list of token ids\n @param _tokenIds List of token ids"
                  },
                  "functionSelector": "52f5c2e4",
                  "id": 10043,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownersOfTokenIds",
                  "nameLocation": "19532:16:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9999,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nameLocation": "19568:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10043,
                        "src": "19549:28:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9997,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "19549:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9998,
                          "nodeType": "ArrayTypeName",
                          "src": "19549:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19548:30:40"
                  },
                  "returnParameters": {
                    "id": 10004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10003,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10043,
                        "src": "19602:16:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10001,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "19602:7:40",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10002,
                          "nodeType": "ArrayTypeName",
                          "src": "19602:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19601:18:40"
                  },
                  "scope": 10364,
                  "src": "19523:308:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10099,
                    "nodeType": "Block",
                    "src": "20194:308:40",
                    "statements": [
                      {
                        "assignments": [
                          10059
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10059,
                            "mutability": "mutable",
                            "name": "claimed",
                            "nameLocation": "20218:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10099,
                            "src": "20204:21:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10057,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "20204:4:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10058,
                              "nodeType": "ArrayTypeName",
                              "src": "20204:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10066,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 10063,
                                "name": "_ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10049,
                                "src": "20239:14:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 10064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "20239:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "20228:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bool[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10060,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "20232:4:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10061,
                              "nodeType": "ArrayTypeName",
                              "src": "20232:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            }
                          },
                          "id": 10065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20228:33:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20204:57:40"
                      },
                      {
                        "body": {
                          "id": 10095,
                          "nodeType": "Block",
                          "src": "20324:147:40",
                          "statements": [
                            {
                              "assignments": [
                                10079,
                                null,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10079,
                                  "mutability": "mutable",
                                  "name": "storedBit",
                                  "nameLocation": "20347:9:40",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10095,
                                  "src": "20339:17:40",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 10078,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20339:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null,
                                null,
                                null
                              ],
                              "id": 10086,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 10081,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10046,
                                    "src": "20389:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 10082,
                                      "name": "_ticketNumbers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10049,
                                      "src": "20401:14:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 10084,
                                    "indexExpression": {
                                      "id": 10083,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10068,
                                      "src": "20416:1:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "20401:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10080,
                                  "name": "_getBitForTicketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10317,
                                  "src": "20366:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 10085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20366:53:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20338:81:40"
                            },
                            {
                              "expression": {
                                "id": 10093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 10087,
                                    "name": "claimed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10059,
                                    "src": "20433:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 10089,
                                  "indexExpression": {
                                    "id": 10088,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10068,
                                    "src": "20441:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "20433:10:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10092,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 10090,
                                    "name": "storedBit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10079,
                                    "src": "20446:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 10091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20459:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "20446:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "20433:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10094,
                              "nodeType": "ExpressionStatement",
                              "src": "20433:27:40"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10071,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10068,
                            "src": "20292:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 10072,
                              "name": "_ticketNumbers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10049,
                              "src": "20296:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 10073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "20296:21:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20292:25:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10096,
                        "initializationExpression": {
                          "assignments": [
                            10068
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10068,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "20285:1:40",
                              "nodeType": "VariableDeclaration",
                              "scope": 10096,
                              "src": "20277:9:40",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10067,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20277:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 10070,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 10069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20289:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20277:13:40"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 10076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "20319:3:40",
                            "subExpression": {
                              "id": 10075,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10068,
                              "src": "20319:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10077,
                          "nodeType": "ExpressionStatement",
                          "src": "20319:3:40"
                        },
                        "nodeType": "ForStatement",
                        "src": "20272:199:40"
                      },
                      {
                        "expression": {
                          "id": 10097,
                          "name": "claimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10059,
                          "src": "20488:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "functionReturnParameters": 10054,
                        "id": 10098,
                        "nodeType": "Return",
                        "src": "20481:14:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10044,
                    "nodeType": "StructuredDocumentation",
                    "src": "19837:203:40",
                    "text": "@notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\n @param _editionId Edition id\n @param _ticketNumbers List of ticket numbers (indexes)"
                  },
                  "functionSelector": "065d5b85",
                  "id": 10100,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkTicketNumbers",
                  "nameLocation": "20054:18:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10050,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10046,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "20081:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10100,
                        "src": "20073:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10045,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20073:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10049,
                        "mutability": "mutable",
                        "name": "_ticketNumbers",
                        "nameLocation": "20112:14:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10100,
                        "src": "20093:33:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10047,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20093:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10048,
                          "nodeType": "ArrayTypeName",
                          "src": "20093:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20072:55:40"
                  },
                  "returnParameters": {
                    "id": 10054,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10053,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10100,
                        "src": "20175:13:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10051,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "20175:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 10052,
                          "nodeType": "ArrayTypeName",
                          "src": "20175:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20174:15:40"
                  },
                  "scope": 10364,
                  "src": "20045:457:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10127,
                    "nodeType": "Block",
                    "src": "20679:276:40",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10106,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "20693:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "20693:13:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 10108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20710:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "20693:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 10113,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "20797:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 10114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "20797:13:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 10115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20814:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "20797:18:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 10124,
                            "nodeType": "Block",
                            "src": "20897:52:40",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "756e737570706f7274656420636861696e",
                                      "id": 10121,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20918:19:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45",
                                        "typeString": "literal_string \"unsupported chain\""
                                      },
                                      "value": "unsupported chain"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45",
                                        "typeString": "literal_string \"unsupported chain\""
                                      }
                                    ],
                                    "id": 10120,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "20911:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 10122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20911:27:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 10123,
                                "nodeType": "ExpressionStatement",
                                "src": "20911:27:40"
                              }
                            ]
                          },
                          "id": 10125,
                          "nodeType": "IfStatement",
                          "src": "20793:156:40",
                          "trueBody": {
                            "id": 10119,
                            "nodeType": "Block",
                            "src": "20817:74:40",
                            "statements": [
                              {
                                "expression": {
                                  "hexValue": "307865653335453934364464373345463738643335323435346333463931356532634130613039643837",
                                  "id": 10117,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20838:42:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "value": "0xee35E946Dd73EF78d352454c3F915e2cA0a09d87"
                                },
                                "functionReturnParameters": 10105,
                                "id": 10118,
                                "nodeType": "Return",
                                "src": "20831:49:40"
                              }
                            ]
                          }
                        },
                        "id": 10126,
                        "nodeType": "IfStatement",
                        "src": "20689:260:40",
                        "trueBody": {
                          "id": 10112,
                          "nodeType": "Block",
                          "src": "20713:74:40",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "307838353861393235313134383537313543666237353466333937613738393462373732346337416264",
                                "id": 10110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20734:42:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "value": "0x858a92511485715Cfb754f397a7894b7724c7Abd"
                              },
                              "functionReturnParameters": 10105,
                              "id": 10111,
                              "nodeType": "Return",
                              "src": "20727:49:40"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10101,
                    "nodeType": "StructuredDocumentation",
                    "src": "20508:96:40",
                    "text": "@notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract"
                  },
                  "functionSelector": "0bcca831",
                  "id": 10128,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "soundRecoveryAddress",
                  "nameLocation": "20618:20:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10102,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20638:2:40"
                  },
                  "returnParameters": {
                    "id": 10105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10104,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10128,
                        "src": "20670:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10103,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20670:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20669:9:40"
                  },
                  "scope": 10364,
                  "src": "20609:346:40",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10161,
                    "nodeType": "Block",
                    "src": "21288:235:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 10139,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "21314:4:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ArtistV5_$10364",
                                        "typeString": "contract ArtistV5"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ArtistV5_$10364",
                                        "typeString": "contract ArtistV5"
                                      }
                                    ],
                                    "id": 10138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21306:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 10137,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21306:7:40",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21306:13:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 10141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "21306:21:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 10142,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10133,
                                "src": "21331:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21306:32:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                              "id": 10144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21340:31:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              },
                              "value": "Insufficient balance for send"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              }
                            ],
                            "id": 10136,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21298:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21298:74:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10146,
                        "nodeType": "ExpressionStatement",
                        "src": "21298:74:40"
                      },
                      {
                        "assignments": [
                          10148,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10148,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "21389:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10161,
                            "src": "21384:12:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10147,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "21384:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 10155,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 10153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21434:2:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 10149,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10131,
                                "src": "21402:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 10150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "21402:15:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 10152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 10151,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10133,
                                "src": "21425:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "21402:31:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 10154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21402:35:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21383:54:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10157,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10148,
                              "src": "21455:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e74206d61792068617665207265766572746564",
                              "id": 10158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21464:51:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              },
                              "value": "Unable to send value: recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              }
                            ],
                            "id": 10156,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21447:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21447:69:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10160,
                        "nodeType": "ExpressionStatement",
                        "src": "21447:69:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10129,
                    "nodeType": "StructuredDocumentation",
                    "src": "21067:143:40",
                    "text": "@notice Sends funds to an address\n @param _recipient The address to send funds to\n @param _amount The amount of funds to send"
                  },
                  "id": 10162,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendFunds",
                  "nameLocation": "21224:10:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10131,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "21251:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10162,
                        "src": "21235:26:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 10130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21235:15:40",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10133,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "21271:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10162,
                        "src": "21263:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21263:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21234:45:40"
                  },
                  "returnParameters": {
                    "id": 10135,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21288:0:40"
                  },
                  "scope": 10364,
                  "src": "21215:308:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 10248,
                    "nodeType": "Block",
                    "src": "21960:1062:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10175,
                                "name": "_ticketNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10169,
                                "src": "22146:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                },
                                "id": 10178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 10176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22162:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 10177,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22165:2:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "22162:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                }
                              },
                              "src": "22146:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                              "id": 10180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22169:27:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              },
                              "value": "Ticket number exceeds max"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              }
                            ],
                            "id": 10174,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22138:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22138:59:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10182,
                        "nodeType": "ExpressionStatement",
                        "src": "22138:59:40"
                      },
                      {
                        "assignments": [
                          10184,
                          10186,
                          10188,
                          10190
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10184,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "22261:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10248,
                            "src": "22253:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10183,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22253:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10186,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "22292:10:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10248,
                            "src": "22284:18:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10185,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22284:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10188,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "22324:16:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10248,
                            "src": "22316:24:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10187,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22316:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10190,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "22362:16:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10248,
                            "src": "22354:24:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10189,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22354:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10195,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10192,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10167,
                              "src": "22414:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10193,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10169,
                              "src": "22426:13:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10191,
                            "name": "_getBitForTicketNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10317,
                            "src": "22391:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 10194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22391:49:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22239:201:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10197,
                                "name": "storedBit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10184,
                                "src": "22459:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 10198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22472:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22459:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c726561647920636c61696d6564",
                              "id": 10200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22475:46:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              },
                              "value": "Invalid ticket number or NFT already claimed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              }
                            ],
                            "id": 10196,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22451:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22451:71:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10202,
                        "nodeType": "ExpressionStatement",
                        "src": "22451:71:40"
                      },
                      {
                        "expression": {
                          "id": 10217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 10203,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9096,
                                "src": "22607:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 10206,
                              "indexExpression": {
                                "id": 10204,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10167,
                                "src": "22621:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22607:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10207,
                            "indexExpression": {
                              "id": 10205,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10190,
                              "src": "22633:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22607:43:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 10208,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10186,
                              "src": "22653:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 10211,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "22675:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 10210,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22667:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 10209,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22667:7:40",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 10212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22667:10:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "id": 10213,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10188,
                                    "src": "22681:16:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "22667:30:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 10215,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "22666:32:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "22653:45:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22607:91:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10218,
                        "nodeType": "ExpressionStatement",
                        "src": "22607:91:40"
                      },
                      {
                        "assignments": [
                          10220
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10220,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "22717:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10248,
                            "src": "22709:14:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10219,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "22709:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10242,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 10224,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22783:10:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 10225,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9065,
                                  "src": "22811:16:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 10229,
                                          "name": "PERMISSIONED_SALE_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9063,
                                          "src": "22866:26:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 10232,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "22902:4:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ArtistV5_$10364",
                                                "typeString": "contract ArtistV5"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_ArtistV5_$10364",
                                                "typeString": "contract ArtistV5"
                                              }
                                            ],
                                            "id": 10231,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "22894:7:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 10230,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "22894:7:40",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 10233,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22894:13:40",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 10234,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "22909:3:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 10235,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "22909:10:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 10236,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10167,
                                          "src": "22921:10:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 10237,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10169,
                                          "src": "22933:13:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 10227,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "22855:3:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 10228,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "22855:10:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 10238,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22855:92:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 10226,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "22845:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 10239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22845:103:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 10222,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22749:3:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 10223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "22749:16:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 10240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22749:213:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10221,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "22726:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 10241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22726:246:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22709:263:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10245,
                              "name": "_signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10165,
                              "src": "23004:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 10243,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10220,
                              "src": "22989:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 10244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4427,
                            "src": "22989:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 10246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22989:26:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 10173,
                        "id": 10247,
                        "nodeType": "Return",
                        "src": "22982:33:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10163,
                    "nodeType": "StructuredDocumentation",
                    "src": "21529:281:40",
                    "text": "@notice Gets signer address to validate permissioned purchase\n @param _signature signed message\n @param _editionId edition id\n @param _ticketNumber ticket number to check\n @return address of signer\n @dev https://eips.ethereum.org/EIPS/eip-712"
                  },
                  "id": 10249,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "21824:9:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10165,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "21858:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10249,
                        "src": "21843:25:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10164,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "21843:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10167,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "21886:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10249,
                        "src": "21878:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10166,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21878:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10169,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "21914:13:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10249,
                        "src": "21906:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10168,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21906:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21833:100:40"
                  },
                  "returnParameters": {
                    "id": 10173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10172,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10249,
                        "src": "21951:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21951:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21950:9:40"
                  },
                  "scope": 10364,
                  "src": "21815:1207:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 10316,
                    "nodeType": "Block",
                    "src": "23398:763:40",
                    "statements": [
                      {
                        "assignments": [
                          10266
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10266,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "23416:10:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10316,
                            "src": "23408:18:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10265,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23408:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10267,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23408:18:40"
                      },
                      {
                        "assignments": [
                          10269
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10269,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "23484:16:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10316,
                            "src": "23476:24:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10268,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23476:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10270,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23476:24:40"
                      },
                      {
                        "assignments": [
                          10272
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10272,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "23554:16:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10316,
                            "src": "23546:24:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10271,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23546:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10273,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23546:24:40"
                      },
                      {
                        "assignments": [
                          10275
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10275,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "23649:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10316,
                            "src": "23641:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10274,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23641:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10276,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23641:17:40"
                      },
                      {
                        "id": 10289,
                        "nodeType": "UncheckedBlock",
                        "src": "23739:125:40",
                        "statements": [
                          {
                            "expression": {
                              "id": 10281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 10277,
                                "name": "ticketNumbersIdx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10269,
                                "src": "23763:16:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10280,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10278,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10254,
                                  "src": "23782:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 10279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23798:3:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "23782:19:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23763:38:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10282,
                            "nodeType": "ExpressionStatement",
                            "src": "23763:38:40"
                          },
                          {
                            "expression": {
                              "id": 10287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 10283,
                                "name": "localGroupOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10272,
                                "src": "23815:16:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10284,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10254,
                                  "src": "23834:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 10285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23850:3:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "23834:19:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23815:38:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10288,
                            "nodeType": "ExpressionStatement",
                            "src": "23815:38:40"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 10296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10290,
                            "name": "localGroup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10266,
                            "src": "23922:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 10291,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9096,
                                "src": "23935:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 10293,
                              "indexExpression": {
                                "id": 10292,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10252,
                                "src": "23949:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23935:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10295,
                            "indexExpression": {
                              "id": 10294,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10269,
                              "src": "23961:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "23935:43:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23922:56:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10297,
                        "nodeType": "ExpressionStatement",
                        "src": "23922:56:40"
                      },
                      {
                        "expression": {
                          "id": 10308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10298,
                            "name": "storedBit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10275,
                            "src": "24020:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 10307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10301,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 10299,
                                    "name": "localGroup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10266,
                                    "src": "24033:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "id": 10300,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10272,
                                    "src": "24047:16:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24033:30:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 10302,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "24032:32:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "31",
                                  "id": 10305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24075:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "id": 10304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24067:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 10303,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24067:7:40",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24067:10:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24032:45:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24020:57:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10309,
                        "nodeType": "ExpressionStatement",
                        "src": "24020:57:40"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 10310,
                              "name": "storedBit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10275,
                              "src": "24096:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10311,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10266,
                              "src": "24107:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10312,
                              "name": "localGroupOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10272,
                              "src": "24119:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10313,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10269,
                              "src": "24137:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 10314,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "24095:59:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 10264,
                        "id": 10315,
                        "nodeType": "Return",
                        "src": "24088:66:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10250,
                    "nodeType": "StructuredDocumentation",
                    "src": "23028:146:40",
                    "text": "@notice Gets the bit variables associated with a ticket number\n @param _editionId edition id\n @param _ticketNumber ticket number"
                  },
                  "id": 10317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBitForTicketNumber",
                  "nameLocation": "23188:22:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10252,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "23219:10:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10317,
                        "src": "23211:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10251,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23211:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10254,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "23239:13:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 10317,
                        "src": "23231:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10253,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23231:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23210:43:40"
                  },
                  "returnParameters": {
                    "id": 10264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10257,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10317,
                        "src": "23313:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10256,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23313:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10259,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10317,
                        "src": "23334:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10258,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23334:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10261,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10317,
                        "src": "23355:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10260,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23355:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10263,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10317,
                        "src": "23376:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10262,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23376:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23299:94:40"
                  },
                  "scope": 10364,
                  "src": "23179:982:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 10362,
                    "nodeType": "Block",
                    "src": "24232:321:40",
                    "statements": [
                      {
                        "assignments": [
                          10323
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10323,
                            "mutability": "mutable",
                            "name": "contractAddress",
                            "nameLocation": "24256:15:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 10362,
                            "src": "24242:29:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 10322,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "24242:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10338,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 10332,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "24318:4:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ArtistV5_$10364",
                                            "typeString": "contract ArtistV5"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_ArtistV5_$10364",
                                            "typeString": "contract ArtistV5"
                                          }
                                        ],
                                        "id": 10331,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "24310:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 10330,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "24310:7:40",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 10333,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "24310:13:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 10329,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24302:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 10328,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24302:7:40",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24302:22:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 10327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24294:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 10326,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24294:7:40",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24294:31:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "3230",
                              "id": 10336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24327:2:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              }
                            ],
                            "expression": {
                              "id": 10324,
                              "name": "Strings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4271,
                              "src": "24274:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                "typeString": "type(library Strings)"
                              }
                            },
                            "id": 10325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toHexString",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4250,
                            "src": "24274:19:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 10337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24274:56:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24242:88:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10339,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "24344:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "24344:13:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 10341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24361:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "24344:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10360,
                          "nodeType": "Block",
                          "src": "24471:76:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10355,
                                    "name": "baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9067,
                                    "src": "24506:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  },
                                  {
                                    "id": 10356,
                                    "name": "contractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10323,
                                    "src": "24515:15:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 10357,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24532:3:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 10353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24492:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 10352,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24492:6:40",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "24492:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 10358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24492:44:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 10321,
                              "id": 10359,
                              "nodeType": "Return",
                              "src": "24485:51:40"
                            }
                          ]
                        },
                        "id": 10361,
                        "nodeType": "IfStatement",
                        "src": "24340:207:40",
                        "trueBody": {
                          "id": 10351,
                          "nodeType": "Block",
                          "src": "24364:101:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f",
                                    "id": 10346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24399:32:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96",
                                      "typeString": "literal_string \"https://metadata.sound.xyz/v1/\""
                                    },
                                    "value": "https://metadata.sound.xyz/v1/"
                                  },
                                  {
                                    "id": 10347,
                                    "name": "contractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10323,
                                    "src": "24433:15:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 10348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24450:3:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96",
                                      "typeString": "literal_string \"https://metadata.sound.xyz/v1/\""
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 10344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24385:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 10343,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24385:6:40",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "24385:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 10349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24385:69:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 10321,
                              "id": 10350,
                              "nodeType": "Return",
                              "src": "24378:76:40"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 10363,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_contractBaseURI",
                  "nameLocation": "24176:16:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10318,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24192:2:40"
                  },
                  "returnParameters": {
                    "id": 10321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10320,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10363,
                        "src": "24217:13:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10319,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "24217:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24216:15:40"
                  },
                  "scope": 10364,
                  "src": "24167:386:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 10365,
              "src": "2223:22332:40",
              "usedErrors": []
            }
          ],
          "src": "45:24511:40"
        },
        "id": 40
      },
      "contracts/ArtistV6.sol": {
        "ast": {
          "absolutePath": "contracts/ArtistV6.sol",
          "exportedSymbols": {
            "AccessManager": [
              11928
            ],
            "AddressUpgradeable": [
              2122
            ],
            "ArtistV6": [
              11685
            ],
            "ContextUpgradeable": [
              2164
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSA": [
              4678
            ],
            "ERC165Upgradeable": [
              2975
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "IERC721MetadataUpgradeable": [
              1879
            ],
            "IERC721ReceiverUpgradeable": [
              1736
            ],
            "IERC721Upgradeable": [
              1852
            ],
            "Initializable": [
              690
            ],
            "Strings": [
              4271
            ],
            "StringsUpgradeable": [
              2524
            ]
          },
          "id": 11686,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10366,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".14"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:24:41"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "id": 10367,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11686,
              "sourceUnit": 151,
              "src": "1539:80:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "id": 10368,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11686,
              "sourceUnit": 1719,
              "src": "1620:80:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 10369,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11686,
              "sourceUnit": 2239,
              "src": "1701:75:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 10370,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11686,
              "sourceUnit": 4679,
              "src": "1777:62:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "@openzeppelin/contracts/utils/Strings.sol",
              "id": 10371,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11686,
              "sourceUnit": 4272,
              "src": "1840:51:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/auxillary/AccessManager.sol",
              "file": "./auxillary/AccessManager.sol",
              "id": 10372,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11686,
              "sourceUnit": 11929,
              "src": "1892:39:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10374,
                    "name": "ERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1718,
                    "src": "2244:17:41"
                  },
                  "id": 10375,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2244:17:41"
                },
                {
                  "baseName": {
                    "id": 10376,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 150,
                    "src": "2263:19:41"
                  },
                  "id": 10377,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2263:19:41"
                },
                {
                  "baseName": {
                    "id": 10378,
                    "name": "AccessManager",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11928,
                    "src": "2284:13:41"
                  },
                  "id": 10379,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2284:13:41"
                }
              ],
              "canonicalName": "ArtistV6",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 10373,
                "nodeType": "StructuredDocumentation",
                "src": "1933:290:41",
                "text": "@title Artist\n @author SoundXYZ - @gigamesh & @vigneshka\n @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol"
              },
              "fullyImplemented": true,
              "id": 11685,
              "linearizedBaseContracts": [
                11685,
                11928,
                150,
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "ArtistV6",
              "nameLocation": "2232:8:41",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ArtistV6.Edition",
                  "id": 10400,
                  "members": [
                    {
                      "constant": false,
                      "id": 10381,
                      "mutability": "mutable",
                      "name": "fundingRecipient",
                      "nameLocation": "2495:16:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "2479:32:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 10380,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2479:15:41",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10383,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "2592:5:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "2584:13:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10382,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2584:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10385,
                      "mutability": "mutable",
                      "name": "numSold",
                      "nameLocation": "2659:7:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "2652:14:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10384,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2652:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10387,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "2741:8:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "2734:15:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10386,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2734:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10389,
                      "mutability": "mutable",
                      "name": "royaltyBPS",
                      "nameLocation": "2799:10:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "2792:17:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10388,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2792:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10391,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "2894:9:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "2887:16:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10390,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2887:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10393,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "2986:7:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "2979:14:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10392,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2979:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10395,
                      "mutability": "mutable",
                      "name": "permissionedQuantity",
                      "nameLocation": "3053:20:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "3046:27:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10394,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3046:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10397,
                      "mutability": "mutable",
                      "name": "signerAddress",
                      "nameLocation": "3127:13:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "3119:21:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10396,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3119:7:41",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10399,
                      "mutability": "mutable",
                      "name": "baseURI",
                      "nameLocation": "3193:7:41",
                      "nodeType": "VariableDeclaration",
                      "scope": 10400,
                      "src": "3186:14:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 10398,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3186:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Edition",
                  "nameLocation": "2405:7:41",
                  "nodeType": "StructDefinition",
                  "scope": 11685,
                  "src": "2398:809:41",
                  "visibility": "public"
                },
                {
                  "global": false,
                  "id": 10404,
                  "libraryName": {
                    "id": 10401,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "3219:19:41"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "3213:58:41",
                  "typeName": {
                    "id": 10403,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10402,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "3243:27:41"
                    },
                    "referencedDeclaration": 2170,
                    "src": "3243:27:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 10407,
                  "libraryName": {
                    "id": 10405,
                    "name": "ECDSA",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4678,
                    "src": "3282:5:41"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "3276:24:41",
                  "typeName": {
                    "id": 10406,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "canonicalName": "ArtistV6.TimeType",
                  "id": 10410,
                  "members": [
                    {
                      "id": 10408,
                      "name": "START",
                      "nameLocation": "3330:5:41",
                      "nodeType": "EnumValue",
                      "src": "3330:5:41"
                    },
                    {
                      "id": 10409,
                      "name": "END",
                      "nameLocation": "3345:3:41",
                      "nodeType": "EnumValue",
                      "src": "3345:3:41"
                    }
                  ],
                  "name": "TimeType",
                  "nameLocation": "3311:8:41",
                  "nodeType": "EnumDefinition",
                  "src": "3306:48:41"
                },
                {
                  "constant": true,
                  "functionSelector": "27399d36",
                  "id": 10415,
                  "mutability": "constant",
                  "name": "PERMISSIONED_SALE_TYPEHASH",
                  "nameLocation": "3552:26:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "3528:170:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10411,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3528:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "45646974696f6e496e666f286164647265737320636f6e7472616374416464726573732c61646472657373206275796572416464726573732c75696e743235362065646974696f6e49642c75696e74323536207469636b65744e756d62657229",
                        "id": 10413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3599:98:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        },
                        "value": "EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        }
                      ],
                      "id": 10412,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3589:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 10414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3589:109:41",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 10417,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "3827:16:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "3802:41:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10416,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3802:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10419,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "3909:7:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "3893:23:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10418,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3893:6:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "3ef2dbc2",
                  "id": 10422,
                  "mutability": "mutable",
                  "name": "atTokenId",
                  "nameLocation": "3958:9:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "3923:44:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 10421,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10420,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "3923:27:41"
                    },
                    "referencedDeclaration": 2170,
                    "src": "3923:27:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "9725d92e",
                  "id": 10425,
                  "mutability": "mutable",
                  "name": "atEditionId",
                  "nameLocation": "4028:11:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "3993:46:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 10424,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10423,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "3993:27:41"
                    },
                    "referencedDeclaration": 2170,
                    "src": "3993:27:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "279c806e",
                  "id": 10430,
                  "mutability": "mutable",
                  "name": "editions",
                  "nameLocation": "4131:8:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "4096:43:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                    "typeString": "mapping(uint256 => struct ArtistV6.Edition)"
                  },
                  "typeName": {
                    "id": 10429,
                    "keyType": {
                      "id": 10426,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4104:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4096:27:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                      "typeString": "mapping(uint256 => struct ArtistV6.Edition)"
                    },
                    "valueType": {
                      "id": 10428,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10427,
                        "name": "Edition",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 10400,
                        "src": "4115:7:41"
                      },
                      "referencedDeclaration": 10400,
                      "src": "4115:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Edition_$10400_storage_ptr",
                        "typeString": "struct ArtistV6.Edition"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "5076a64d",
                  "id": 10434,
                  "mutability": "mutable",
                  "name": "_tokenToEdition",
                  "nameLocation": "4241:15:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "4206:50:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 10433,
                    "keyType": {
                      "id": 10431,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4214:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4206:27:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 10432,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4225:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e1a3d573",
                  "id": 10438,
                  "mutability": "mutable",
                  "name": "depositedForEdition",
                  "nameLocation": "4370:19:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "4335:54:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 10437,
                    "keyType": {
                      "id": 10435,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4343:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4335:27:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 10436,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4354:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d3bb0528",
                  "id": 10442,
                  "mutability": "mutable",
                  "name": "withdrawnForEdition",
                  "nameLocation": "4511:19:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "4476:54:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 10441,
                    "keyType": {
                      "id": 10439,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4484:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4476:27:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 10440,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4495:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10448,
                  "mutability": "mutable",
                  "name": "ticketNumbers",
                  "nameLocation": "4669:13:41",
                  "nodeType": "VariableDeclaration",
                  "scope": 11685,
                  "src": "4621:61:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                  },
                  "typeName": {
                    "id": 10447,
                    "keyType": {
                      "id": 10443,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4629:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4621:47:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                    },
                    "valueType": {
                      "id": 10446,
                      "keyType": {
                        "id": 10444,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4648:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "4640:27:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      },
                      "valueType": {
                        "id": 10445,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4659:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3",
                  "id": 10468,
                  "name": "EditionCreated",
                  "nameLocation": "4790:14:41",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10467,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10450,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4830:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "4814:25:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4814:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10452,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "4857:16:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "4849:24:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10451,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4849:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10454,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "4891:5:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "4883:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10453,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4883:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10456,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "quantity",
                        "nameLocation": "4913:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "4906:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10455,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4906:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10458,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "royaltyBPS",
                        "nameLocation": "4938:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "4931:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10457,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4931:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10460,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "4965:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "4958:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10459,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4958:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10462,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "4991:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "4984:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10461,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4984:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10464,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5015:20:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "5008:27:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10463,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5008:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10466,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5053:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10468,
                        "src": "5045:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10465,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5045:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4804:268:41"
                  },
                  "src": "4784:289:41"
                },
                {
                  "anonymous": false,
                  "eventSelector": "c3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251",
                  "id": 10480,
                  "name": "EditionPurchased",
                  "nameLocation": "5085:16:41",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10470,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5127:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10480,
                        "src": "5111:25:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10469,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5111:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10472,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5162:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10480,
                        "src": "5146:23:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5146:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10474,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "numSold",
                        "nameLocation": "5270:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10480,
                        "src": "5263:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10473,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5263:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10476,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nameLocation": "5362:5:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10480,
                        "src": "5346:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5346:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10478,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ticketNumber",
                        "nameLocation": "5385:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10480,
                        "src": "5377:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10477,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5377:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5101:302:41"
                  },
                  "src": "5079:325:41"
                },
                {
                  "anonymous": false,
                  "eventSelector": "494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c",
                  "id": 10489,
                  "name": "AuctionTimeSet",
                  "nameLocation": "5416:14:41",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10483,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timeType",
                        "nameLocation": "5440:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10489,
                        "src": "5431:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TimeType_$10410",
                          "typeString": "enum ArtistV6.TimeType"
                        },
                        "typeName": {
                          "id": 10482,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 10481,
                            "name": "TimeType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 10410,
                            "src": "5431:8:41"
                          },
                          "referencedDeclaration": 10410,
                          "src": "5431:8:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TimeType_$10410",
                            "typeString": "enum ArtistV6.TimeType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10485,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5458:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10489,
                        "src": "5450:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5450:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10487,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newTime",
                        "nameLocation": "5484:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10489,
                        "src": "5469:22:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10486,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5469:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5430:62:41"
                  },
                  "src": "5410:83:41"
                },
                {
                  "anonymous": false,
                  "eventSelector": "73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a534",
                  "id": 10495,
                  "name": "SignerAddressSet",
                  "nameLocation": "5505:16:41",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10491,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5530:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10495,
                        "src": "5522:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10490,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5522:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10493,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5557:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10495,
                        "src": "5541:29:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10492,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5541:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5521:50:41"
                  },
                  "src": "5499:73:41"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae",
                  "id": 10501,
                  "name": "PermissionedQuantitySet",
                  "nameLocation": "5584:23:41",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10497,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5616:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10501,
                        "src": "5608:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10496,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5608:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10499,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5634:20:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10501,
                        "src": "5627:27:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10498,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5627:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5607:48:41"
                  },
                  "src": "5578:78:41"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd412589",
                  "id": 10507,
                  "name": "BaseURISet",
                  "nameLocation": "5668:10:41",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10503,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5687:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10507,
                        "src": "5679:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10502,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5679:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10505,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "baseURI",
                        "nameLocation": "5705:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10507,
                        "src": "5698:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10504,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5698:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5678:35:41"
                  },
                  "src": "5662:52:41"
                },
                {
                  "body": {
                    "id": 10524,
                    "nodeType": "Block",
                    "src": "5896:116:41",
                    "statements": [
                      {
                        "expression": {
                          "id": 10522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10511,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10417,
                            "src": "5906:16:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                        "id": 10516,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5956:31:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        },
                                        "value": "EIP712Domain(uint256 chainId)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        }
                                      ],
                                      "id": 10515,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "5946:9:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 10517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5946:42:41",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 10518,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "5990:5:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 10519,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "5990:13:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 10513,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "5935:3:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 10514,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "5935:10:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 10520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5935:69:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 10512,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "5925:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 10521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5925:80:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5906:99:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 10523,
                        "nodeType": "ExpressionStatement",
                        "src": "5906:99:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10508,
                    "nodeType": "StructuredDocumentation",
                    "src": "5845:32:41",
                    "text": "@notice Contract constructor"
                  },
                  "id": 10525,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10509,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5893:2:41"
                  },
                  "returnParameters": {
                    "id": 10510,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5896:0:41"
                  },
                  "scope": 11685,
                  "src": "5882:130:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10566,
                    "nodeType": "Block",
                    "src": "6398:378:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10540,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10530,
                              "src": "6422:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 10541,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10532,
                              "src": "6429:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10539,
                            "name": "__ERC721_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "6408:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 10542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6408:29:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10543,
                        "nodeType": "ExpressionStatement",
                        "src": "6408:29:41"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10544,
                            "name": "__AccessManager_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11742,
                            "src": "6447:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 10545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6447:22:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10546,
                        "nodeType": "ExpressionStatement",
                        "src": "6447:22:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10548,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10528,
                              "src": "6559:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10547,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11799,
                            "src": "6541:17:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6541:25:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10550,
                        "nodeType": "ExpressionStatement",
                        "src": "6541:25:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 10551,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "6627:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "6627:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 10553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6644:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "6627:18:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10560,
                        "nodeType": "IfStatement",
                        "src": "6623:67:41",
                        "trueBody": {
                          "id": 10559,
                          "nodeType": "Block",
                          "src": "6647:43:41",
                          "statements": [
                            {
                              "expression": {
                                "id": 10557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10555,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10419,
                                  "src": "6661:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 10556,
                                  "name": "_baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10534,
                                  "src": "6671:8:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "6661:18:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 10558,
                              "nodeType": "ExpressionStatement",
                              "src": "6661:18:41"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10561,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10425,
                              "src": "6746:11:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 10563,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "6746:21:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 10564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6746:23:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10565,
                        "nodeType": "ExpressionStatement",
                        "src": "6746:23:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10526,
                    "nodeType": "StructuredDocumentation",
                    "src": "6018:214:41",
                    "text": "@notice Initializes the contract\n @param _owner Owner of edition\n @param _name Name of artist\n @param _symbol Symbol for the artist\n @param _baseURI Default base URI for all editions"
                  },
                  "functionSelector": "5f1e6f6d",
                  "id": 10567,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 10537,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10536,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "6386:11:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6386:11:41"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "6246:10:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10528,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "6274:6:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10567,
                        "src": "6266:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10527,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6266:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10530,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "6304:5:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10567,
                        "src": "6290:19:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10529,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6290:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10532,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "6333:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10567,
                        "src": "6319:21:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10531,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6319:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10534,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "6364:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10567,
                        "src": "6350:22:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10533,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6350:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6256:122:41"
                  },
                  "returnParameters": {
                    "id": 10538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6398:0:41"
                  },
                  "scope": 11685,
                  "src": "6237:539:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10680,
                    "nodeType": "Block",
                    "src": "7878:1178:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 10597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10595,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10574,
                                "src": "7896:9:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 10596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7908:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7896:13:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d75737420736574207175616e74697479",
                              "id": 10598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7911:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              },
                              "value": "Must set quantity"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              }
                            ],
                            "id": 10594,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7888:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7888:43:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10600,
                        "nodeType": "ExpressionStatement",
                        "src": "7888:43:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10602,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10570,
                                "src": "7949:17:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 10605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7978:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 10604,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7970:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10603,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7970:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7970:10:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7949:31:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                              "id": 10608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7982:27:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              },
                              "value": "Must set fundingRecipient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              }
                            ],
                            "id": 10601,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7941:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7941:69:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10610,
                        "nodeType": "ExpressionStatement",
                        "src": "7941:69:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 10614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10612,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10580,
                                "src": "8028:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 10613,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10578,
                                "src": "8039:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "8028:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e2073746172742074696d65",
                              "id": 10615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8051:42:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              },
                              "value": "End time must be greater than start time"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              }
                            ],
                            "id": 10611,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8020:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8020:74:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10617,
                        "nodeType": "ExpressionStatement",
                        "src": "8020:74:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10619,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10586,
                                "src": "8112:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 10620,
                                    "name": "atEditionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10425,
                                    "src": "8126:11:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                      "typeString": "struct CountersUpgradeable.Counter storage ref"
                                    }
                                  },
                                  "id": 10621,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "current",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2182,
                                  "src": "8126:19:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                    "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                  }
                                },
                                "id": 10622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8126:21:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8112:35:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57726f6e672065646974696f6e204944",
                              "id": 10624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8149:18:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737",
                                "typeString": "literal_string \"Wrong edition ID\""
                              },
                              "value": "Wrong edition ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737",
                                "typeString": "literal_string \"Wrong edition ID\""
                              }
                            ],
                            "id": 10618,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8104:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8104:64:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10626,
                        "nodeType": "ExpressionStatement",
                        "src": "8104:64:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 10629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10627,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10582,
                            "src": "8183:21:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 10628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8207:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8183:25:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10641,
                        "nodeType": "IfStatement",
                        "src": "8179:123:41",
                        "trueBody": {
                          "id": 10640,
                          "nodeType": "Block",
                          "src": "8210:92:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 10636,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10631,
                                      "name": "_signerAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10584,
                                      "src": "8232:14:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 10634,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8258:1:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 10633,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8250:7:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 10632,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8250:7:41",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 10635,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8250:10:41",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8232:28:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "id": 10637,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8262:28:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    },
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    }
                                  ],
                                  "id": 10630,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8224:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8224:67:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10639,
                              "nodeType": "ExpressionStatement",
                              "src": "8224:67:41"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 10659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 10642,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "8312:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 10646,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10643,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10425,
                                  "src": "8321:11:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 10644,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8321:19:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 10645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8321:21:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8312:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 10648,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10570,
                                "src": "8386:17:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 10649,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10572,
                                "src": "8424:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 10650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8453:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 10651,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10574,
                                "src": "8478:9:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 10652,
                                "name": "_royaltyBPS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10576,
                                "src": "8513:11:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 10653,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10578,
                                "src": "8549:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 10654,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10580,
                                "src": "8582:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 10655,
                                "name": "_permissionedQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10582,
                                "src": "8626:21:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 10656,
                                "name": "_signerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10584,
                                "src": "8676:14:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 10657,
                                "name": "_baseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10588,
                                "src": "8713:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 10647,
                              "name": "Edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10400,
                              "src": "8346:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Edition_$10400_storage_ptr_$",
                                "typeString": "type(struct ArtistV6.Edition storage pointer)"
                              }
                            },
                            "id": 10658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "fundingRecipient",
                              "price",
                              "numSold",
                              "quantity",
                              "royaltyBPS",
                              "startTime",
                              "endTime",
                              "permissionedQuantity",
                              "signerAddress",
                              "baseURI"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "8346:386:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_memory_ptr",
                              "typeString": "struct ArtistV6.Edition memory"
                            }
                          },
                          "src": "8312:420:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$10400_storage",
                            "typeString": "struct ArtistV6.Edition storage ref"
                          }
                        },
                        "id": 10660,
                        "nodeType": "ExpressionStatement",
                        "src": "8312:420:41"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 10662,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10425,
                                  "src": "8776:11:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 10663,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8776:19:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 10664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8776:21:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10665,
                              "name": "_fundingRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10570,
                              "src": "8811:17:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 10666,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10572,
                              "src": "8842:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10667,
                              "name": "_quantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10574,
                              "src": "8862:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 10668,
                              "name": "_royaltyBPS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10576,
                              "src": "8885:11:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 10669,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10578,
                              "src": "8910:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 10670,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10580,
                              "src": "8934:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 10671,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10582,
                              "src": "8956:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 10672,
                              "name": "_signerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10584,
                              "src": "8991:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10661,
                            "name": "EditionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10468,
                            "src": "8748:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint32,uint32,uint32,uint32,uint32,address)"
                            }
                          },
                          "id": 10673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8748:267:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10674,
                        "nodeType": "EmitStatement",
                        "src": "8743:272:41"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 10675,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10425,
                              "src": "9026:11:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 10677,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "9026:21:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 10678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9026:23:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10679,
                        "nodeType": "ExpressionStatement",
                        "src": "9026:23:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10568,
                    "nodeType": "StructuredDocumentation",
                    "src": "6782:722:41",
                    "text": "@notice Creates a new edition.\n @param _fundingRecipient The account that will receive sales revenue.\n @param _price The price at which each token will be sold, in ETH.\n @param _quantity The maximum number of tokens that can be sold.\n @param _royaltyBPS The royalty amount in bps.\n @param _startTime The start time of the auction, in seconds since unix epoch.\n @param _endTime The end time of the auction, in seconds since unix epoch.\n @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n @param _signerAddress signer address.\n @param _editionId The expected edition ID\n @param _baseURI The base URI for the edition"
                  },
                  "functionSelector": "8e116aea",
                  "id": 10681,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10591,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "7866:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 10592,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10590,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "7850:15:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7850:27:41"
                    }
                  ],
                  "name": "createEdition",
                  "nameLocation": "7518:13:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10589,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10570,
                        "mutability": "mutable",
                        "name": "_fundingRecipient",
                        "nameLocation": "7557:17:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7541:33:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 10569,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7541:15:41",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10572,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "7592:6:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7584:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10571,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7584:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10574,
                        "mutability": "mutable",
                        "name": "_quantity",
                        "nameLocation": "7615:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7608:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10573,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7608:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10576,
                        "mutability": "mutable",
                        "name": "_royaltyBPS",
                        "nameLocation": "7641:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7634:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10575,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7634:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10578,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "7669:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7662:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10577,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7662:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10580,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "7696:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7689:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10579,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7689:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10582,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "7721:21:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7714:28:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10581,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7714:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10584,
                        "mutability": "mutable",
                        "name": "_signerAddress",
                        "nameLocation": "7760:14:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7752:22:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10583,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7752:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10586,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "7792:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7784:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10585,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7784:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10588,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "7826:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10681,
                        "src": "7812:22:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10587,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7812:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7531:309:41"
                  },
                  "returnParameters": {
                    "id": 10593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7878:0:41"
                  },
                  "scope": 11685,
                  "src": "7509:1547:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10858,
                    "nodeType": "Block",
                    "src": "9529:2681:41",
                    "statements": [
                      {
                        "assignments": [
                          10692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10692,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "9600:5:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "9592:13:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10691,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9592:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10697,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 10693,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "9608:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 10695,
                            "indexExpression": {
                              "id": 10694,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10684,
                              "src": "9617:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9608:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 10696,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10383,
                          "src": "9608:26:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9592:42:41"
                      },
                      {
                        "assignments": [
                          10699
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10699,
                            "mutability": "mutable",
                            "name": "quantity",
                            "nameLocation": "9651:8:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "9644:15:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 10698,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9644:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10704,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 10700,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "9662:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 10702,
                            "indexExpression": {
                              "id": 10701,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10684,
                              "src": "9671:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9662:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 10703,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10387,
                          "src": "9662:29:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9644:47:41"
                      },
                      {
                        "assignments": [
                          10706
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10706,
                            "mutability": "mutable",
                            "name": "numSold",
                            "nameLocation": "9708:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "9701:14:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 10705,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9701:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10711,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 10707,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "9718:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 10709,
                            "indexExpression": {
                              "id": 10708,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10684,
                              "src": "9727:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9718:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 10710,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numSold",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10385,
                          "src": "9718:28:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9701:45:41"
                      },
                      {
                        "assignments": [
                          10713
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10713,
                            "mutability": "mutable",
                            "name": "newNumSold",
                            "nameLocation": "9763:10:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "9756:17:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 10712,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9756:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10717,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 10716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10714,
                            "name": "numSold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10706,
                            "src": "9776:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 10715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9786:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9776:11:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9756:31:41"
                      },
                      {
                        "assignments": [
                          10719
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10719,
                            "mutability": "mutable",
                            "name": "startTime",
                            "nameLocation": "9804:9:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "9797:16:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 10718,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9797:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10724,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 10720,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "9816:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 10722,
                            "indexExpression": {
                              "id": 10721,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10684,
                              "src": "9825:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9816:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 10723,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10391,
                          "src": "9816:30:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9797:49:41"
                      },
                      {
                        "assignments": [
                          10726
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10726,
                            "mutability": "mutable",
                            "name": "endTime",
                            "nameLocation": "9863:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "9856:14:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 10725,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9856:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10731,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 10727,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "9873:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 10729,
                            "indexExpression": {
                              "id": 10728,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10684,
                              "src": "9882:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9873:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 10730,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10393,
                          "src": "9873:28:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9856:45:41"
                      },
                      {
                        "assignments": [
                          10733
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10733,
                            "mutability": "mutable",
                            "name": "permissionedQuantity",
                            "nameLocation": "9918:20:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "9911:27:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 10732,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9911:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10738,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 10734,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "9941:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 10736,
                            "indexExpression": {
                              "id": 10735,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10684,
                              "src": "9950:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9941:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 10737,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permissionedQuantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10395,
                          "src": "9941:41:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9911:71:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 10742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10740,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10699,
                                "src": "10145:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 10741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10156:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10145:12:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                              "id": 10743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10159:24:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              },
                              "value": "Edition does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              }
                            ],
                            "id": 10739,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10137:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10137:47:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10745,
                        "nodeType": "ExpressionStatement",
                        "src": "10137:47:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 10747,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "10265:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "10265:9:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 10749,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10692,
                                "src": "10278:5:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10265:18:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d7573742073656e6420656e6f75676820746f207075726368617365207468652065646974696f6e2e",
                              "id": 10751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10285:43:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              },
                              "value": "Must send enough to purchase the edition."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              }
                            ],
                            "id": 10746,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10257:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10257:72:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10753,
                        "nodeType": "ExpressionStatement",
                        "src": "10257:72:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10755,
                                "name": "endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10726,
                                "src": "10399:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 10756,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "10409:5:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 10757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "10409:15:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10399:25:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e2068617320656e646564",
                              "id": 10759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10426:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              },
                              "value": "Auction has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              }
                            ],
                            "id": 10754,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10391:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10391:55:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10761,
                        "nodeType": "ExpressionStatement",
                        "src": "10391:55:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10762,
                            "name": "startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10719,
                            "src": "10512:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 10763,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "10524:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 10764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "10524:15:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10512:27:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10795,
                          "nodeType": "Block",
                          "src": "10964:293:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 10791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10789,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10706,
                                      "src": "11190:7:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 10790,
                                      "name": "quantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10699,
                                      "src": "11200:8:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "11190:18:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f75742e",
                                    "id": 10792,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11210:35:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    },
                                    "value": "This edition is already sold out."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    }
                                  ],
                                  "id": 10788,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "11182:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11182:64:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10794,
                              "nodeType": "ExpressionStatement",
                              "src": "11182:64:41"
                            }
                          ]
                        },
                        "id": 10796,
                        "nodeType": "IfStatement",
                        "src": "10508:749:41",
                        "trueBody": {
                          "id": 10787,
                          "nodeType": "Block",
                          "src": "10541:417:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 10769,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10767,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10706,
                                      "src": "10629:7:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 10768,
                                      "name": "permissionedQuantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10733,
                                      "src": "10639:20:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "10629:30:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c652026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "id": 10770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10661:61:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    },
                                    "value": "No permissioned tokens available & open auction not started"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    }
                                  ],
                                  "id": 10766,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10621:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10621:102:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10772,
                              "nodeType": "ExpressionStatement",
                              "src": "10621:102:41"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 10783,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 10775,
                                          "name": "_signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10686,
                                          "src": "10823:10:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "id": 10776,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10684,
                                          "src": "10835:10:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 10777,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10688,
                                          "src": "10847:13:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 10774,
                                        "name": "getSigner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11570,
                                        "src": "10813:9:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                                          "typeString": "function (bytes calldata,uint256,uint256) returns (address)"
                                        }
                                      },
                                      "id": 10778,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10813:48:41",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 10779,
                                          "name": "editions",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10430,
                                          "src": "10865:8:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                            "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                          }
                                        },
                                        "id": 10781,
                                        "indexExpression": {
                                          "id": 10780,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10684,
                                          "src": "10874:10:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10865:20:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                          "typeString": "struct ArtistV6.Edition storage ref"
                                        }
                                      },
                                      "id": 10782,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signerAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 10397,
                                      "src": "10865:34:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "10813:86:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "id": 10784,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10917:16:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    },
                                    "value": "Invalid signer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    }
                                  ],
                                  "id": 10773,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10788:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10788:159:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10786,
                              "nodeType": "ExpressionStatement",
                              "src": "10788:159:41"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          10798
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10798,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "11343:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10858,
                            "src": "11335:15:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10797,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11335:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10799,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11335:15:41"
                      },
                      {
                        "id": 10816,
                        "nodeType": "UncheckedBlock",
                        "src": "11360:201:41",
                        "statements": [
                          {
                            "expression": {
                              "id": 10807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 10800,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10798,
                                "src": "11384:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 10803,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 10801,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10684,
                                        "src": "11395:10:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313238",
                                        "id": 10802,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11409:3:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_128_by_1",
                                          "typeString": "int_const 128"
                                        },
                                        "value": "128"
                                      },
                                      "src": "11395:17:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 10804,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "11394:19:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 10805,
                                  "name": "newNumSold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10713,
                                  "src": "11416:10:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "11394:32:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11384:42:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10808,
                            "nodeType": "ExpressionStatement",
                            "src": "11384:42:41"
                          },
                          {
                            "expression": {
                              "id": 10814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 10809,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10430,
                                    "src": "11509:8:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                    }
                                  },
                                  "id": 10811,
                                  "indexExpression": {
                                    "id": 10810,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10684,
                                    "src": "11518:10:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11509:20:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                    "typeString": "struct ArtistV6.Edition storage ref"
                                  }
                                },
                                "id": 10812,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "numSold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10385,
                                "src": "11509:28:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 10813,
                                "name": "newNumSold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10713,
                                "src": "11540:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "11509:41:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 10815,
                            "nodeType": "ExpressionStatement",
                            "src": "11509:41:41"
                          }
                        ]
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 10817,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "11690:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 10819,
                              "indexExpression": {
                                "id": 10818,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10684,
                                "src": "11699:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11690:20:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                "typeString": "struct ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 10820,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10381,
                            "src": "11690:37:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 10821,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11762,
                              "src": "11731:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 10822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11731:7:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11690:48:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10841,
                          "nodeType": "Block",
                          "src": "11873:137:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 10833,
                                        "name": "editions",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10430,
                                        "src": "11950:8:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                          "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                        }
                                      },
                                      "id": 10835,
                                      "indexExpression": {
                                        "id": 10834,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10684,
                                        "src": "11959:10:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "11950:20:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                        "typeString": "struct ArtistV6.Edition storage ref"
                                      }
                                    },
                                    "id": 10836,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 10381,
                                    "src": "11950:37:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 10837,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11989:3:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 10838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "src": "11989:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10832,
                                  "name": "_sendFunds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11483,
                                  "src": "11939:10:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 10839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11939:60:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10840,
                              "nodeType": "ExpressionStatement",
                              "src": "11939:60:41"
                            }
                          ]
                        },
                        "id": 10842,
                        "nodeType": "IfStatement",
                        "src": "11686:324:41",
                        "trueBody": {
                          "id": 10831,
                          "nodeType": "Block",
                          "src": "11740:127:41",
                          "statements": [
                            {
                              "expression": {
                                "id": 10829,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 10824,
                                    "name": "depositedForEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10438,
                                    "src": "11812:19:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 10826,
                                  "indexExpression": {
                                    "id": 10825,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10684,
                                    "src": "11832:10:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11812:31:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 10827,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "11847:3:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 10828,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "11847:9:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11812:44:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10830,
                              "nodeType": "ExpressionStatement",
                              "src": "11812:44:41"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 10844,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12091:3:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12091:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10846,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "12103:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10843,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "12085:5:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12085:26:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10848,
                        "nodeType": "ExpressionStatement",
                        "src": "12085:26:41"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10850,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10684,
                              "src": "12144:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10851,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10798,
                              "src": "12156:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10852,
                              "name": "newNumSold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10713,
                              "src": "12165:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 10853,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12177:3:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12177:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10855,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10688,
                              "src": "12189:13:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10849,
                            "name": "EditionPurchased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10480,
                            "src": "12127:16:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint32,address,uint256)"
                            }
                          },
                          "id": 10856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12127:76:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10857,
                        "nodeType": "EmitStatement",
                        "src": "12122:81:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10682,
                    "nodeType": "StructuredDocumentation",
                    "src": "9062:325:41",
                    "text": "@notice Creates a new token for the given edition, and assigns it to the buyer\n @param _editionId The id of the edition to purchase\n @param _signature A signed message for authorizing permissioned purchases\n @param _ticketNumber Ticket number required for validating this buyer hasn't already bought."
                  },
                  "functionSelector": "f71e54fb",
                  "id": 10859,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "buyEdition",
                  "nameLocation": "9401:10:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10684,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "9429:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10859,
                        "src": "9421:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10683,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9421:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10686,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "9464:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10859,
                        "src": "9449:25:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10685,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9449:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10688,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "9492:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10859,
                        "src": "9484:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9484:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9411:100:41"
                  },
                  "returnParameters": {
                    "id": 10690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9529:0:41"
                  },
                  "scope": 11685,
                  "src": "9392:2818:41",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10891,
                    "nodeType": "Block",
                    "src": "12414:494:41",
                    "statements": [
                      {
                        "assignments": [
                          10866
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10866,
                            "mutability": "mutable",
                            "name": "remainingForEdition",
                            "nameLocation": "12507:19:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 10891,
                            "src": "12499:27:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10865,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12499:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10874,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 10867,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10438,
                              "src": "12529:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10869,
                            "indexExpression": {
                              "id": 10868,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10862,
                              "src": "12549:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12529:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 10870,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10442,
                              "src": "12563:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10872,
                            "indexExpression": {
                              "id": 10871,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10862,
                              "src": "12583:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12563:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12529:65:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12499:95:41"
                      },
                      {
                        "expression": {
                          "id": 10881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 10875,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10442,
                              "src": "12666:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10877,
                            "indexExpression": {
                              "id": 10876,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10862,
                              "src": "12686:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12666:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 10878,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10438,
                              "src": "12700:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10880,
                            "indexExpression": {
                              "id": 10879,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10862,
                              "src": "12720:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12700:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12666:65:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10882,
                        "nodeType": "ExpressionStatement",
                        "src": "12666:65:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 10884,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10430,
                                  "src": "12842:8:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                    "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                  }
                                },
                                "id": 10886,
                                "indexExpression": {
                                  "id": 10885,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10862,
                                  "src": "12851:10:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12842:20:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                  "typeString": "struct ArtistV6.Edition storage ref"
                                }
                              },
                              "id": 10887,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10381,
                              "src": "12842:37:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 10888,
                              "name": "remainingForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10866,
                              "src": "12881:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10883,
                            "name": "_sendFunds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11483,
                            "src": "12831:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 10889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12831:70:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10890,
                        "nodeType": "ExpressionStatement",
                        "src": "12831:70:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10860,
                    "nodeType": "StructuredDocumentation",
                    "src": "12216:141:41",
                    "text": "@notice Withdraws from the Artist to the fundingRecipient for an edition\n @param _editionId The id of the edition to withdraw from"
                  },
                  "functionSelector": "155dd5ee",
                  "id": 10892,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFunds",
                  "nameLocation": "12371:13:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10863,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10862,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12393:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10892,
                        "src": "12385:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10861,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12385:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12384:20:41"
                  },
                  "returnParameters": {
                    "id": 10864,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12414:0:41"
                  },
                  "scope": 11685,
                  "src": "12362:546:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10917,
                    "nodeType": "Block",
                    "src": "13215:129:41",
                    "statements": [
                      {
                        "expression": {
                          "id": 10908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 10903,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "13225:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 10905,
                              "indexExpression": {
                                "id": 10904,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10895,
                                "src": "13234:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13225:20:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                "typeString": "struct ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 10906,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10391,
                            "src": "13225:30:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10907,
                            "name": "_startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10897,
                            "src": "13258:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13225:43:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10909,
                        "nodeType": "ExpressionStatement",
                        "src": "13225:43:41"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 10911,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10410,
                                "src": "13298:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$10410_$",
                                  "typeString": "type(enum ArtistV6.TimeType)"
                                }
                              },
                              "id": 10912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "START",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10408,
                              "src": "13298:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$10410",
                                "typeString": "enum ArtistV6.TimeType"
                              }
                            },
                            {
                              "id": 10913,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10895,
                              "src": "13314:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10914,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10897,
                              "src": "13326:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$10410",
                                "typeString": "enum ArtistV6.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 10910,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10489,
                            "src": "13283:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$10410_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV6.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 10915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13283:54:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10916,
                        "nodeType": "EmitStatement",
                        "src": "13278:59:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10893,
                    "nodeType": "StructuredDocumentation",
                    "src": "12914:198:41",
                    "text": "@notice Sets the start time for an edition\n @param _editionId The id of the edition to set the start time for\n @param _startTime The start time to set (in seconds since unix epoch)"
                  },
                  "functionSelector": "fbab9e04",
                  "id": 10918,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10900,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "13203:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 10901,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10899,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "13187:15:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13187:27:41"
                    }
                  ],
                  "name": "setStartTime",
                  "nameLocation": "13126:12:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10895,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13147:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10918,
                        "src": "13139:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10894,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13139:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10897,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "13166:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10918,
                        "src": "13159:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10896,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13159:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13138:39:41"
                  },
                  "returnParameters": {
                    "id": 10902,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13215:0:41"
                  },
                  "scope": 11685,
                  "src": "13117:227:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10943,
                    "nodeType": "Block",
                    "src": "13639:121:41",
                    "statements": [
                      {
                        "expression": {
                          "id": 10934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 10929,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "13649:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 10931,
                              "indexExpression": {
                                "id": 10930,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10921,
                                "src": "13658:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13649:20:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                "typeString": "struct ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 10932,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10393,
                            "src": "13649:28:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10933,
                            "name": "_endTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10923,
                            "src": "13680:8:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13649:39:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10935,
                        "nodeType": "ExpressionStatement",
                        "src": "13649:39:41"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 10937,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10410,
                                "src": "13718:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$10410_$",
                                  "typeString": "type(enum ArtistV6.TimeType)"
                                }
                              },
                              "id": 10938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "END",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10409,
                              "src": "13718:12:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$10410",
                                "typeString": "enum ArtistV6.TimeType"
                              }
                            },
                            {
                              "id": 10939,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10921,
                              "src": "13732:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10940,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10923,
                              "src": "13744:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$10410",
                                "typeString": "enum ArtistV6.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 10936,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10489,
                            "src": "13703:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$10410_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum ArtistV6.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 10941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13703:50:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10942,
                        "nodeType": "EmitStatement",
                        "src": "13698:55:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10919,
                    "nodeType": "StructuredDocumentation",
                    "src": "13350:190:41",
                    "text": "@notice Sets the end time for an edition\n @param _editionId The id of the edition to set the end time for\n @param _endTime The end time to set (in seconds since unix epoch)"
                  },
                  "functionSelector": "bb314ca1",
                  "id": 10944,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10926,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "13627:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 10927,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10925,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "13611:15:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13611:27:41"
                    }
                  ],
                  "name": "setEndTime",
                  "nameLocation": "13554:10:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10924,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10921,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13573:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10944,
                        "src": "13565:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10920,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13565:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10923,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "13592:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10944,
                        "src": "13585:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10922,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13585:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13564:37:41"
                  },
                  "returnParameters": {
                    "id": 10928,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13639:0:41"
                  },
                  "scope": 11685,
                  "src": "13545:215:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10977,
                    "nodeType": "Block",
                    "src": "14088:214:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10956,
                                "name": "_newSignerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10949,
                                "src": "14106:17:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 10959,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14135:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 10958,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14127:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10957,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14127:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14127:10:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14106:31:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                              "id": 10962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14139:28:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              },
                              "value": "Signer address cannot be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              }
                            ],
                            "id": 10955,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14098:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14098:70:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10964,
                        "nodeType": "ExpressionStatement",
                        "src": "14098:70:41"
                      },
                      {
                        "expression": {
                          "id": 10970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 10965,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "14179:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 10967,
                              "indexExpression": {
                                "id": 10966,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10947,
                                "src": "14188:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14179:20:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                "typeString": "struct ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 10968,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signerAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10397,
                            "src": "14179:34:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10969,
                            "name": "_newSignerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10949,
                            "src": "14216:17:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14179:54:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10971,
                        "nodeType": "ExpressionStatement",
                        "src": "14179:54:41"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10973,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10947,
                              "src": "14265:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10974,
                              "name": "_newSignerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10949,
                              "src": "14277:17:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10972,
                            "name": "SignerAddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10495,
                            "src": "14248:16:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address)"
                            }
                          },
                          "id": 10975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14248:47:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10976,
                        "nodeType": "EmitStatement",
                        "src": "14243:52:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10945,
                    "nodeType": "StructuredDocumentation",
                    "src": "13766:207:41",
                    "text": "@notice Sets the signature address of an edition\n @param _editionId The edition id to set the signature address for\n @param _newSignerAddress The address that will be used to sign purchases"
                  },
                  "functionSelector": "56dee996",
                  "id": 10978,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10952,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "14076:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 10953,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10951,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "14060:15:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14060:27:41"
                    }
                  ],
                  "name": "setSignerAddress",
                  "nameLocation": "13987:16:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10947,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "14012:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10978,
                        "src": "14004:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10946,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14004:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10949,
                        "mutability": "mutable",
                        "name": "_newSignerAddress",
                        "nameLocation": "14032:17:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 10978,
                        "src": "14024:25:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10948,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14024:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14003:47:41"
                  },
                  "returnParameters": {
                    "id": 10954,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14088:0:41"
                  },
                  "scope": 11685,
                  "src": "13978:324:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11014,
                    "nodeType": "Block",
                    "src": "14654:337:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 10990,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10430,
                                    "src": "14756:8:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                      "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                    }
                                  },
                                  "id": 10992,
                                  "indexExpression": {
                                    "id": 10991,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10981,
                                    "src": "14765:10:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14756:20:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                    "typeString": "struct ArtistV6.Edition storage ref"
                                  }
                                },
                                "id": 10993,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signerAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10397,
                                "src": "14756:34:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 10996,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14802:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 10995,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14794:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10994,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14794:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14794:10:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14756:48:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                              "id": 10999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14806:28:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              },
                              "value": "Edition must have a signer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              }
                            ],
                            "id": 10989,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14748:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14748:87:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11001,
                        "nodeType": "ExpressionStatement",
                        "src": "14748:87:41"
                      },
                      {
                        "expression": {
                          "id": 11007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 11002,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "14846:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 11004,
                              "indexExpression": {
                                "id": 11003,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10981,
                                "src": "14855:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14846:20:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                "typeString": "struct ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 11005,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "permissionedQuantity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10395,
                            "src": "14846:41:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11006,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10983,
                            "src": "14890:21:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "14846:65:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 11008,
                        "nodeType": "ExpressionStatement",
                        "src": "14846:65:41"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 11010,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10981,
                              "src": "14950:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11011,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10983,
                              "src": "14962:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 11009,
                            "name": "PermissionedQuantitySet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10501,
                            "src": "14926:23:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint32)"
                            }
                          },
                          "id": 11012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14926:58:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11013,
                        "nodeType": "EmitStatement",
                        "src": "14921:63:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10979,
                    "nodeType": "StructuredDocumentation",
                    "src": "14308:201:41",
                    "text": "@notice Sets the permissioned quantity for an edition\n @param _editionId The edition id to set the permissioned quantity for\n @param _permissionedQuantity The new permissiond quantity"
                  },
                  "functionSelector": "52e25bf2",
                  "id": 11015,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 10986,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "14638:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 10987,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10985,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "14622:15:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14622:27:41"
                    }
                  ],
                  "name": "setPermissionedQuantity",
                  "nameLocation": "14523:23:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10984,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10981,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "14555:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11015,
                        "src": "14547:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10980,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14547:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10983,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "14574:21:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11015,
                        "src": "14567:28:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 10982,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14567:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14546:50:41"
                  },
                  "returnParameters": {
                    "id": 10988,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14654:0:41"
                  },
                  "scope": 11685,
                  "src": "14514:477:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11042,
                    "nodeType": "Block",
                    "src": "15217:153:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 11026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 11022,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "15235:10:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 11023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15235:12:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 11024,
                                    "name": "soundRecoveryAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11449,
                                    "src": "15251:20:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 11025,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15251:22:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15235:38:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 11031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 11027,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "15277:10:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 11028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15277:12:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 11029,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11762,
                                    "src": "15293:5:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 11030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15293:7:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15277:23:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "15235:65:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "756e617574686f72697a6564",
                              "id": 11033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15302:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 11021,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15227:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15227:90:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11035,
                        "nodeType": "ExpressionStatement",
                        "src": "15227:90:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11039,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11018,
                              "src": "15353:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 11036,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "15328:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_ArtistV6_$11685_$",
                                "typeString": "type(contract super ArtistV6)"
                              }
                            },
                            "id": 11038,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11819,
                            "src": "15328:24:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15328:35:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11041,
                        "nodeType": "ExpressionStatement",
                        "src": "15328:35:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11016,
                    "nodeType": "StructuredDocumentation",
                    "src": "14997:161:41",
                    "text": "@notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\n @param _newOwner The new owner of the contract"
                  },
                  "functionSelector": "75a8f08f",
                  "id": 11043,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setOwnerOverride",
                  "nameLocation": "15172:16:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11018,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "15197:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11043,
                        "src": "15189:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11017,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15189:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15188:19:41"
                  },
                  "returnParameters": {
                    "id": 11020,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15217:0:41"
                  },
                  "scope": 11685,
                  "src": "15163:207:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11083,
                    "nodeType": "Block",
                    "src": "15626:263:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 11060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 11055,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10430,
                                      "src": "15657:8:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                      }
                                    },
                                    "id": 11057,
                                    "indexExpression": {
                                      "id": 11056,
                                      "name": "_editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11046,
                                      "src": "15666:10:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15657:20:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                      "typeString": "struct ArtistV6.Edition storage ref"
                                    }
                                  },
                                  "id": 11058,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "quantity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 10387,
                                  "src": "15657:29:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 11059,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15689:1:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15657:33:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 11066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 11061,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10430,
                                      "src": "15694:8:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                      }
                                    },
                                    "id": 11063,
                                    "indexExpression": {
                                      "id": 11062,
                                      "name": "_editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11046,
                                      "src": "15703:10:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15694:20:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                      "typeString": "struct ArtistV6.Edition storage ref"
                                    }
                                  },
                                  "id": 11064,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "permissionedQuantity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 10395,
                                  "src": "15694:41:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 11065,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15738:1:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15694:45:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "15657:82:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e6f6e6578697374656e742065646974696f6e",
                              "id": 11068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15753:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163",
                                "typeString": "literal_string \"Nonexistent edition\""
                              },
                              "value": "Nonexistent edition"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163",
                                "typeString": "literal_string \"Nonexistent edition\""
                              }
                            ],
                            "id": 11054,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15636:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15636:148:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11070,
                        "nodeType": "ExpressionStatement",
                        "src": "15636:148:41"
                      },
                      {
                        "expression": {
                          "id": 11076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 11071,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10430,
                                "src": "15795:8:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                  "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 11073,
                              "indexExpression": {
                                "id": 11072,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11046,
                                "src": "15804:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15795:20:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                "typeString": "struct ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 11074,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "baseURI",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10399,
                            "src": "15795:28:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11075,
                            "name": "_baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11048,
                            "src": "15826:8:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "15795:39:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 11077,
                        "nodeType": "ExpressionStatement",
                        "src": "15795:39:41"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 11079,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11046,
                              "src": "15861:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11080,
                              "name": "_baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11048,
                              "src": "15873:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 11078,
                            "name": "BaseURISet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10507,
                            "src": "15850:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,string memory)"
                            }
                          },
                          "id": 11081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15850:32:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11082,
                        "nodeType": "EmitStatement",
                        "src": "15845:37:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11044,
                    "nodeType": "StructuredDocumentation",
                    "src": "15376:135:41",
                    "text": "@notice Sets the base URI for an edition\n @param _editionId The target edition's id\n @param _baseURI The new base URI"
                  },
                  "functionSelector": "79672692",
                  "id": 11084,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 11051,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "15614:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 11052,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11050,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "15598:15:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15598:27:41"
                    }
                  ],
                  "name": "setEditionBaseURI",
                  "nameLocation": "15525:17:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11046,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "15551:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11084,
                        "src": "15543:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11045,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15543:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11048,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "15579:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11084,
                        "src": "15563:24:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11047,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15563:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15542:46:41"
                  },
                  "returnParameters": {
                    "id": 11053,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15626:0:41"
                  },
                  "scope": 11685,
                  "src": "15516:373:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1051
                  ],
                  "body": {
                    "id": 11144,
                    "nodeType": "Block",
                    "src": "16272:615:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 11095,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11087,
                                  "src": "16298:8:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11094,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "16290:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 11096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16290:17:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 11097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16309:49:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 11093,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16282:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16282:77:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11099,
                        "nodeType": "ExpressionStatement",
                        "src": "16282:77:41"
                      },
                      {
                        "assignments": [
                          11101
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11101,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "16378:9:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "16370:17:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11100,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16370:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11105,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11103,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11087,
                              "src": "16405:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11102,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11316,
                            "src": "16390:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 11104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16390:24:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16370:44:41"
                      },
                      {
                        "assignments": [
                          11107
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11107,
                            "mutability": "mutable",
                            "name": "editionBaseURI",
                            "nameLocation": "16439:14:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "16425:28:41",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 11106,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "16425:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11112,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 11108,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10430,
                              "src": "16456:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 11110,
                            "indexExpression": {
                              "id": 11109,
                              "name": "editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11101,
                              "src": "16465:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16456:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_storage",
                              "typeString": "struct ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 11111,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "baseURI",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10399,
                          "src": "16456:27:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16425:58:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 11115,
                                  "name": "editionBaseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11107,
                                  "src": "16667:14:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 11114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16661:5:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 11113,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16661:5:41",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16661:21:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 11117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "16661:28:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 11118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16692:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "16661:32:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11132,
                        "nodeType": "IfStatement",
                        "src": "16657:145:41",
                        "trueBody": {
                          "id": 11131,
                          "nodeType": "Block",
                          "src": "16695:107:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11123,
                                    "name": "editionBaseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11107,
                                    "src": "16730:14:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 11126,
                                        "name": "_tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11087,
                                        "src": "16763:8:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 11124,
                                        "name": "Strings",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4271,
                                        "src": "16746:7:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                          "typeString": "type(library Strings)"
                                        }
                                      },
                                      "id": 11125,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4133,
                                      "src": "16746:16:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 11127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16746:26:41",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f6d657461646174612e6a736f6e",
                                    "id": 11128,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16774:16:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c",
                                      "typeString": "literal_string \"/metadata.json\""
                                    },
                                    "value": "/metadata.json"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c",
                                      "typeString": "literal_string \"/metadata.json\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 11121,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16716:6:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 11120,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16716:6:41",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "16716:13:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 11129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16716:75:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 11092,
                              "id": 11130,
                              "nodeType": "Return",
                              "src": "16709:82:41"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11136,
                                "name": "_contractBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11684,
                                "src": "16833:16:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 11137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16833:18:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 11140,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11087,
                                  "src": "16870:8:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 11138,
                                  "name": "Strings",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4271,
                                  "src": "16853:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                    "typeString": "type(library Strings)"
                                  }
                                },
                                "id": 11139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4133,
                                "src": "16853:16:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 11141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16853:26:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 11134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16819:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 11133,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "16819:6:41",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "16819:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 11142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16819:61:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 11092,
                        "id": 11143,
                        "nodeType": "Return",
                        "src": "16812:68:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11085,
                    "nodeType": "StructuredDocumentation",
                    "src": "15998:188:41",
                    "text": "@notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\n @dev Concatenate the baseURI and tokenId, to create URI."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 11145,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "16200:8:41",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11089,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16239:8:41"
                  },
                  "parameters": {
                    "id": 11088,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11087,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "16217:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "16209:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11086,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16209:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16208:18:41"
                  },
                  "returnParameters": {
                    "id": 11092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11091,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "16257:13:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11090,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "16257:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16256:15:41"
                  },
                  "scope": 11685,
                  "src": "16191:696:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11159,
                    "nodeType": "Block",
                    "src": "17071:71:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11154,
                                "name": "_contractBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11684,
                                "src": "17102:16:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 11155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17102:18:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "73746f726566726f6e74",
                              "id": 11156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17122:12:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                "typeString": "literal_string \"storefront\""
                              },
                              "value": "storefront"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                "typeString": "literal_string \"storefront\""
                              }
                            ],
                            "expression": {
                              "id": 11152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17088:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 11151,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "17088:6:41",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "17088:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 11157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17088:47:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 11150,
                        "id": 11158,
                        "nodeType": "Return",
                        "src": "17081:54:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11146,
                    "nodeType": "StructuredDocumentation",
                    "src": "16893:114:41",
                    "text": "@notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront"
                  },
                  "functionSelector": "e8a3d485",
                  "id": 11160,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "17021:11:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11147,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17032:2:41"
                  },
                  "returnParameters": {
                    "id": 11150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11149,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11160,
                        "src": "17056:13:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11148,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17056:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17055:15:41"
                  },
                  "scope": 11685,
                  "src": "17012:130:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    149
                  ],
                  "body": {
                    "id": 11218,
                    "nodeType": "Block",
                    "src": "17458:371:41",
                    "statements": [
                      {
                        "assignments": [
                          11174
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11174,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "17476:9:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11218,
                            "src": "17468:17:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11173,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17468:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11178,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11176,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11163,
                              "src": "17503:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11175,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11316,
                            "src": "17488:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 11177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17488:24:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17468:44:41"
                      },
                      {
                        "assignments": [
                          11181
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11181,
                            "mutability": "mutable",
                            "name": "edition",
                            "nameLocation": "17537:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11218,
                            "src": "17522:22:41",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$10400_memory_ptr",
                              "typeString": "struct ArtistV6.Edition"
                            },
                            "typeName": {
                              "id": 11180,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 11179,
                                "name": "Edition",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10400,
                                "src": "17522:7:41"
                              },
                              "referencedDeclaration": 10400,
                              "src": "17522:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_storage_ptr",
                                "typeString": "struct ArtistV6.Edition"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11185,
                        "initialValue": {
                          "baseExpression": {
                            "id": 11182,
                            "name": "editions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10430,
                            "src": "17547:8:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                              "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                            }
                          },
                          "id": 11184,
                          "indexExpression": {
                            "id": 11183,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11174,
                            "src": "17556:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17547:19:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$10400_storage",
                            "typeString": "struct ArtistV6.Edition storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17522:44:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 11192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 11186,
                              "name": "edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11181,
                              "src": "17581:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$10400_memory_ptr",
                                "typeString": "struct ArtistV6.Edition memory"
                              }
                            },
                            "id": 11187,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10381,
                            "src": "17581:24:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 11190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17617:3:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 11189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17609:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 11188,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17609:7:41",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17609:12:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17581:40:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11199,
                        "nodeType": "IfStatement",
                        "src": "17577:107:41",
                        "trueBody": {
                          "id": 11198,
                          "nodeType": "Block",
                          "src": "17623:61:41",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "expression": {
                                      "id": 11193,
                                      "name": "edition",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11181,
                                      "src": "17645:7:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$10400_memory_ptr",
                                        "typeString": "struct ArtistV6.Edition memory"
                                      }
                                    },
                                    "id": 11194,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 10381,
                                    "src": "17645:24:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 11195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17671:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 11196,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17644:29:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(address payable,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 11172,
                              "id": 11197,
                              "nodeType": "Return",
                              "src": "17637:36:41"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11201
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11201,
                            "mutability": "mutable",
                            "name": "royaltyBPS",
                            "nameLocation": "17702:10:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11218,
                            "src": "17694:18:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11200,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17694:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11207,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 11204,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11181,
                                "src": "17723:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$10400_memory_ptr",
                                  "typeString": "struct ArtistV6.Edition memory"
                                }
                              },
                              "id": 11205,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "royaltyBPS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10389,
                              "src": "17723:18:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 11203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17715:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 11202,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17715:7:41",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17715:27:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17694:48:41"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 11208,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11181,
                                "src": "17761:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$10400_memory_ptr",
                                  "typeString": "struct ArtistV6.Edition memory"
                                }
                              },
                              "id": 11209,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10381,
                              "src": "17761:24:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 11212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 11210,
                                      "name": "_salePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11165,
                                      "src": "17788:10:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 11211,
                                      "name": "royaltyBPS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11201,
                                      "src": "17801:10:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "17788:23:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 11213,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17787:25:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "31305f303030",
                                "id": 11214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17815:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10_000"
                              },
                              "src": "17787:34:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 11216,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "17760:62:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "functionReturnParameters": 11172,
                        "id": 11217,
                        "nodeType": "Return",
                        "src": "17753:69:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11161,
                    "nodeType": "StructuredDocumentation",
                    "src": "17148:129:41",
                    "text": "@notice Get royalty information for token\n @param _tokenId token id\n @param _salePrice Sale price for the token"
                  },
                  "functionSelector": "2a55205a",
                  "id": 11219,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "17291:11:41",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11167,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17379:8:41"
                  },
                  "parameters": {
                    "id": 11166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11163,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "17311:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11219,
                        "src": "17303:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17303:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11165,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "17329:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11219,
                        "src": "17321:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11164,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17321:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17302:38:41"
                  },
                  "returnParameters": {
                    "id": 11172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11169,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "17413:16:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11219,
                        "src": "17405:24:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17405:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11171,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "17439:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11219,
                        "src": "17431:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11170,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17431:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17404:49:41"
                  },
                  "scope": 11685,
                  "src": "17282:547:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11252,
                    "nodeType": "Block",
                    "src": "17958:174:41",
                    "statements": [
                      {
                        "assignments": [
                          11226
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11226,
                            "mutability": "mutable",
                            "name": "total",
                            "nameLocation": "17976:5:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11252,
                            "src": "17968:13:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11225,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17968:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11228,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 11227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17984:1:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17968:17:41"
                      },
                      {
                        "body": {
                          "id": 11248,
                          "nodeType": "Block",
                          "src": "18050:54:41",
                          "statements": [
                            {
                              "expression": {
                                "id": 11246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11241,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11226,
                                  "src": "18064:5:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 11242,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10430,
                                      "src": "18073:8:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$10400_storage_$",
                                        "typeString": "mapping(uint256 => struct ArtistV6.Edition storage ref)"
                                      }
                                    },
                                    "id": 11244,
                                    "indexExpression": {
                                      "id": 11243,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11230,
                                      "src": "18082:2:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18073:12:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$10400_storage",
                                      "typeString": "struct ArtistV6.Edition storage ref"
                                    }
                                  },
                                  "id": 11245,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "numSold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 10385,
                                  "src": "18073:20:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "18064:29:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11247,
                              "nodeType": "ExpressionStatement",
                              "src": "18064:29:41"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11233,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11230,
                            "src": "18016:2:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 11234,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10425,
                                "src": "18021:11:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 11235,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "18021:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 11236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18021:21:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18016:26:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11249,
                        "initializationExpression": {
                          "assignments": [
                            11230
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11230,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "18008:2:41",
                              "nodeType": "VariableDeclaration",
                              "scope": 11249,
                              "src": "18000:10:41",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11229,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18000:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 11232,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 11231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18013:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18000:14:41"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "18044:4:41",
                            "subExpression": {
                              "id": 11238,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11230,
                              "src": "18044:2:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11240,
                          "nodeType": "ExpressionStatement",
                          "src": "18044:4:41"
                        },
                        "nodeType": "ForStatement",
                        "src": "17995:109:41"
                      },
                      {
                        "expression": {
                          "id": 11250,
                          "name": "total",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11226,
                          "src": "18120:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11224,
                        "id": 11251,
                        "nodeType": "Return",
                        "src": "18113:12:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11220,
                    "nodeType": "StructuredDocumentation",
                    "src": "17835:63:41",
                    "text": "@notice The total number of tokens created by this contract"
                  },
                  "functionSelector": "18160ddd",
                  "id": 11253,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "17912:11:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11221,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17923:2:41"
                  },
                  "returnParameters": {
                    "id": 11224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11223,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11253,
                        "src": "17949:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11222,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17949:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17948:9:41"
                  },
                  "scope": 11685,
                  "src": "17903:229:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    940,
                    2986
                  ],
                  "body": {
                    "id": 11276,
                    "nodeType": "Block",
                    "src": "18483:142:41",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 11269,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11265,
                                    "name": "IERC2981Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 150,
                                    "src": "18517:19:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  ],
                                  "id": 11264,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "18512:4:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 11266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18512:25:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981Upgradeable_$150",
                                  "typeString": "type(contract IERC2981Upgradeable)"
                                }
                              },
                              "id": 11267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "18512:37:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 11268,
                              "name": "_interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11256,
                              "src": "18553:12:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "18512:53:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 11272,
                                "name": "_interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11256,
                                "src": "18605:12:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 11270,
                                "name": "ERC721Upgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "18569:17:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract ERC721Upgradeable)"
                                }
                              },
                              "id": 11271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 940,
                              "src": "18569:35:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 11273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18569:49:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18512:106:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 11263,
                        "id": 11275,
                        "nodeType": "Return",
                        "src": "18493:125:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11254,
                    "nodeType": "StructuredDocumentation",
                    "src": "18138:181:41",
                    "text": "@notice Informs other contracts which interfaces this contract supports\n @param _interfaceId The interface id to check\n @dev https://eips.ethereum.org/EIPS/eip-165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 11277,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "18333:17:41",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11260,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 11258,
                        "name": "ERC721Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1718,
                        "src": "18417:17:41"
                      },
                      {
                        "id": 11259,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "18436:18:41"
                      }
                    ],
                    "src": "18408:47:41"
                  },
                  "parameters": {
                    "id": 11257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11256,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "18358:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11277,
                        "src": "18351:19:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 11255,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "18351:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18350:21:41"
                  },
                  "returnParameters": {
                    "id": 11263,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11262,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11277,
                        "src": "18473:4:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11261,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18473:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18472:6:41"
                  },
                  "scope": 11685,
                  "src": "18324:301:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11289,
                    "nodeType": "Block",
                    "src": "18750:117:41",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 11283,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10425,
                                "src": "18767:11:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 11284,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "18767:19:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 11285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18767:21:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 11286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18791:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "18767:25:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11282,
                        "id": 11288,
                        "nodeType": "Return",
                        "src": "18760:32:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11278,
                    "nodeType": "StructuredDocumentation",
                    "src": "18631:58:41",
                    "text": "@notice returns the number of editions for this artist"
                  },
                  "functionSelector": "4bf44026",
                  "id": 11290,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "editionCount",
                  "nameLocation": "18703:12:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11279,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18715:2:41"
                  },
                  "returnParameters": {
                    "id": 11282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11281,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11290,
                        "src": "18741:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18741:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18740:9:41"
                  },
                  "scope": 11685,
                  "src": "18694:173:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11315,
                    "nodeType": "Block",
                    "src": "19038:356:41",
                    "statements": [
                      {
                        "assignments": [
                          11299
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11299,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "19120:9:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11315,
                            "src": "19112:17:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11298,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19112:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11303,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11300,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11293,
                            "src": "19132:8:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "313238",
                            "id": 11301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19144:3:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "19132:15:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19112:35:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11304,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11299,
                            "src": "19245:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19258:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19245:14:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11312,
                        "nodeType": "IfStatement",
                        "src": "19241:120:41",
                        "trueBody": {
                          "id": 11311,
                          "nodeType": "Block",
                          "src": "19261:100:41",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 11307,
                                  "name": "_tokenToEdition",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10434,
                                  "src": "19325:15:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 11309,
                                "indexExpression": {
                                  "id": 11308,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11293,
                                  "src": "19341:8:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19325:25:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 11297,
                              "id": 11310,
                              "nodeType": "Return",
                              "src": "19318:32:41"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 11313,
                          "name": "editionId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11299,
                          "src": "19378:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11297,
                        "id": 11314,
                        "nodeType": "Return",
                        "src": "19371:16:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11291,
                    "nodeType": "StructuredDocumentation",
                    "src": "18873:88:41",
                    "text": "@notice Returns the edition id for a given token id\n @param _tokenId token id"
                  },
                  "functionSelector": "602787ed",
                  "id": 11316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenToEdition",
                  "nameLocation": "18975:14:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11293,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "18998:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11316,
                        "src": "18990:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18990:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18989:18:41"
                  },
                  "returnParameters": {
                    "id": 11297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11296,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11316,
                        "src": "19029:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11295,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19029:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19028:9:41"
                  },
                  "scope": 11685,
                  "src": "18966:428:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11363,
                    "nodeType": "Block",
                    "src": "19620:211:41",
                    "statements": [
                      {
                        "assignments": [
                          11330
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11330,
                            "mutability": "mutable",
                            "name": "owners",
                            "nameLocation": "19647:6:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11363,
                            "src": "19630:23:41",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11328,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19630:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11329,
                              "nodeType": "ArrayTypeName",
                              "src": "19630:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11337,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 11334,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11320,
                                "src": "19670:9:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 11335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "19670:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19656:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11331,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19660:7:41",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11332,
                              "nodeType": "ArrayTypeName",
                              "src": "19660:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 11336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19656:31:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19630:57:41"
                      },
                      {
                        "body": {
                          "id": 11359,
                          "nodeType": "Block",
                          "src": "19744:58:41",
                          "statements": [
                            {
                              "expression": {
                                "id": 11357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 11349,
                                    "name": "owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11330,
                                    "src": "19758:6:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 11351,
                                  "indexExpression": {
                                    "id": 11350,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11339,
                                    "src": "19765:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19758:9:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 11353,
                                        "name": "_tokenIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11320,
                                        "src": "19778:9:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 11355,
                                      "indexExpression": {
                                        "id": 11354,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11339,
                                        "src": "19788:1:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "19778:12:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 11352,
                                    "name": "ownerOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 992,
                                    "src": "19770:7:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view returns (address)"
                                    }
                                  },
                                  "id": 11356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19770:21:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "19758:33:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11358,
                              "nodeType": "ExpressionStatement",
                              "src": "19758:33:41"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11342,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11339,
                            "src": "19717:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 11343,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11320,
                              "src": "19721:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 11344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "19721:16:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19717:20:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11360,
                        "initializationExpression": {
                          "assignments": [
                            11339
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11339,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "19710:1:41",
                              "nodeType": "VariableDeclaration",
                              "scope": 11360,
                              "src": "19702:9:41",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11338,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19702:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 11341,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 11340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19714:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "19702:13:41"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "19739:3:41",
                            "subExpression": {
                              "id": 11346,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11339,
                              "src": "19739:1:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11348,
                          "nodeType": "ExpressionStatement",
                          "src": "19739:3:41"
                        },
                        "nodeType": "ForStatement",
                        "src": "19697:105:41"
                      },
                      {
                        "expression": {
                          "id": 11361,
                          "name": "owners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11330,
                          "src": "19818:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 11325,
                        "id": 11362,
                        "nodeType": "Return",
                        "src": "19811:13:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11317,
                    "nodeType": "StructuredDocumentation",
                    "src": "19400:118:41",
                    "text": "@notice Returns a list of owner addresses for a given list of token ids\n @param _tokenIds List of token ids"
                  },
                  "functionSelector": "52f5c2e4",
                  "id": 11364,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownersOfTokenIds",
                  "nameLocation": "19532:16:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11320,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nameLocation": "19568:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11364,
                        "src": "19549:28:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11318,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "19549:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11319,
                          "nodeType": "ArrayTypeName",
                          "src": "19549:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19548:30:41"
                  },
                  "returnParameters": {
                    "id": 11325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11324,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11364,
                        "src": "19602:16:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11322,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "19602:7:41",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11323,
                          "nodeType": "ArrayTypeName",
                          "src": "19602:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19601:18:41"
                  },
                  "scope": 11685,
                  "src": "19523:308:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11420,
                    "nodeType": "Block",
                    "src": "20194:308:41",
                    "statements": [
                      {
                        "assignments": [
                          11380
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11380,
                            "mutability": "mutable",
                            "name": "claimed",
                            "nameLocation": "20218:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11420,
                            "src": "20204:21:41",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11378,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "20204:4:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11379,
                              "nodeType": "ArrayTypeName",
                              "src": "20204:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11387,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 11384,
                                "name": "_ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11370,
                                "src": "20239:14:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 11385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "20239:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "20228:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bool[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11381,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "20232:4:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11382,
                              "nodeType": "ArrayTypeName",
                              "src": "20232:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            }
                          },
                          "id": 11386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20228:33:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20204:57:41"
                      },
                      {
                        "body": {
                          "id": 11416,
                          "nodeType": "Block",
                          "src": "20324:147:41",
                          "statements": [
                            {
                              "assignments": [
                                11400,
                                null,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11400,
                                  "mutability": "mutable",
                                  "name": "storedBit",
                                  "nameLocation": "20347:9:41",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11416,
                                  "src": "20339:17:41",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11399,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20339:7:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null,
                                null,
                                null
                              ],
                              "id": 11407,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 11402,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11367,
                                    "src": "20389:10:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 11403,
                                      "name": "_ticketNumbers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11370,
                                      "src": "20401:14:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 11405,
                                    "indexExpression": {
                                      "id": 11404,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11389,
                                      "src": "20416:1:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "20401:17:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11401,
                                  "name": "_getBitForTicketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11638,
                                  "src": "20366:22:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 11406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20366:53:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20338:81:41"
                            },
                            {
                              "expression": {
                                "id": 11414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 11408,
                                    "name": "claimed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11380,
                                    "src": "20433:7:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 11410,
                                  "indexExpression": {
                                    "id": 11409,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11389,
                                    "src": "20441:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "20433:10:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 11411,
                                    "name": "storedBit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11400,
                                    "src": "20446:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 11412,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20459:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "20446:14:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "20433:27:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11415,
                              "nodeType": "ExpressionStatement",
                              "src": "20433:27:41"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11392,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11389,
                            "src": "20292:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 11393,
                              "name": "_ticketNumbers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11370,
                              "src": "20296:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 11394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "20296:21:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20292:25:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11417,
                        "initializationExpression": {
                          "assignments": [
                            11389
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11389,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "20285:1:41",
                              "nodeType": "VariableDeclaration",
                              "scope": 11417,
                              "src": "20277:9:41",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11388,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20277:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 11391,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 11390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20289:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20277:13:41"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "20319:3:41",
                            "subExpression": {
                              "id": 11396,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11389,
                              "src": "20319:1:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11398,
                          "nodeType": "ExpressionStatement",
                          "src": "20319:3:41"
                        },
                        "nodeType": "ForStatement",
                        "src": "20272:199:41"
                      },
                      {
                        "expression": {
                          "id": 11418,
                          "name": "claimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11380,
                          "src": "20488:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "functionReturnParameters": 11375,
                        "id": 11419,
                        "nodeType": "Return",
                        "src": "20481:14:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11365,
                    "nodeType": "StructuredDocumentation",
                    "src": "19837:203:41",
                    "text": "@notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\n @param _editionId Edition id\n @param _ticketNumbers List of ticket numbers (indexes)"
                  },
                  "functionSelector": "065d5b85",
                  "id": 11421,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkTicketNumbers",
                  "nameLocation": "20054:18:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11371,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11367,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "20081:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11421,
                        "src": "20073:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11366,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20073:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11370,
                        "mutability": "mutable",
                        "name": "_ticketNumbers",
                        "nameLocation": "20112:14:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11421,
                        "src": "20093:33:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11368,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20093:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11369,
                          "nodeType": "ArrayTypeName",
                          "src": "20093:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20072:55:41"
                  },
                  "returnParameters": {
                    "id": 11375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11374,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11421,
                        "src": "20175:13:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11372,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "20175:4:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 11373,
                          "nodeType": "ArrayTypeName",
                          "src": "20175:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20174:15:41"
                  },
                  "scope": 11685,
                  "src": "20045:457:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11448,
                    "nodeType": "Block",
                    "src": "20679:276:41",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 11427,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "20693:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 11428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "20693:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 11429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20710:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "20693:18:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 11434,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "20797:5:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "20797:13:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 11436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20814:1:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "20797:18:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 11445,
                            "nodeType": "Block",
                            "src": "20897:52:41",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "756e737570706f7274656420636861696e",
                                      "id": 11442,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20918:19:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45",
                                        "typeString": "literal_string \"unsupported chain\""
                                      },
                                      "value": "unsupported chain"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45",
                                        "typeString": "literal_string \"unsupported chain\""
                                      }
                                    ],
                                    "id": 11441,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "20911:6:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 11443,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20911:27:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 11444,
                                "nodeType": "ExpressionStatement",
                                "src": "20911:27:41"
                              }
                            ]
                          },
                          "id": 11446,
                          "nodeType": "IfStatement",
                          "src": "20793:156:41",
                          "trueBody": {
                            "id": 11440,
                            "nodeType": "Block",
                            "src": "20817:74:41",
                            "statements": [
                              {
                                "expression": {
                                  "hexValue": "307865653335453934364464373345463738643335323435346333463931356532634130613039643837",
                                  "id": 11438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20838:42:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "value": "0xee35E946Dd73EF78d352454c3F915e2cA0a09d87"
                                },
                                "functionReturnParameters": 11426,
                                "id": 11439,
                                "nodeType": "Return",
                                "src": "20831:49:41"
                              }
                            ]
                          }
                        },
                        "id": 11447,
                        "nodeType": "IfStatement",
                        "src": "20689:260:41",
                        "trueBody": {
                          "id": 11433,
                          "nodeType": "Block",
                          "src": "20713:74:41",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "307838353861393235313134383537313543666237353466333937613738393462373732346337416264",
                                "id": 11431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20734:42:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "value": "0x858a92511485715Cfb754f397a7894b7724c7Abd"
                              },
                              "functionReturnParameters": 11426,
                              "id": 11432,
                              "nodeType": "Return",
                              "src": "20727:49:41"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11422,
                    "nodeType": "StructuredDocumentation",
                    "src": "20508:96:41",
                    "text": "@notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract"
                  },
                  "functionSelector": "0bcca831",
                  "id": 11449,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "soundRecoveryAddress",
                  "nameLocation": "20618:20:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20638:2:41"
                  },
                  "returnParameters": {
                    "id": 11426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11425,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11449,
                        "src": "20670:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11424,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20670:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20669:9:41"
                  },
                  "scope": 11685,
                  "src": "20609:346:41",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11482,
                    "nodeType": "Block",
                    "src": "21288:235:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 11460,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "21314:4:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ArtistV6_$11685",
                                        "typeString": "contract ArtistV6"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ArtistV6_$11685",
                                        "typeString": "contract ArtistV6"
                                      }
                                    ],
                                    "id": 11459,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21306:7:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 11458,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21306:7:41",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21306:13:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 11462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "21306:21:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 11463,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11454,
                                "src": "21331:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21306:32:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                              "id": 11465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21340:31:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              },
                              "value": "Insufficient balance for send"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              }
                            ],
                            "id": 11457,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21298:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21298:74:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11467,
                        "nodeType": "ExpressionStatement",
                        "src": "21298:74:41"
                      },
                      {
                        "assignments": [
                          11469,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11469,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "21389:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11482,
                            "src": "21384:12:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 11468,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "21384:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 11476,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 11474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21434:2:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 11470,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11452,
                                "src": "21402:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 11471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "21402:15:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 11473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 11472,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11454,
                                "src": "21425:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "21402:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 11475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21402:35:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21383:54:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11478,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11469,
                              "src": "21455:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e74206d61792068617665207265766572746564",
                              "id": 11479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21464:51:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              },
                              "value": "Unable to send value: recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              }
                            ],
                            "id": 11477,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21447:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21447:69:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11481,
                        "nodeType": "ExpressionStatement",
                        "src": "21447:69:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11450,
                    "nodeType": "StructuredDocumentation",
                    "src": "21067:143:41",
                    "text": "@notice Sends funds to an address\n @param _recipient The address to send funds to\n @param _amount The amount of funds to send"
                  },
                  "id": 11483,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendFunds",
                  "nameLocation": "21224:10:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11452,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "21251:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11483,
                        "src": "21235:26:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 11451,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21235:15:41",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11454,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "21271:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11483,
                        "src": "21263:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11453,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21263:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21234:45:41"
                  },
                  "returnParameters": {
                    "id": 11456,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21288:0:41"
                  },
                  "scope": 11685,
                  "src": "21215:308:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 11569,
                    "nodeType": "Block",
                    "src": "21960:1062:41",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11496,
                                "name": "_ticketNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11490,
                                "src": "22146:13:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                },
                                "id": 11499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 11497,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22162:1:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 11498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22165:2:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "22162:5:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                }
                              },
                              "src": "22146:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                              "id": 11501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22169:27:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              },
                              "value": "Ticket number exceeds max"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              }
                            ],
                            "id": 11495,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22138:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22138:59:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11503,
                        "nodeType": "ExpressionStatement",
                        "src": "22138:59:41"
                      },
                      {
                        "assignments": [
                          11505,
                          11507,
                          11509,
                          11511
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11505,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "22261:9:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11569,
                            "src": "22253:17:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11504,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22253:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11507,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "22292:10:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11569,
                            "src": "22284:18:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11506,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22284:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11509,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "22324:16:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11569,
                            "src": "22316:24:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11508,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22316:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11511,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "22362:16:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11569,
                            "src": "22354:24:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11510,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22354:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11516,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11513,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11488,
                              "src": "22414:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11514,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11490,
                              "src": "22426:13:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11512,
                            "name": "_getBitForTicketNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11638,
                            "src": "22391:22:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 11515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22391:49:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22239:201:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11518,
                                "name": "storedBit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11505,
                                "src": "22459:9:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22472:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22459:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c726561647920636c61696d6564",
                              "id": 11521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22475:46:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              },
                              "value": "Invalid ticket number or NFT already claimed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              }
                            ],
                            "id": 11517,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22451:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22451:71:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11523,
                        "nodeType": "ExpressionStatement",
                        "src": "22451:71:41"
                      },
                      {
                        "expression": {
                          "id": 11538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 11524,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10448,
                                "src": "22607:13:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 11527,
                              "indexExpression": {
                                "id": 11525,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11488,
                                "src": "22621:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22607:25:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 11528,
                            "indexExpression": {
                              "id": 11526,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11511,
                              "src": "22633:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22607:43:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11537,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11529,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11507,
                              "src": "22653:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 11532,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "22675:1:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 11531,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22667:7:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 11530,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22667:7:41",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 11533,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22667:10:41",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "id": 11534,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11509,
                                    "src": "22681:16:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "22667:30:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11536,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "22666:32:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "22653:45:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22607:91:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11539,
                        "nodeType": "ExpressionStatement",
                        "src": "22607:91:41"
                      },
                      {
                        "assignments": [
                          11541
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11541,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "22717:6:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11569,
                            "src": "22709:14:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 11540,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "22709:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11563,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 11545,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22783:10:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 11546,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10417,
                                  "src": "22811:16:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 11550,
                                          "name": "PERMISSIONED_SALE_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10415,
                                          "src": "22866:26:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 11553,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "22902:4:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ArtistV6_$11685",
                                                "typeString": "contract ArtistV6"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_ArtistV6_$11685",
                                                "typeString": "contract ArtistV6"
                                              }
                                            ],
                                            "id": 11552,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "22894:7:41",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 11551,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "22894:7:41",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 11554,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22894:13:41",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 11555,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "22909:3:41",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 11556,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "22909:10:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 11557,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11488,
                                          "src": "22921:10:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 11558,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11490,
                                          "src": "22933:13:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 11548,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "22855:3:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 11549,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "22855:10:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 11559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22855:92:41",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 11547,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "22845:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 11560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22845:103:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 11543,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22749:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 11544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "22749:16:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 11561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22749:213:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 11542,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "22726:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 11562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22726:246:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22709:263:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11566,
                              "name": "_signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11486,
                              "src": "23004:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 11564,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11541,
                              "src": "22989:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 11565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4427,
                            "src": "22989:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 11567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22989:26:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11494,
                        "id": 11568,
                        "nodeType": "Return",
                        "src": "22982:33:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11484,
                    "nodeType": "StructuredDocumentation",
                    "src": "21529:281:41",
                    "text": "@notice Gets signer address to validate permissioned purchase\n @param _signature signed message\n @param _editionId edition id\n @param _ticketNumber ticket number to check\n @return address of signer\n @dev https://eips.ethereum.org/EIPS/eip-712"
                  },
                  "id": 11570,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "21824:9:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11486,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "21858:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11570,
                        "src": "21843:25:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11485,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "21843:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11488,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "21886:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11570,
                        "src": "21878:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11487,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21878:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11490,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "21914:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11570,
                        "src": "21906:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21906:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21833:100:41"
                  },
                  "returnParameters": {
                    "id": 11494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11493,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11570,
                        "src": "21951:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11492,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21951:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21950:9:41"
                  },
                  "scope": 11685,
                  "src": "21815:1207:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 11637,
                    "nodeType": "Block",
                    "src": "23398:763:41",
                    "statements": [
                      {
                        "assignments": [
                          11587
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11587,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "23416:10:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11637,
                            "src": "23408:18:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11586,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23408:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11588,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23408:18:41"
                      },
                      {
                        "assignments": [
                          11590
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11590,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "23484:16:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11637,
                            "src": "23476:24:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11589,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23476:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11591,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23476:24:41"
                      },
                      {
                        "assignments": [
                          11593
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11593,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "23554:16:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11637,
                            "src": "23546:24:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11592,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23546:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11594,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23546:24:41"
                      },
                      {
                        "assignments": [
                          11596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11596,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "23649:9:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11637,
                            "src": "23641:17:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11595,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23641:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11597,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23641:17:41"
                      },
                      {
                        "id": 11610,
                        "nodeType": "UncheckedBlock",
                        "src": "23739:125:41",
                        "statements": [
                          {
                            "expression": {
                              "id": 11602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 11598,
                                "name": "ticketNumbersIdx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11590,
                                "src": "23763:16:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11599,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11575,
                                  "src": "23782:13:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 11600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23798:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "23782:19:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23763:38:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11603,
                            "nodeType": "ExpressionStatement",
                            "src": "23763:38:41"
                          },
                          {
                            "expression": {
                              "id": 11608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 11604,
                                "name": "localGroupOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11593,
                                "src": "23815:16:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11605,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11575,
                                  "src": "23834:13:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 11606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23850:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "23834:19:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23815:38:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11609,
                            "nodeType": "ExpressionStatement",
                            "src": "23815:38:41"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 11617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11611,
                            "name": "localGroup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11587,
                            "src": "23922:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 11612,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10448,
                                "src": "23935:13:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 11614,
                              "indexExpression": {
                                "id": 11613,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11573,
                                "src": "23949:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23935:25:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 11616,
                            "indexExpression": {
                              "id": 11615,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11590,
                              "src": "23961:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "23935:43:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23922:56:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11618,
                        "nodeType": "ExpressionStatement",
                        "src": "23922:56:41"
                      },
                      {
                        "expression": {
                          "id": 11629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11619,
                            "name": "storedBit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11596,
                            "src": "24020:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11622,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 11620,
                                    "name": "localGroup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11587,
                                    "src": "24033:10:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "id": 11621,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11593,
                                    "src": "24047:16:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24033:30:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11623,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "24032:32:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "31",
                                  "id": 11626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24075:1:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "id": 11625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24067:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11624,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24067:7:41",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24067:10:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24032:45:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24020:57:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11630,
                        "nodeType": "ExpressionStatement",
                        "src": "24020:57:41"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 11631,
                              "name": "storedBit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11596,
                              "src": "24096:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11632,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11587,
                              "src": "24107:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11633,
                              "name": "localGroupOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11593,
                              "src": "24119:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11634,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11590,
                              "src": "24137:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 11635,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "24095:59:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 11585,
                        "id": 11636,
                        "nodeType": "Return",
                        "src": "24088:66:41"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11571,
                    "nodeType": "StructuredDocumentation",
                    "src": "23028:146:41",
                    "text": "@notice Gets the bit variables associated with a ticket number\n @param _editionId edition id\n @param _ticketNumber ticket number"
                  },
                  "id": 11638,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBitForTicketNumber",
                  "nameLocation": "23188:22:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11576,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11573,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "23219:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11638,
                        "src": "23211:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11572,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23211:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11575,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "23239:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 11638,
                        "src": "23231:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11574,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23231:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23210:43:41"
                  },
                  "returnParameters": {
                    "id": 11585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11578,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11638,
                        "src": "23313:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23313:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11580,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11638,
                        "src": "23334:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23334:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11582,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11638,
                        "src": "23355:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11581,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23355:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11584,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11638,
                        "src": "23376:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23376:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23299:94:41"
                  },
                  "scope": 11685,
                  "src": "23179:982:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 11683,
                    "nodeType": "Block",
                    "src": "24232:321:41",
                    "statements": [
                      {
                        "assignments": [
                          11644
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11644,
                            "mutability": "mutable",
                            "name": "contractAddress",
                            "nameLocation": "24256:15:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 11683,
                            "src": "24242:29:41",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 11643,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "24242:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11659,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 11653,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "24318:4:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ArtistV6_$11685",
                                            "typeString": "contract ArtistV6"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_ArtistV6_$11685",
                                            "typeString": "contract ArtistV6"
                                          }
                                        ],
                                        "id": 11652,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "24310:7:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 11651,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "24310:7:41",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 11654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "24310:13:41",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11650,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24302:7:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 11649,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24302:7:41",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24302:22:41",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 11648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24294:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 11647,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24294:7:41",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 11656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24294:31:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "3230",
                              "id": 11657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24327:2:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              }
                            ],
                            "expression": {
                              "id": 11645,
                              "name": "Strings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4271,
                              "src": "24274:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                "typeString": "type(library Strings)"
                              }
                            },
                            "id": 11646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toHexString",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4250,
                            "src": "24274:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 11658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24274:56:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24242:88:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 11660,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "24344:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 11661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "24344:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 11662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24361:1:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "24344:18:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11681,
                          "nodeType": "Block",
                          "src": "24471:76:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11676,
                                    "name": "baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10419,
                                    "src": "24506:7:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  },
                                  {
                                    "id": 11677,
                                    "name": "contractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11644,
                                    "src": "24515:15:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 11678,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24532:3:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 11674,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24492:6:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 11673,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24492:6:41",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "24492:13:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 11679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24492:44:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 11642,
                              "id": 11680,
                              "nodeType": "Return",
                              "src": "24485:51:41"
                            }
                          ]
                        },
                        "id": 11682,
                        "nodeType": "IfStatement",
                        "src": "24340:207:41",
                        "trueBody": {
                          "id": 11672,
                          "nodeType": "Block",
                          "src": "24364:101:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f",
                                    "id": 11667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24399:32:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96",
                                      "typeString": "literal_string \"https://metadata.sound.xyz/v1/\""
                                    },
                                    "value": "https://metadata.sound.xyz/v1/"
                                  },
                                  {
                                    "id": 11668,
                                    "name": "contractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11644,
                                    "src": "24433:15:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 11669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24450:3:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96",
                                      "typeString": "literal_string \"https://metadata.sound.xyz/v1/\""
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 11665,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24385:6:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 11664,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24385:6:41",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11666,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "24385:13:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 11670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24385:69:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 11642,
                              "id": 11671,
                              "nodeType": "Return",
                              "src": "24378:76:41"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 11684,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_contractBaseURI",
                  "nameLocation": "24176:16:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11639,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24192:2:41"
                  },
                  "returnParameters": {
                    "id": 11642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11641,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11684,
                        "src": "24217:13:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11640,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "24217:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24216:15:41"
                  },
                  "scope": 11685,
                  "src": "24167:386:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 11686,
              "src": "2223:22332:41",
              "usedErrors": []
            }
          ],
          "src": "45:24511:41"
        },
        "id": 41
      },
      "contracts/auxillary/AccessManager.sol": {
        "ast": {
          "absolutePath": "contracts/auxillary/AccessManager.sol",
          "exportedSymbols": {
            "AccessManager": [
              11928
            ],
            "AddressUpgradeable": [
              2122
            ],
            "ContextUpgradeable": [
              2164
            ],
            "Initializable": [
              690
            ]
          },
          "id": 11929,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11687,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".14"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:24:42"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
              "id": 11688,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11929,
              "sourceUnit": 2165,
              "src": "59:74:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "id": 11689,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11929,
              "sourceUnit": 691,
              "src": "134:75:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11691,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "496:13:42"
                  },
                  "id": 11692,
                  "nodeType": "InheritanceSpecifier",
                  "src": "496:13:42"
                },
                {
                  "baseName": {
                    "id": 11693,
                    "name": "ContextUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2164,
                    "src": "511:18:42"
                  },
                  "id": 11694,
                  "nodeType": "InheritanceSpecifier",
                  "src": "511:18:42"
                }
              ],
              "canonicalName": "AccessManager",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 11690,
                "nodeType": "StructuredDocumentation",
                "src": "211:259:42",
                "text": "@title AccessManager\n @author OpenZeppelin & Sound.xyz (@gigma)\n @notice Grants ownership to the deployer, and allows them to grant or revoke roles for other accounts.\n @dev Forked from OpenZeppelin Contracts (OwnableUpgradeable & AccessControl)"
              },
              "fullyImplemented": true,
              "id": 11928,
              "linearizedBaseContracts": [
                11928,
                2164,
                690
              ],
              "name": "AccessManager",
              "nameLocation": "479:13:42",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "75b238fc",
                  "id": 11699,
                  "mutability": "constant",
                  "name": "ADMIN_ROLE",
                  "nameLocation": "593:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11928,
                  "src": "569:55:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11695,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "569:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "41444d494e",
                        "id": 11697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "616:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42",
                          "typeString": "literal_string \"ADMIN\""
                        },
                        "value": "ADMIN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_df8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42",
                          "typeString": "literal_string \"ADMIN\""
                        }
                      ],
                      "id": 11696,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "606:9:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "606:18:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11701,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "647:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11928,
                  "src": "631:22:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11700,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "631:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 11707,
                  "mutability": "mutable",
                  "name": "_roles",
                  "nameLocation": "744:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11928,
                  "src": "691:59:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(bytes32 => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 11706,
                    "keyType": {
                      "id": 11702,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "699:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "691:44:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(bytes32 => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 11705,
                      "keyType": {
                        "id": 11703,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "718:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "710:24:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 11704,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "729:4:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
                  "id": 11713,
                  "name": "OwnershipTransferred",
                  "nameLocation": "763:20:42",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11709,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "800:13:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11713,
                        "src": "784:29:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11708,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "784:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11711,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "831:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11713,
                        "src": "815:24:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11710,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "815:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "783:57:42"
                  },
                  "src": "757:84:42"
                },
                {
                  "anonymous": false,
                  "eventSelector": "2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
                  "id": 11721,
                  "name": "RoleGranted",
                  "nameLocation": "852:11:42",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11720,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11715,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "880:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11721,
                        "src": "864:20:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11714,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "864:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11717,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "902:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11721,
                        "src": "886:23:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11716,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "886:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11719,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "927:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11721,
                        "src": "911:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11718,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "911:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "863:71:42"
                  },
                  "src": "846:89:42"
                },
                {
                  "anonymous": false,
                  "eventSelector": "f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b",
                  "id": 11729,
                  "name": "RoleRevoked",
                  "nameLocation": "946:11:42",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11728,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11723,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "974:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11729,
                        "src": "958:20:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11722,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "958:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11725,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "996:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11729,
                        "src": "980:23:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "980:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11727,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "1021:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11729,
                        "src": "1005:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11726,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1005:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "957:71:42"
                  },
                  "src": "940:89:42"
                },
                {
                  "body": {
                    "id": 11741,
                    "nodeType": "Block",
                    "src": "1275:85:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11735,
                            "name": "__Context_init_unchained",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2140,
                            "src": "1285:24:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 11736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1285:26:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11737,
                        "nodeType": "ExpressionStatement",
                        "src": "1285:26:42"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11738,
                            "name": "__AccessManager_init_unchained",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11753,
                            "src": "1321:30:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 11739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1321:32:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11740,
                        "nodeType": "ExpressionStatement",
                        "src": "1321:32:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11730,
                    "nodeType": "StructuredDocumentation",
                    "src": "1121:91:42",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 11742,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 11733,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11732,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1258:16:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1258:16:42"
                    }
                  ],
                  "name": "__AccessManager_init",
                  "nameLocation": "1226:20:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11731,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1246:2:42"
                  },
                  "returnParameters": {
                    "id": 11734,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1275:0:42"
                  },
                  "scope": 11928,
                  "src": "1217:143:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11752,
                    "nodeType": "Block",
                    "src": "1434:49:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11748,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2149,
                                "src": "1463:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 11749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1463:12:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11747,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11819,
                            "src": "1444:18:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1444:32:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11751,
                        "nodeType": "ExpressionStatement",
                        "src": "1444:32:42"
                      }
                    ]
                  },
                  "id": 11753,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 11745,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11744,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 653,
                        "src": "1417:16:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1417:16:42"
                    }
                  ],
                  "name": "__AccessManager_init_unchained",
                  "nameLocation": "1375:30:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11743,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1405:2:42"
                  },
                  "returnParameters": {
                    "id": 11746,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1434:0:42"
                  },
                  "scope": 11928,
                  "src": "1366:117:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11761,
                    "nodeType": "Block",
                    "src": "1606:30:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 11759,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11701,
                          "src": "1623:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11758,
                        "id": 11760,
                        "nodeType": "Return",
                        "src": "1616:13:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11754,
                    "nodeType": "StructuredDocumentation",
                    "src": "1489:65:42",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 11762,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "1568:5:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11755,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1573:2:42"
                  },
                  "returnParameters": {
                    "id": 11758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11757,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11762,
                        "src": "1597:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11756,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1597:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1596:9:42"
                  },
                  "scope": 11928,
                  "src": "1559:77:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11775,
                    "nodeType": "Block",
                    "src": "1745:96:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 11766,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11762,
                                  "src": "1763:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 11767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1763:7:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 11768,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2149,
                                  "src": "1774:10:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 11769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1774:12:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1763:23:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 11771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1788:34:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 11765,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1755:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1755:68:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11773,
                        "nodeType": "ExpressionStatement",
                        "src": "1755:68:42"
                      },
                      {
                        "id": 11774,
                        "nodeType": "PlaceholderStatement",
                        "src": "1833:1:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11763,
                    "nodeType": "StructuredDocumentation",
                    "src": "1642:77:42",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 11776,
                  "name": "onlyOwner",
                  "nameLocation": "1733:9:42",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 11764,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1742:2:42"
                  },
                  "src": "1724:117:42",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11798,
                    "nodeType": "Block",
                    "src": "2052:128:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11785,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11779,
                                "src": "2070:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 11788,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2090:1:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 11787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2082:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 11786,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2082:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 11789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2082:10:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2070:22:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 11791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2094:40:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 11784,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2062:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2062:73:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11793,
                        "nodeType": "ExpressionStatement",
                        "src": "2062:73:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11795,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11779,
                              "src": "2164:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11794,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11819,
                            "src": "2145:18:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2145:28:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11797,
                        "nodeType": "ExpressionStatement",
                        "src": "2145:28:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11777,
                    "nodeType": "StructuredDocumentation",
                    "src": "1847:138:42",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 11799,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 11782,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11781,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11776,
                        "src": "2042:9:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2042:9:42"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "1999:17:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11779,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2025:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11799,
                        "src": "2017:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11778,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2017:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2016:18:42"
                  },
                  "returnParameters": {
                    "id": 11783,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2052:0:42"
                  },
                  "scope": 11928,
                  "src": "1990:190:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11818,
                    "nodeType": "Block",
                    "src": "2389:124:42",
                    "statements": [
                      {
                        "assignments": [
                          11806
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11806,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "2407:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11818,
                            "src": "2399:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 11805,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2399:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11808,
                        "initialValue": {
                          "id": 11807,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11701,
                          "src": "2418:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2399:25:42"
                      },
                      {
                        "expression": {
                          "id": 11811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11809,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11701,
                            "src": "2434:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11810,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11802,
                            "src": "2443:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2434:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11812,
                        "nodeType": "ExpressionStatement",
                        "src": "2434:17:42"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 11814,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11806,
                              "src": "2487:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11815,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11802,
                              "src": "2497:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11813,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11713,
                            "src": "2466:20:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 11816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2466:40:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11817,
                        "nodeType": "EmitStatement",
                        "src": "2461:45:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11800,
                    "nodeType": "StructuredDocumentation",
                    "src": "2186:143:42",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                  },
                  "id": 11819,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferOwnership",
                  "nameLocation": "2343:18:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11802,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2370:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11819,
                        "src": "2362:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11801,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2362:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2361:18:42"
                  },
                  "returnParameters": {
                    "id": 11804,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2389:0:42"
                  },
                  "scope": 11928,
                  "src": "2334:179:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11851,
                    "nodeType": "Block",
                    "src": "2823:157:42",
                    "statements": [
                      {
                        "condition": {
                          "id": 11833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2837:23:42",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 11830,
                                "name": "role",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11822,
                                "src": "2846:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 11831,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11824,
                                "src": "2852:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 11829,
                              "name": "hasRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11901,
                              "src": "2838:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (bytes32,address) view returns (bool)"
                              }
                            },
                            "id": 11832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2838:22:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11850,
                        "nodeType": "IfStatement",
                        "src": "2833:141:42",
                        "trueBody": {
                          "id": 11849,
                          "nodeType": "Block",
                          "src": "2862:112:42",
                          "statements": [
                            {
                              "expression": {
                                "id": 11840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 11834,
                                      "name": "_roles",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11707,
                                      "src": "2876:6:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                        "typeString": "mapping(bytes32 => mapping(address => bool))"
                                      }
                                    },
                                    "id": 11837,
                                    "indexExpression": {
                                      "id": 11835,
                                      "name": "role",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11822,
                                      "src": "2883:4:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2876:12:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 11838,
                                  "indexExpression": {
                                    "id": 11836,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11824,
                                    "src": "2889:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2876:21:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 11839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2900:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "2876:28:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11841,
                              "nodeType": "ExpressionStatement",
                              "src": "2876:28:42"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 11843,
                                    "name": "role",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11822,
                                    "src": "2935:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 11844,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11824,
                                    "src": "2941:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 11845,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2149,
                                      "src": "2950:10:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 11846,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2950:12:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11842,
                                  "name": "RoleGranted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11721,
                                  "src": "2923:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address,address)"
                                  }
                                },
                                "id": 11847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2923:40:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11848,
                              "nodeType": "EmitStatement",
                              "src": "2918:45:42"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11820,
                    "nodeType": "StructuredDocumentation",
                    "src": "2600:149:42",
                    "text": "@notice Register an account as an admin\n @param role The role to grant to the given account\n @param account The account to register"
                  },
                  "functionSelector": "2f2ff15d",
                  "id": 11852,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 11827,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11826,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11776,
                        "src": "2813:9:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2813:9:42"
                    }
                  ],
                  "name": "grantRole",
                  "nameLocation": "2763:9:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11822,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "2781:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11852,
                        "src": "2773:12:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11821,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2773:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11824,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2795:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11852,
                        "src": "2787:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11823,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2787:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2772:31:42"
                  },
                  "returnParameters": {
                    "id": 11828,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2823:0:42"
                  },
                  "scope": 11928,
                  "src": "2754:226:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11883,
                    "nodeType": "Block",
                    "src": "3200:157:42",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 11863,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11855,
                              "src": "3222:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 11864,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11857,
                              "src": "3228:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11862,
                            "name": "hasRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11901,
                            "src": "3214:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (bytes32,address) view returns (bool)"
                            }
                          },
                          "id": 11865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3214:22:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11882,
                        "nodeType": "IfStatement",
                        "src": "3210:141:42",
                        "trueBody": {
                          "id": 11881,
                          "nodeType": "Block",
                          "src": "3238:113:42",
                          "statements": [
                            {
                              "expression": {
                                "id": 11872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 11866,
                                      "name": "_roles",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11707,
                                      "src": "3252:6:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                        "typeString": "mapping(bytes32 => mapping(address => bool))"
                                      }
                                    },
                                    "id": 11869,
                                    "indexExpression": {
                                      "id": 11867,
                                      "name": "role",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11855,
                                      "src": "3259:4:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3252:12:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 11870,
                                  "indexExpression": {
                                    "id": 11868,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11857,
                                    "src": "3265:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3252:21:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "66616c7365",
                                  "id": 11871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3276:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "3252:29:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11873,
                              "nodeType": "ExpressionStatement",
                              "src": "3252:29:42"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 11875,
                                    "name": "role",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11855,
                                    "src": "3312:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 11876,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11857,
                                    "src": "3318:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 11877,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2149,
                                      "src": "3327:10:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 11878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3327:12:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11874,
                                  "name": "RoleRevoked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11729,
                                  "src": "3300:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address,address)"
                                  }
                                },
                                "id": 11879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3300:40:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11880,
                              "nodeType": "EmitStatement",
                              "src": "3295:45:42"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11853,
                    "nodeType": "StructuredDocumentation",
                    "src": "2986:139:42",
                    "text": "@notice Revoke a role from an account\n @param role The role to revoke\n @param account The account to revoke the role from"
                  },
                  "functionSelector": "d547741f",
                  "id": 11884,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 11860,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11859,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11776,
                        "src": "3190:9:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3190:9:42"
                    }
                  ],
                  "name": "revokeRole",
                  "nameLocation": "3139:10:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11855,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "3158:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11884,
                        "src": "3150:12:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11854,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3150:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11857,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3172:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11884,
                        "src": "3164:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11856,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3164:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3149:31:42"
                  },
                  "returnParameters": {
                    "id": 11861,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3200:0:42"
                  },
                  "scope": 11928,
                  "src": "3130:227:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11900,
                    "nodeType": "Block",
                    "src": "3567:45:42",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 11894,
                              "name": "_roles",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11707,
                              "src": "3584:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(bytes32 => mapping(address => bool))"
                              }
                            },
                            "id": 11896,
                            "indexExpression": {
                              "id": 11895,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11887,
                              "src": "3591:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3584:12:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 11898,
                          "indexExpression": {
                            "id": 11897,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11889,
                            "src": "3597:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3584:21:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 11893,
                        "id": 11899,
                        "nodeType": "Return",
                        "src": "3577:28:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11885,
                    "nodeType": "StructuredDocumentation",
                    "src": "3363:124:42",
                    "text": "@notice Check if an account has a role\n @param role The role to check\n @param account The account to check"
                  },
                  "functionSelector": "91d14854",
                  "id": 11901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hasRole",
                  "nameLocation": "3501:7:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11887,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "3517:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11901,
                        "src": "3509:12:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11886,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3509:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11889,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3531:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11901,
                        "src": "3523:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11888,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3523:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3508:31:42"
                  },
                  "returnParameters": {
                    "id": 11893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11892,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11901,
                        "src": "3561:4:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11891,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3561:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3560:6:42"
                  },
                  "scope": 11928,
                  "src": "3492:120:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11922,
                    "nodeType": "Block",
                    "src": "3779:107:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 11911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 11907,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "3797:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 11908,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3797:12:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 11909,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11762,
                                    "src": "3813:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 11910,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3813:7:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3797:23:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 11913,
                                    "name": "role",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11904,
                                    "src": "3832:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 11914,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2149,
                                      "src": "3838:10:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 11915,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3838:12:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11912,
                                  "name": "hasRole",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11901,
                                  "src": "3824:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (bytes32,address) view returns (bool)"
                                  }
                                },
                                "id": 11916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3824:27:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3797:54:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "756e617574686f72697a6564",
                              "id": 11918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3853:14:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 11906,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3789:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3789:79:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11920,
                        "nodeType": "ExpressionStatement",
                        "src": "3789:79:42"
                      },
                      {
                        "id": 11921,
                        "nodeType": "PlaceholderStatement",
                        "src": "3878:1:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11902,
                    "nodeType": "StructuredDocumentation",
                    "src": "3618:117:42",
                    "text": "@notice Check if the given address is the owner or has the given role.\n @param role The role to check for."
                  },
                  "id": 11923,
                  "name": "checkPermission",
                  "nameLocation": "3749:15:42",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 11905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11904,
                        "mutability": "mutable",
                        "name": "role",
                        "nameLocation": "3773:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11923,
                        "src": "3765:12:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11903,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3765:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3764:14:42"
                  },
                  "src": "3740:146:42",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11927,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "3912:5:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11928,
                  "src": "3892:25:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$48_storage",
                    "typeString": "uint256[48]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11924,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3892:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11926,
                    "length": {
                      "hexValue": "3438",
                      "id": 11925,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3900:2:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_48_by_1",
                        "typeString": "int_const 48"
                      },
                      "value": "48"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3892:11:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$48_storage_ptr",
                      "typeString": "uint256[48]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 11929,
              "src": "470:3450:42",
              "usedErrors": []
            }
          ],
          "src": "33:3888:42"
        },
        "id": 42
      },
      "contracts/test-contracts/ArtistCreatorUpgradeTest.sol": {
        "ast": {
          "absolutePath": "contracts/test-contracts/ArtistCreatorUpgradeTest.sol",
          "exportedSymbols": {
            "Address": [
              3963
            ],
            "AddressUpgradeable": [
              2122
            ],
            "Artist": [
              5343
            ],
            "ArtistCreatorUpgradeTest": [
              12214
            ],
            "BeaconProxy": [
              3583
            ],
            "Context": [
              3985
            ],
            "ContextUpgradeable": [
              2164
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSAUpgradeable": [
              2931
            ],
            "ERC1967Upgrade": [
              3465
            ],
            "ERC1967UpgradeUpgradeable": [
              529
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IBeacon": [
              3593
            ],
            "IBeaconUpgradeable": [
              539
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC1822Proxiable": [
              3110
            ],
            "IERC1822ProxiableUpgradeable": [
              160
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "Initializable": [
              690
            ],
            "Ownable": [
              3100
            ],
            "OwnableUpgradeable": [
              131
            ],
            "Proxy": [
              3517
            ],
            "StorageSlot": [
              4045
            ],
            "StorageSlotUpgradeable": [
              2298
            ],
            "Strings": [
              4271
            ],
            "StringsUpgradeable": [
              2524
            ],
            "UUPSUpgradeable": [
              826
            ],
            "UpgradeableBeacon": [
              3668
            ]
          },
          "id": 12215,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11930,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:23:43"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
              "id": 11931,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 132,
              "src": "547:75:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
              "id": 11932,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 691,
              "src": "623:75:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
              "id": 11933,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 827,
              "src": "699:77:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 11934,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 2239,
              "src": "777:75:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol",
              "id": 11935,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 2932,
              "src": "853:85:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
              "id": 11936,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 3584,
              "src": "939:62:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol",
              "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol",
              "id": 11937,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 3669,
              "src": "1002:68:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/Artist.sol",
              "file": "../Artist.sol",
              "id": 11938,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 12215,
              "sourceUnit": 5344,
              "src": "1071:23:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11939,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 690,
                    "src": "1133:13:43"
                  },
                  "id": 11940,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1133:13:43"
                },
                {
                  "baseName": {
                    "id": 11941,
                    "name": "UUPSUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 826,
                    "src": "1148:15:43"
                  },
                  "id": 11942,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1148:15:43"
                },
                {
                  "baseName": {
                    "id": 11943,
                    "name": "OwnableUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 131,
                    "src": "1165:18:43"
                  },
                  "id": 11944,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1165:18:43"
                }
              ],
              "canonicalName": "ArtistCreatorUpgradeTest",
              "contractDependencies": [
                3583,
                3668,
                5343
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 12214,
              "linearizedBaseContracts": [
                12214,
                131,
                2164,
                826,
                529,
                160,
                690
              ],
              "name": "ArtistCreatorUpgradeTest",
              "nameLocation": "1105:24:43",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 11948,
                  "libraryName": {
                    "id": 11945,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "1196:19:43"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1190:58:43",
                  "typeName": {
                    "id": 11947,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11946,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "1220:27:43"
                    },
                    "referencedDeclaration": 2170,
                    "src": "1220:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 11951,
                  "libraryName": {
                    "id": 11949,
                    "name": "ECDSAUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2931,
                    "src": "1259:16:43"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1253:35:43",
                  "typeName": {
                    "id": 11950,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1280:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "fa4d280c",
                  "id": 11956,
                  "mutability": "constant",
                  "name": "MINTER_TYPEHASH",
                  "nameLocation": "1360:15:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 12214,
                  "src": "1336:85:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11952,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1336:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "4465706c6f79657228616464726573732061727469737457616c6c657429",
                        "id": 11954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1388:32:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        },
                        "value": "Deployer(address artistWallet)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_5925e35aebbeb7738ae3e97ad24e3b4cc09001c8668d81f3365213a0ec1e85b2",
                          "typeString": "literal_string \"Deployer(address artistWallet)\""
                        }
                      ],
                      "id": 11953,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1378:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1378:43:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11959,
                  "mutability": "mutable",
                  "name": "atArtistId",
                  "nameLocation": "1463:10:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 12214,
                  "src": "1427:46:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 11958,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11957,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "1427:27:43"
                    },
                    "referencedDeclaration": 2170,
                    "src": "1427:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "f851a440",
                  "id": 11961,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "1562:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 12214,
                  "src": "1547:20:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1547:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 11963,
                  "mutability": "mutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "1588:16:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 12214,
                  "src": "1573:31:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11962,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1573:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7e2ec6d0",
                  "id": 11965,
                  "mutability": "mutable",
                  "name": "beaconAddress",
                  "nameLocation": "1625:13:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 12214,
                  "src": "1610:28:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11964,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1610:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "b16a43f0",
                  "id": 11968,
                  "mutability": "mutable",
                  "name": "artistContracts",
                  "nameLocation": "1698:15:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 12214,
                  "src": "1681:32:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11966,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1681:7:43",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11967,
                    "nodeType": "ArrayTypeName",
                    "src": "1681:9:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 11969,
                    "nodeType": "StructuredDocumentation",
                    "src": "1761:37:43",
                    "text": "Emitted when an Artist is created"
                  },
                  "eventSelector": "23748b43b77f98380e738976c6324996908ffc1989994dd3c68631c87a65a7c0",
                  "id": 11979,
                  "name": "CreatedArtist",
                  "nameLocation": "1809:13:43",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11978,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11971,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "artistId",
                        "nameLocation": "1831:8:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 11979,
                        "src": "1823:16:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11970,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1823:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11973,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "1848:4:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 11979,
                        "src": "1841:11:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11972,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1841:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11975,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nameLocation": "1861:6:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 11979,
                        "src": "1854:13:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11974,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11977,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "artistAddress",
                        "nameLocation": "1885:13:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 11979,
                        "src": "1869:29:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11976,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1869:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1822:77:43"
                  },
                  "src": "1803:97:43"
                },
                {
                  "body": {
                    "id": 12040,
                    "nodeType": "Block",
                    "src": "2019:542:43",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11985,
                            "name": "__Ownable_init_unchained",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37,
                            "src": "2029:24:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 11986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2029:26:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11987,
                        "nodeType": "ExpressionStatement",
                        "src": "2029:26:43"
                      },
                      {
                        "expression": {
                          "id": 11991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11988,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11961,
                            "src": "2123:5:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 11989,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2131:3:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 11990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2131:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2123:18:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11992,
                        "nodeType": "ExpressionStatement",
                        "src": "2123:18:43"
                      },
                      {
                        "expression": {
                          "id": 12004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11993,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11963,
                            "src": "2151:16:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                        "id": 11998,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2201:31:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        },
                                        "value": "EIP712Domain(uint256 chainId)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        }
                                      ],
                                      "id": 11997,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "2191:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 11999,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2191:42:43",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12000,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "2235:5:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 12001,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "2235:13:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 11995,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2180:3:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 11996,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "2180:10:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 12002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2180:69:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 11994,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "2170:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 12003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2170:80:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2151:99:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12005,
                        "nodeType": "ExpressionStatement",
                        "src": "2151:99:43"
                      },
                      {
                        "assignments": [
                          12008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12008,
                            "mutability": "mutable",
                            "name": "_beacon",
                            "nameLocation": "2333:7:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 12040,
                            "src": "2315:25:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                              "typeString": "contract UpgradeableBeacon"
                            },
                            "typeName": {
                              "id": 12007,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 12006,
                                "name": "UpgradeableBeacon",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3668,
                                "src": "2315:17:43"
                              },
                              "referencedDeclaration": 3668,
                              "src": "2315:17:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                "typeString": "contract UpgradeableBeacon"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12020,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12016,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "2373:10:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Artist_$5343_$",
                                      "typeString": "function () returns (contract Artist)"
                                    },
                                    "typeName": {
                                      "id": 12015,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 12014,
                                        "name": "Artist",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5343,
                                        "src": "2377:6:43"
                                      },
                                      "referencedDeclaration": 5343,
                                      "src": "2377:6:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Artist_$5343",
                                        "typeString": "contract Artist"
                                      }
                                    }
                                  },
                                  "id": 12017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2373:12:43",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Artist_$5343",
                                    "typeString": "contract Artist"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Artist_$5343",
                                    "typeString": "contract Artist"
                                  }
                                ],
                                "id": 12013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2365:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12012,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2365:7:43",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2365:21:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2343:21:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_UpgradeableBeacon_$3668_$",
                              "typeString": "function (address) returns (contract UpgradeableBeacon)"
                            },
                            "typeName": {
                              "id": 12010,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 12009,
                                "name": "UpgradeableBeacon",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3668,
                                "src": "2347:17:43"
                              },
                              "referencedDeclaration": 3668,
                              "src": "2347:17:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                "typeString": "contract UpgradeableBeacon"
                              }
                            }
                          },
                          "id": 12019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2343:44:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                            "typeString": "contract UpgradeableBeacon"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2315:72:43"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12024,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2423:3:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2423:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 12021,
                              "name": "_beacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12008,
                              "src": "2397:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                "typeString": "contract UpgradeableBeacon"
                              }
                            },
                            "id": 12023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3079,
                            "src": "2397:25:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 12026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2397:37:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12027,
                        "nodeType": "ExpressionStatement",
                        "src": "2397:37:43"
                      },
                      {
                        "expression": {
                          "id": 12033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12028,
                            "name": "beaconAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11965,
                            "src": "2444:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 12031,
                                "name": "_beacon",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12008,
                                "src": "2468:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                  "typeString": "contract UpgradeableBeacon"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UpgradeableBeacon_$3668",
                                  "typeString": "contract UpgradeableBeacon"
                                }
                              ],
                              "id": 12030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2460:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12029,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2460:7:43",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2460:16:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2444:32:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12034,
                        "nodeType": "ExpressionStatement",
                        "src": "2444:32:43"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 12035,
                              "name": "atArtistId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11959,
                              "src": "2532:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 12037,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "2532:20:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 12038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2532:22:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12039,
                        "nodeType": "ExpressionStatement",
                        "src": "2532:22:43"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11980,
                    "nodeType": "StructuredDocumentation",
                    "src": "1950:23:43",
                    "text": "Initializes factory"
                  },
                  "functionSelector": "8129fc1c",
                  "id": 12041,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 11983,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11982,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "2007:11:43"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2007:11:43"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "1987:10:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11981,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1997:2:43"
                  },
                  "returnParameters": {
                    "id": 11984,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2019:0:43"
                  },
                  "scope": 12214,
                  "src": "1978:583:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12124,
                    "nodeType": "Block",
                    "src": "2978:643:43",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 12060,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 12057,
                                        "name": "signature",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12044,
                                        "src": "3007:9:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "id": 12056,
                                      "name": "getSigner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12171,
                                      "src": "2997:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_address_$",
                                        "typeString": "function (bytes calldata) view returns (address)"
                                      }
                                    },
                                    "id": 12058,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2997:20:43",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 12059,
                                    "name": "admin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11961,
                                    "src": "3021:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2997:29:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 12061,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2996:31:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e207369676e6174757265",
                              "id": 12062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3029:33:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              },
                              "value": "invalid authorization signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_76dee4cdf75aa49fd0b4465e9b0b8555bf3577e10925d05f4d95af3f4bcc3d56",
                                "typeString": "literal_string \"invalid authorization signature\""
                              }
                            ],
                            "id": 12055,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2988:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2988:75:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12064,
                        "nodeType": "ExpressionStatement",
                        "src": "2988:75:43"
                      },
                      {
                        "assignments": [
                          12067
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12067,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nameLocation": "3086:5:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 12124,
                            "src": "3074:17:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                              "typeString": "contract BeaconProxy"
                            },
                            "typeName": {
                              "id": 12066,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 12065,
                                "name": "BeaconProxy",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3583,
                                "src": "3074:11:43"
                              },
                              "referencedDeclaration": 3583,
                              "src": "3074:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12092,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12071,
                              "name": "beaconAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11965,
                              "src": "3123:13:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 12077,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3205:1:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              }
                                            ],
                                            "id": 12076,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3197:7:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 12075,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3197:7:43",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 12078,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3197:10:43",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 12074,
                                        "name": "Artist",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5343,
                                        "src": "3190:6:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Artist_$5343_$",
                                          "typeString": "type(contract Artist)"
                                        }
                                      },
                                      "id": 12079,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3190:18:43",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Artist_$5343",
                                        "typeString": "contract Artist"
                                      }
                                    },
                                    "id": 12080,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "initialize",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4824,
                                    "src": "3190:29:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (address,uint256,string memory,string memory,string memory) external"
                                    }
                                  },
                                  "id": 12081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3190:38:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 12082,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "3246:3:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12083,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "3246:10:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 12084,
                                      "name": "atArtistId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11959,
                                      "src": "3274:10:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                        "typeString": "struct CountersUpgradeable.Counter storage ref"
                                      }
                                    },
                                    "id": 12085,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "current",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2182,
                                    "src": "3274:18:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                      "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                    }
                                  },
                                  "id": 12086,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3274:20:43",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 12087,
                                  "name": "_name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12046,
                                  "src": "3312:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 12088,
                                  "name": "_symbol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12048,
                                  "src": "3335:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 12089,
                                  "name": "_baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12050,
                                  "src": "3360:8:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 12072,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3150:3:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12073,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3150:22:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 12090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3150:232:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3094:15:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$3583_$",
                              "typeString": "function (address,bytes memory) payable returns (contract BeaconProxy)"
                            },
                            "typeName": {
                              "id": 12069,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 12068,
                                "name": "BeaconProxy",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3583,
                                "src": "3098:11:43"
                              },
                              "referencedDeclaration": 3583,
                              "src": "3098:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            }
                          },
                          "id": 12091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3094:298:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                            "typeString": "contract BeaconProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3074:318:43"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 12098,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12067,
                                  "src": "3459:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                ],
                                "id": 12097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3451:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12096,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3451:7:43",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3451:14:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 12093,
                              "name": "artistContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11968,
                              "src": "3430:15:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 12095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "3430:20:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                              "typeString": "function (address[] storage pointer,address)"
                            }
                          },
                          "id": 12100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3430:36:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12101,
                        "nodeType": "ExpressionStatement",
                        "src": "3430:36:43"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 12103,
                                  "name": "atArtistId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11959,
                                  "src": "3496:10:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 12104,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "3496:18:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 12105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3496:20:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12106,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12046,
                              "src": "3518:5:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 12107,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12048,
                              "src": "3525:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 12110,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12067,
                                  "src": "3542:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                    "typeString": "contract BeaconProxy"
                                  }
                                ],
                                "id": 12109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3534:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12108,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3534:7:43",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3534:14:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12102,
                            "name": "CreatedArtist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11979,
                            "src": "3482:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256,string memory,string memory,address)"
                            }
                          },
                          "id": 12112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3482:67:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12113,
                        "nodeType": "EmitStatement",
                        "src": "3477:72:43"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 12114,
                              "name": "atArtistId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11959,
                              "src": "3560:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 12116,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "3560:20:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 12117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3560:22:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12118,
                        "nodeType": "ExpressionStatement",
                        "src": "3560:22:43"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12121,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12067,
                              "src": "3608:5:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_BeaconProxy_$3583",
                                "typeString": "contract BeaconProxy"
                              }
                            ],
                            "id": 12120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3600:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 12119,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3600:7:43",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 12122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3600:14:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 12054,
                        "id": 12123,
                        "nodeType": "Return",
                        "src": "3593:21:43"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12042,
                    "nodeType": "StructuredDocumentation",
                    "src": "2567:227:43",
                    "text": "Creates a new artist contract as a factory with a deterministic address\n Important: None of these fields (except the Url fields with the same hash) can be changed after calling\n @param _name Name of the artist"
                  },
                  "functionSelector": "233654eb",
                  "id": 12125,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createArtist",
                  "nameLocation": "2808:12:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12051,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12044,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2845:9:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 12125,
                        "src": "2830:24:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12043,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2830:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12046,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "2878:5:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 12125,
                        "src": "2864:19:43",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12045,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2864:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12048,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "2907:7:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 12125,
                        "src": "2893:21:43",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12047,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2893:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12050,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "2938:8:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 12125,
                        "src": "2924:22:43",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12049,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2924:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2820:132:43"
                  },
                  "returnParameters": {
                    "id": 12054,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12053,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12125,
                        "src": "2969:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2969:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2968:9:43"
                  },
                  "scope": 12214,
                  "src": "2799:822:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12170,
                    "nodeType": "Block",
                    "src": "3742:767:43",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12134,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11961,
                                "src": "3760:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12137,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3777:1:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 12136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3769:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12135,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3769:7:43",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3769:10:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3760:19:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "77686974656c697374206e6f7420656e61626c6564",
                              "id": 12140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3781:23:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              },
                              "value": "whitelist not enabled"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ff1c27d3f45b16fa6152e89d74bdbc164fdc6df9c21e1f43c9bcd31aad367858",
                                "typeString": "literal_string \"whitelist not enabled\""
                              }
                            ],
                            "id": 12133,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3752:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3752:53:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12142,
                        "nodeType": "ExpressionStatement",
                        "src": "3752:53:43"
                      },
                      {
                        "assignments": [
                          12144
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12144,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "4033:6:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 12170,
                            "src": "4025:14:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12143,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4025:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12160,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 12148,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4082:10:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 12149,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11963,
                                  "src": "4094:16:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 12153,
                                          "name": "MINTER_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11956,
                                          "src": "4133:15:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 12154,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "4150:3:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 12155,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "4150:10:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 12151,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "4122:3:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 12152,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "4122:10:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 12156,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4122:39:43",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 12150,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "4112:9:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 12157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4112:50:43",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 12146,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4065:3:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "4065:16:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4065:98:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12145,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4042:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 12159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4042:131:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4025:148:43"
                      },
                      {
                        "assignments": [
                          12162
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12162,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "4425:16:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 12170,
                            "src": "4417:24:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12161,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4417:7:43",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12167,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12165,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12128,
                              "src": "4459:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 12163,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12144,
                              "src": "4444:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 12164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2680,
                            "src": "4444:14:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 12166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4444:25:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4417:52:43"
                      },
                      {
                        "expression": {
                          "id": 12168,
                          "name": "recoveredAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12162,
                          "src": "4486:16:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 12132,
                        "id": 12169,
                        "nodeType": "Return",
                        "src": "4479:23:43"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12126,
                    "nodeType": "StructuredDocumentation",
                    "src": "3627:35:43",
                    "text": "Get signer address of signature"
                  },
                  "functionSelector": "e6adabfd",
                  "id": 12171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "3676:9:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12128,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "3701:9:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 12171,
                        "src": "3686:24:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12127,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3686:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3685:26:43"
                  },
                  "returnParameters": {
                    "id": 12132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12131,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12171,
                        "src": "3733:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3733:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3732:9:43"
                  },
                  "scope": 12214,
                  "src": "3667:842:43",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12195,
                    "nodeType": "Block",
                    "src": "4664:126:43",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12178,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 54,
                                    "src": "4682:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 12179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4682:7:43",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12180,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "4693:10:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 12181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4693:12:43",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4682:23:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12183,
                                  "name": "admin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11961,
                                  "src": "4709:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12184,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "4718:10:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 12185,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4718:12:43",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4709:21:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4682:48:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "696e76616c696420617574686f72697a6174696f6e",
                              "id": 12188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4732:23:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              },
                              "value": "invalid authorization"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_676552d4221b6f73fa0d114242cb3df7bfb1dd45d164f938ec0c323a43f2a2e9",
                                "typeString": "literal_string \"invalid authorization\""
                              }
                            ],
                            "id": 12177,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4674:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4674:82:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12190,
                        "nodeType": "ExpressionStatement",
                        "src": "4674:82:43"
                      },
                      {
                        "expression": {
                          "id": 12193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12191,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11961,
                            "src": "4766:5:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12192,
                            "name": "_newAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12174,
                            "src": "4774:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4766:17:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12194,
                        "nodeType": "ExpressionStatement",
                        "src": "4766:17:43"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12172,
                    "nodeType": "StructuredDocumentation",
                    "src": "4515:98:43",
                    "text": "Sets the admin for authorizing artist deployment\n @param _newAdmin address of new admin"
                  },
                  "functionSelector": "704b6c02",
                  "id": 12196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAdmin",
                  "nameLocation": "4627:8:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12174,
                        "mutability": "mutable",
                        "name": "_newAdmin",
                        "nameLocation": "4644:9:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 12196,
                        "src": "4636:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12173,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4636:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4635:19:43"
                  },
                  "returnParameters": {
                    "id": 12176,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4664:0:43"
                  },
                  "scope": 12214,
                  "src": "4618:172:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    820
                  ],
                  "body": {
                    "id": 12204,
                    "nodeType": "Block",
                    "src": "4860:2:43",
                    "statements": []
                  },
                  "id": 12205,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 12202,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12201,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 45,
                        "src": "4850:9:43"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4850:9:43"
                    }
                  ],
                  "name": "_authorizeUpgrade",
                  "nameLocation": "4805:17:43",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12200,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4841:8:43"
                  },
                  "parameters": {
                    "id": 12199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12198,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12205,
                        "src": "4823:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4823:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4822:9:43"
                  },
                  "returnParameters": {
                    "id": 12203,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4860:0:43"
                  },
                  "scope": 12214,
                  "src": "4796:66:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12212,
                    "nodeType": "Block",
                    "src": "4924:27:43",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "363636",
                          "id": 12210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4941:3:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_666_by_1",
                            "typeString": "int_const 666"
                          },
                          "value": "666"
                        },
                        "functionReturnParameters": 12209,
                        "id": 12211,
                        "nodeType": "Return",
                        "src": "4934:10:43"
                      }
                    ]
                  },
                  "functionSelector": "dbdcc4bd",
                  "id": 12213,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "markOfTheBeast",
                  "nameLocation": "4877:14:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4891:2:43"
                  },
                  "returnParameters": {
                    "id": 12209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12208,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12213,
                        "src": "4915:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4915:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4914:9:43"
                  },
                  "scope": 12214,
                  "src": "4868:83:43",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 12215,
              "src": "1096:3857:43",
              "usedErrors": []
            }
          ],
          "src": "45:4909:43"
        },
        "id": 43
      },
      "contracts/test-contracts/TEST_ArtistV6.sol": {
        "ast": {
          "absolutePath": "contracts/test-contracts/TEST_ArtistV6.sol",
          "exportedSymbols": {
            "AccessManager": [
              11928
            ],
            "AddressUpgradeable": [
              2122
            ],
            "ContextUpgradeable": [
              2164
            ],
            "CountersUpgradeable": [
              2238
            ],
            "ECDSA": [
              4678
            ],
            "ERC165Upgradeable": [
              2975
            ],
            "ERC721Upgradeable": [
              1718
            ],
            "IERC165Upgradeable": [
              2987
            ],
            "IERC2981Upgradeable": [
              150
            ],
            "IERC721MetadataUpgradeable": [
              1879
            ],
            "IERC721ReceiverUpgradeable": [
              1736
            ],
            "IERC721Upgradeable": [
              1852
            ],
            "Initializable": [
              690
            ],
            "Strings": [
              4271
            ],
            "StringsUpgradeable": [
              2524
            ],
            "TEST_ArtistV6": [
              13547
            ]
          },
          "id": 13548,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12216,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".14"
              ],
              "nodeType": "PragmaDirective",
              "src": "45:24:44"
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol",
              "id": 12217,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13548,
              "sourceUnit": 151,
              "src": "1539:80:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
              "id": 12218,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13548,
              "sourceUnit": 1719,
              "src": "1620:80:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
              "id": 12219,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13548,
              "sourceUnit": 2239,
              "src": "1701:75:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "id": 12220,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13548,
              "sourceUnit": 4679,
              "src": "1777:62:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "@openzeppelin/contracts/utils/Strings.sol",
              "id": 12221,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13548,
              "sourceUnit": 4272,
              "src": "1840:51:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/auxillary/AccessManager.sol",
              "file": "../auxillary/AccessManager.sol",
              "id": 12222,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 13548,
              "sourceUnit": 11929,
              "src": "1892:40:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12224,
                    "name": "ERC721Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1718,
                    "src": "2250:17:44"
                  },
                  "id": 12225,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2250:17:44"
                },
                {
                  "baseName": {
                    "id": 12226,
                    "name": "IERC2981Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 150,
                    "src": "2269:19:44"
                  },
                  "id": 12227,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2269:19:44"
                },
                {
                  "baseName": {
                    "id": 12228,
                    "name": "AccessManager",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11928,
                    "src": "2290:13:44"
                  },
                  "id": 12229,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2290:13:44"
                }
              ],
              "canonicalName": "TEST_ArtistV6",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 12223,
                "nodeType": "StructuredDocumentation",
                "src": "1934:290:44",
                "text": "@title Artist\n @author SoundXYZ - @gigamesh & @vigneshka\n @notice This contract is used to create & sell song NFTs for the artist who owns the contract.\n @dev Started as a fork of Mirror's Editions.sol https://github.com/mirror-xyz/editions-v1/blob/main/contracts/Editions.sol"
              },
              "fullyImplemented": true,
              "id": 13547,
              "linearizedBaseContracts": [
                13547,
                11928,
                150,
                1718,
                1879,
                1852,
                2975,
                2987,
                2164,
                690
              ],
              "name": "TEST_ArtistV6",
              "nameLocation": "2233:13:44",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "27399d36",
                  "id": 12234,
                  "mutability": "constant",
                  "name": "PERMISSIONED_SALE_TYPEHASH",
                  "nameLocation": "2502:26:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "2478:170:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12230,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2478:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "45646974696f6e496e666f286164647265737320636f6e7472616374416464726573732c61646472657373206275796572416464726573732c75696e743235362065646974696f6e49642c75696e74323536207469636b65744e756d62657229",
                        "id": 12232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2549:98:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        },
                        "value": "EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d90aae4f290b877e033d457ae052dbe1fe53dff32093981847f7d4c541ebf4e8",
                          "typeString": "literal_string \"EditionInfo(address contractAddress,address buyerAddress,uint256 editionId,uint256 ticketNumber)\""
                        }
                      ],
                      "id": 12231,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2539:9:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 12233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2539:109:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 12236,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "2777:16:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "2752:41:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12235,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2752:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 12238,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "2859:7:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "2843:23:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 12237,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2843:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "3ef2dbc2",
                  "id": 12241,
                  "mutability": "mutable",
                  "name": "atTokenId",
                  "nameLocation": "2908:9:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "2873:44:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 12240,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12239,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2873:27:44"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2873:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "9725d92e",
                  "id": 12244,
                  "mutability": "mutable",
                  "name": "atEditionId",
                  "nameLocation": "2978:11:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "2943:46:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                    "typeString": "struct CountersUpgradeable.Counter"
                  },
                  "typeName": {
                    "id": 12243,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12242,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "2943:27:44"
                    },
                    "referencedDeclaration": 2170,
                    "src": "2943:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "279c806e",
                  "id": 12249,
                  "mutability": "mutable",
                  "name": "editions",
                  "nameLocation": "3081:8:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "3046:43:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                    "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition)"
                  },
                  "typeName": {
                    "id": 12248,
                    "keyType": {
                      "id": 12245,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3054:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3046:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                      "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition)"
                    },
                    "valueType": {
                      "id": 12247,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12246,
                        "name": "Edition",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12290,
                        "src": "3065:7:44"
                      },
                      "referencedDeclaration": 12290,
                      "src": "3065:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Edition_$12290_storage_ptr",
                        "typeString": "struct TEST_ArtistV6.Edition"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "5076a64d",
                  "id": 12253,
                  "mutability": "mutable",
                  "name": "_tokenToEdition",
                  "nameLocation": "3191:15:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "3156:50:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 12252,
                    "keyType": {
                      "id": 12250,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3164:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3156:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 12251,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3175:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e1a3d573",
                  "id": 12257,
                  "mutability": "mutable",
                  "name": "depositedForEdition",
                  "nameLocation": "3320:19:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "3285:54:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 12256,
                    "keyType": {
                      "id": 12254,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3293:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3285:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 12255,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3304:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d3bb0528",
                  "id": 12261,
                  "mutability": "mutable",
                  "name": "withdrawnForEdition",
                  "nameLocation": "3461:19:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "3426:54:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 12260,
                    "keyType": {
                      "id": 12258,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3434:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3426:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 12259,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3445:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 12267,
                  "mutability": "mutable",
                  "name": "ticketNumbers",
                  "nameLocation": "3619:13:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "3571:61:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                  },
                  "typeName": {
                    "id": 12266,
                    "keyType": {
                      "id": 12262,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3579:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3571:47:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                    },
                    "valueType": {
                      "id": 12265,
                      "keyType": {
                        "id": 12263,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3598:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "3590:27:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      },
                      "valueType": {
                        "id": 12264,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3609:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "931c9b99",
                  "id": 12269,
                  "mutability": "mutable",
                  "name": "someNumber",
                  "nameLocation": "3654:10:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 13547,
                  "src": "3639:25:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12268,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3639:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "TEST_ArtistV6.Edition",
                  "id": 12290,
                  "members": [
                    {
                      "constant": false,
                      "id": 12271,
                      "mutability": "mutable",
                      "name": "fundingRecipient",
                      "nameLocation": "3862:16:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "3846:32:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 12270,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3846:15:44",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12273,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "3959:5:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "3951:13:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12272,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3951:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12275,
                      "mutability": "mutable",
                      "name": "numSold",
                      "nameLocation": "4026:7:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4019:14:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12274,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4019:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12277,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "4108:8:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4101:15:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12276,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4101:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12279,
                      "mutability": "mutable",
                      "name": "royaltyBPS",
                      "nameLocation": "4166:10:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4159:17:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12278,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4159:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12281,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "4261:9:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4254:16:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12280,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4254:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12283,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "4353:7:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4346:14:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12282,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4346:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12285,
                      "mutability": "mutable",
                      "name": "permissionedQuantity",
                      "nameLocation": "4420:20:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4413:27:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12284,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4413:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12287,
                      "mutability": "mutable",
                      "name": "signerAddress",
                      "nameLocation": "4494:13:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4486:21:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12286,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4486:7:44",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12289,
                      "mutability": "mutable",
                      "name": "baseURI",
                      "nameLocation": "4560:7:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 12290,
                      "src": "4553:14:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 12288,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4553:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Edition",
                  "nameLocation": "3772:7:44",
                  "nodeType": "StructDefinition",
                  "scope": 13547,
                  "src": "3765:809:44",
                  "visibility": "public"
                },
                {
                  "global": false,
                  "id": 12294,
                  "libraryName": {
                    "id": 12291,
                    "name": "CountersUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2238,
                    "src": "4586:19:44"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "4580:58:44",
                  "typeName": {
                    "id": 12293,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12292,
                      "name": "CountersUpgradeable.Counter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2170,
                      "src": "4610:27:44"
                    },
                    "referencedDeclaration": 2170,
                    "src": "4610:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Counter_$2170_storage_ptr",
                      "typeString": "struct CountersUpgradeable.Counter"
                    }
                  }
                },
                {
                  "global": false,
                  "id": 12297,
                  "libraryName": {
                    "id": 12295,
                    "name": "ECDSA",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4678,
                    "src": "4649:5:44"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "4643:24:44",
                  "typeName": {
                    "id": 12296,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4659:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                },
                {
                  "canonicalName": "TEST_ArtistV6.TimeType",
                  "id": 12300,
                  "members": [
                    {
                      "id": 12298,
                      "name": "START",
                      "nameLocation": "4697:5:44",
                      "nodeType": "EnumValue",
                      "src": "4697:5:44"
                    },
                    {
                      "id": 12299,
                      "name": "END",
                      "nameLocation": "4712:3:44",
                      "nodeType": "EnumValue",
                      "src": "4712:3:44"
                    }
                  ],
                  "name": "TimeType",
                  "nameLocation": "4678:8:44",
                  "nodeType": "EnumDefinition",
                  "src": "4673:48:44"
                },
                {
                  "anonymous": false,
                  "eventSelector": "b56f9ba6a8af17a142f8ad372c6fc283e81d8c6193b86afe7f6ca901acd698f3",
                  "id": 12320,
                  "name": "EditionCreated",
                  "nameLocation": "4828:14:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12302,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "4868:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "4852:25:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12301,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4852:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12304,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "4895:16:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "4887:24:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4887:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12306,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "price",
                        "nameLocation": "4929:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "4921:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4921:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12308,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "quantity",
                        "nameLocation": "4951:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "4944:15:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12307,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4944:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12310,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "royaltyBPS",
                        "nameLocation": "4976:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "4969:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12309,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4969:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12312,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "5003:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "4996:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12311,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4996:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12314,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "5029:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "5022:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12313,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5022:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12316,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5053:20:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "5046:27:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12315,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5046:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12318,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5091:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12320,
                        "src": "5083:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5083:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4842:268:44"
                  },
                  "src": "4822:289:44"
                },
                {
                  "anonymous": false,
                  "eventSelector": "c3e4ad784e3889561b308df24921cf08a47410a8ed63b8afe80c50a002efb251",
                  "id": 12332,
                  "name": "EditionPurchased",
                  "nameLocation": "5123:16:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12322,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5165:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12332,
                        "src": "5149:25:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5149:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12324,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5200:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12332,
                        "src": "5184:23:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5184:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12326,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "numSold",
                        "nameLocation": "5308:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12332,
                        "src": "5301:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12325,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5301:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12328,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nameLocation": "5400:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12332,
                        "src": "5384:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12327,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5384:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12330,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ticketNumber",
                        "nameLocation": "5423:12:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12332,
                        "src": "5415:20:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5415:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5139:302:44"
                  },
                  "src": "5117:325:44"
                },
                {
                  "anonymous": false,
                  "eventSelector": "494264d1227744d2d86690c5355813b007a13955626b261c2e02901a73f6f90c",
                  "id": 12341,
                  "name": "AuctionTimeSet",
                  "nameLocation": "5454:14:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12340,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12335,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timeType",
                        "nameLocation": "5478:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12341,
                        "src": "5469:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TimeType_$12300",
                          "typeString": "enum TEST_ArtistV6.TimeType"
                        },
                        "typeName": {
                          "id": 12334,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 12333,
                            "name": "TimeType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12300,
                            "src": "5469:8:44"
                          },
                          "referencedDeclaration": 12300,
                          "src": "5469:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TimeType_$12300",
                            "typeString": "enum TEST_ArtistV6.TimeType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12337,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5496:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12341,
                        "src": "5488:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5488:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12339,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newTime",
                        "nameLocation": "5522:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12341,
                        "src": "5507:22:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12338,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5507:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5468:62:44"
                  },
                  "src": "5448:83:44"
                },
                {
                  "anonymous": false,
                  "eventSelector": "73b6ab337f7463563f035a0b9f885872e16ad1b5043b679cdf802cfcbaa3a534",
                  "id": 12347,
                  "name": "SignerAddressSet",
                  "nameLocation": "5543:16:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12343,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5568:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12347,
                        "src": "5560:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12342,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5560:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12345,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "signerAddress",
                        "nameLocation": "5595:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12347,
                        "src": "5579:29:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5579:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5559:50:44"
                  },
                  "src": "5537:73:44"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1de856603e1e748b6f6726e7a51520fe7c63e9b801b8e4b2f8de1a02ae0a8dae",
                  "id": 12353,
                  "name": "PermissionedQuantitySet",
                  "nameLocation": "5622:23:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12352,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12349,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5654:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12353,
                        "src": "5646:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5646:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12351,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "permissionedQuantity",
                        "nameLocation": "5672:20:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12353,
                        "src": "5665:27:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12350,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5665:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5645:48:44"
                  },
                  "src": "5616:78:44"
                },
                {
                  "anonymous": false,
                  "eventSelector": "1a7fce8987747a468a9fd9d320891f1519376dab1baeb8e72e8d4447fd412589",
                  "id": 12359,
                  "name": "BaseURISet",
                  "nameLocation": "5706:10:44",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12355,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "editionId",
                        "nameLocation": "5725:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12359,
                        "src": "5717:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5717:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12357,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "baseURI",
                        "nameLocation": "5743:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12359,
                        "src": "5736:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12356,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5736:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5716:35:44"
                  },
                  "src": "5700:52:44"
                },
                {
                  "body": {
                    "id": 12376,
                    "nodeType": "Block",
                    "src": "5934:116:44",
                    "statements": [
                      {
                        "expression": {
                          "id": 12374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12363,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12236,
                            "src": "5944:16:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e2875696e7432353620636861696e496429",
                                        "id": 12368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5994:31:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        },
                                        "value": "EIP712Domain(uint256 chainId)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_c49a8e302e3e5d6753b2bb3dbc3c28deba5e16e2572a92aef568063c963e3465",
                                          "typeString": "literal_string \"EIP712Domain(uint256 chainId)\""
                                        }
                                      ],
                                      "id": 12367,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "5984:9:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 12369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5984:42:44",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12370,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "6028:5:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 12371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "6028:13:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 12365,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "5973:3:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 12366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "5973:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 12372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5973:69:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 12364,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "5963:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 12373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5963:80:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5944:99:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12375,
                        "nodeType": "ExpressionStatement",
                        "src": "5944:99:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12360,
                    "nodeType": "StructuredDocumentation",
                    "src": "5883:32:44",
                    "text": "@notice Contract constructor"
                  },
                  "id": 12377,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12361,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5931:2:44"
                  },
                  "returnParameters": {
                    "id": 12362,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5934:0:44"
                  },
                  "scope": 13547,
                  "src": "5920:130:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12418,
                    "nodeType": "Block",
                    "src": "6436:378:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12392,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12382,
                              "src": "6460:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 12393,
                              "name": "_symbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12384,
                              "src": "6467:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 12391,
                            "name": "__ERC721_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "6446:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory)"
                            }
                          },
                          "id": 12394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6446:29:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12395,
                        "nodeType": "ExpressionStatement",
                        "src": "6446:29:44"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12396,
                            "name": "__AccessManager_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11742,
                            "src": "6485:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 12397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6485:22:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12398,
                        "nodeType": "ExpressionStatement",
                        "src": "6485:22:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12400,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12380,
                              "src": "6597:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12399,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11799,
                            "src": "6579:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 12401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6579:25:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12402,
                        "nodeType": "ExpressionStatement",
                        "src": "6579:25:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 12403,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "6665:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 12404,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "6665:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 12405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6682:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "6665:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12412,
                        "nodeType": "IfStatement",
                        "src": "6661:67:44",
                        "trueBody": {
                          "id": 12411,
                          "nodeType": "Block",
                          "src": "6685:43:44",
                          "statements": [
                            {
                              "expression": {
                                "id": 12409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 12407,
                                  "name": "baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12238,
                                  "src": "6699:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 12408,
                                  "name": "_baseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12386,
                                  "src": "6709:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "6699:18:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 12410,
                              "nodeType": "ExpressionStatement",
                              "src": "6699:18:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 12413,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12244,
                              "src": "6784:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 12415,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "6784:21:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 12416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6784:23:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12417,
                        "nodeType": "ExpressionStatement",
                        "src": "6784:23:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12378,
                    "nodeType": "StructuredDocumentation",
                    "src": "6056:214:44",
                    "text": "@notice Initializes the contract\n @param _owner Owner of edition\n @param _name Name of artist\n @param _symbol Symbol for the artist\n @param _baseURI Default base URI for all editions"
                  },
                  "functionSelector": "5f1e6f6d",
                  "id": 12419,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 12389,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12388,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 610,
                        "src": "6424:11:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6424:11:44"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "6284:10:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12380,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "6312:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12419,
                        "src": "6304:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6304:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12382,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "6342:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12419,
                        "src": "6328:19:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12381,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6328:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12384,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "6371:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12419,
                        "src": "6357:21:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12383,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6357:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12386,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "6402:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12419,
                        "src": "6388:22:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12385,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6388:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6294:122:44"
                  },
                  "returnParameters": {
                    "id": 12390,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6436:0:44"
                  },
                  "scope": 13547,
                  "src": "6275:539:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12532,
                    "nodeType": "Block",
                    "src": "7916:1178:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 12449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12447,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12426,
                                "src": "7934:9:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 12448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7946:1:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7934:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d75737420736574207175616e74697479",
                              "id": 12450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7949:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              },
                              "value": "Must set quantity"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_05c5287320091ee85a17bad8d141d45e5d658ba12c8df5e30a68f76319c545bd",
                                "typeString": "literal_string \"Must set quantity\""
                              }
                            ],
                            "id": 12446,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7926:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7926:43:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12452,
                        "nodeType": "ExpressionStatement",
                        "src": "7926:43:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12454,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12422,
                                "src": "7987:17:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8016:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 12456,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8008:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12455,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8008:7:44",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8008:10:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7987:31:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d757374207365742066756e64696e67526563697069656e74",
                              "id": 12460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8020:27:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              },
                              "value": "Must set fundingRecipient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_78ef7d8861def22f9a12cb6a97d10d9449ae3dc71ea0ba42ae8113a7f408ff52",
                                "typeString": "literal_string \"Must set fundingRecipient\""
                              }
                            ],
                            "id": 12453,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7979:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7979:69:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12462,
                        "nodeType": "ExpressionStatement",
                        "src": "7979:69:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 12466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12464,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12432,
                                "src": "8066:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 12465,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12430,
                                "src": "8077:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "8066:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "456e642074696d65206d7573742062652067726561746572207468616e2073746172742074696d65",
                              "id": 12467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8089:42:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              },
                              "value": "End time must be greater than start time"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed7f84a1977812752f8d634cbdcf2a56f893383408b8dd546c270e5d913f5d28",
                                "typeString": "literal_string \"End time must be greater than start time\""
                              }
                            ],
                            "id": 12463,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8058:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8058:74:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12469,
                        "nodeType": "ExpressionStatement",
                        "src": "8058:74:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12471,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12438,
                                "src": "8150:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 12472,
                                    "name": "atEditionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12244,
                                    "src": "8164:11:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                      "typeString": "struct CountersUpgradeable.Counter storage ref"
                                    }
                                  },
                                  "id": 12473,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "current",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2182,
                                  "src": "8164:19:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                    "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                  }
                                },
                                "id": 12474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8164:21:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8150:35:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57726f6e672065646974696f6e204944",
                              "id": 12476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8187:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737",
                                "typeString": "literal_string \"Wrong edition ID\""
                              },
                              "value": "Wrong edition ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_09f45b166cbc41825fcfe937c975a0bae4c05dc6e9d5e2c13748c9323fc05737",
                                "typeString": "literal_string \"Wrong edition ID\""
                              }
                            ],
                            "id": 12470,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8142:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8142:64:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12478,
                        "nodeType": "ExpressionStatement",
                        "src": "8142:64:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 12481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12479,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12434,
                            "src": "8221:21:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 12480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8245:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8221:25:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12493,
                        "nodeType": "IfStatement",
                        "src": "8217:123:44",
                        "trueBody": {
                          "id": 12492,
                          "nodeType": "Block",
                          "src": "8248:92:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 12488,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 12483,
                                      "name": "_signerAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12436,
                                      "src": "8270:14:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 12486,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8296:1:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 12485,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8288:7:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 12484,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8288:7:44",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 12487,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8288:10:44",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8270:28:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                                    "id": 12489,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8300:28:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    },
                                    "value": "Signer address cannot be 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                      "typeString": "literal_string \"Signer address cannot be 0\""
                                    }
                                  ],
                                  "id": 12482,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8262:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 12490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8262:67:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12491,
                              "nodeType": "ExpressionStatement",
                              "src": "8262:67:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 12511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12494,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "8350:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12498,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 12495,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12244,
                                  "src": "8359:11:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 12496,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8359:19:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 12497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8359:21:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8350:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 12500,
                                "name": "_fundingRecipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12422,
                                "src": "8424:17:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 12501,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12424,
                                "src": "8462:6:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 12502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8491:1:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "id": 12503,
                                "name": "_quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12426,
                                "src": "8516:9:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 12504,
                                "name": "_royaltyBPS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12428,
                                "src": "8551:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 12505,
                                "name": "_startTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12430,
                                "src": "8587:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 12506,
                                "name": "_endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12432,
                                "src": "8620:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 12507,
                                "name": "_permissionedQuantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12434,
                                "src": "8664:21:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "id": 12508,
                                "name": "_signerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12436,
                                "src": "8714:14:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 12509,
                                "name": "_baseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12440,
                                "src": "8751:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 12499,
                              "name": "Edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12290,
                              "src": "8384:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Edition_$12290_storage_ptr_$",
                                "typeString": "type(struct TEST_ArtistV6.Edition storage pointer)"
                              }
                            },
                            "id": 12510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "fundingRecipient",
                              "price",
                              "numSold",
                              "quantity",
                              "royaltyBPS",
                              "startTime",
                              "endTime",
                              "permissionedQuantity",
                              "signerAddress",
                              "baseURI"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "8384:386:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_memory_ptr",
                              "typeString": "struct TEST_ArtistV6.Edition memory"
                            }
                          },
                          "src": "8350:420:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$12290_storage",
                            "typeString": "struct TEST_ArtistV6.Edition storage ref"
                          }
                        },
                        "id": 12512,
                        "nodeType": "ExpressionStatement",
                        "src": "8350:420:44"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 12514,
                                  "name": "atEditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12244,
                                  "src": "8814:11:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                    "typeString": "struct CountersUpgradeable.Counter storage ref"
                                  }
                                },
                                "id": 12515,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "current",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2182,
                                "src": "8814:19:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                  "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 12516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8814:21:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12517,
                              "name": "_fundingRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12422,
                              "src": "8849:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 12518,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12424,
                              "src": "8880:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12519,
                              "name": "_quantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12426,
                              "src": "8900:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 12520,
                              "name": "_royaltyBPS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12428,
                              "src": "8923:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 12521,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12430,
                              "src": "8948:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 12522,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12432,
                              "src": "8972:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 12523,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12434,
                              "src": "8994:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 12524,
                              "name": "_signerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12436,
                              "src": "9029:14:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12513,
                            "name": "EditionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12320,
                            "src": "8786:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,uint256,uint32,uint32,uint32,uint32,uint32,address)"
                            }
                          },
                          "id": 12525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8786:267:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12526,
                        "nodeType": "EmitStatement",
                        "src": "8781:272:44"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 12527,
                              "name": "atEditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12244,
                              "src": "9064:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                "typeString": "struct CountersUpgradeable.Counter storage ref"
                              }
                            },
                            "id": 12529,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "increment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2196,
                            "src": "9064:21:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2170_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                              "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                            }
                          },
                          "id": 12530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9064:23:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12531,
                        "nodeType": "ExpressionStatement",
                        "src": "9064:23:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12420,
                    "nodeType": "StructuredDocumentation",
                    "src": "6820:722:44",
                    "text": "@notice Creates a new edition.\n @param _fundingRecipient The account that will receive sales revenue.\n @param _price The price at which each token will be sold, in ETH.\n @param _quantity The maximum number of tokens that can be sold.\n @param _royaltyBPS The royalty amount in bps.\n @param _startTime The start time of the auction, in seconds since unix epoch.\n @param _endTime The end time of the auction, in seconds since unix epoch.\n @param _permissionedQuantity The quantity of tokens that require a signature to buy.\n @param _signerAddress signer address.\n @param _editionId The expected edition ID\n @param _baseURI The base URI for the edition"
                  },
                  "functionSelector": "8e116aea",
                  "id": 12533,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12443,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "7904:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12444,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12442,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "7888:15:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7888:27:44"
                    }
                  ],
                  "name": "createEdition",
                  "nameLocation": "7556:13:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12422,
                        "mutability": "mutable",
                        "name": "_fundingRecipient",
                        "nameLocation": "7595:17:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7579:33:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 12421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7579:15:44",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12424,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "7630:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7622:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12423,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7622:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12426,
                        "mutability": "mutable",
                        "name": "_quantity",
                        "nameLocation": "7653:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7646:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12425,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7646:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12428,
                        "mutability": "mutable",
                        "name": "_royaltyBPS",
                        "nameLocation": "7679:11:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7672:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12427,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7672:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12430,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "7707:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7700:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12429,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7700:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12432,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "7734:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7727:15:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12431,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7727:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12434,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "7759:21:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7752:28:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12433,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7752:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12436,
                        "mutability": "mutable",
                        "name": "_signerAddress",
                        "nameLocation": "7798:14:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7790:22:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12435,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7790:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12438,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "7830:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7822:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7822:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12440,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "7864:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12533,
                        "src": "7850:22:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12439,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7850:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7569:309:44"
                  },
                  "returnParameters": {
                    "id": 12445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7916:0:44"
                  },
                  "scope": 13547,
                  "src": "7547:1547:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12710,
                    "nodeType": "Block",
                    "src": "9567:2681:44",
                    "statements": [
                      {
                        "assignments": [
                          12544
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12544,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "9638:5:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "9630:13:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12543,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9630:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12549,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12545,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "9646:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12547,
                            "indexExpression": {
                              "id": 12546,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12536,
                              "src": "9655:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9646:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 12548,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "price",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12273,
                          "src": "9646:26:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9630:42:44"
                      },
                      {
                        "assignments": [
                          12551
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12551,
                            "mutability": "mutable",
                            "name": "quantity",
                            "nameLocation": "9689:8:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "9682:15:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12550,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9682:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12556,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12552,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "9700:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12554,
                            "indexExpression": {
                              "id": 12553,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12536,
                              "src": "9709:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9700:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 12555,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12277,
                          "src": "9700:29:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9682:47:44"
                      },
                      {
                        "assignments": [
                          12558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12558,
                            "mutability": "mutable",
                            "name": "numSold",
                            "nameLocation": "9746:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "9739:14:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12557,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9739:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12563,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12559,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "9756:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12561,
                            "indexExpression": {
                              "id": 12560,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12536,
                              "src": "9765:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9756:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 12562,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numSold",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12275,
                          "src": "9756:28:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9739:45:44"
                      },
                      {
                        "assignments": [
                          12565
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12565,
                            "mutability": "mutable",
                            "name": "newNumSold",
                            "nameLocation": "9801:10:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "9794:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12564,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9794:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12569,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 12568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12566,
                            "name": "numSold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12558,
                            "src": "9814:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 12567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9824:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9814:11:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9794:31:44"
                      },
                      {
                        "assignments": [
                          12571
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12571,
                            "mutability": "mutable",
                            "name": "startTime",
                            "nameLocation": "9842:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "9835:16:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12570,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9835:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12576,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12572,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "9854:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12574,
                            "indexExpression": {
                              "id": 12573,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12536,
                              "src": "9863:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9854:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 12575,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12281,
                          "src": "9854:30:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9835:49:44"
                      },
                      {
                        "assignments": [
                          12578
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12578,
                            "mutability": "mutable",
                            "name": "endTime",
                            "nameLocation": "9901:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "9894:14:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12577,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9894:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12583,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12579,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "9911:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12581,
                            "indexExpression": {
                              "id": 12580,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12536,
                              "src": "9920:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9911:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 12582,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12283,
                          "src": "9911:28:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9894:45:44"
                      },
                      {
                        "assignments": [
                          12585
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12585,
                            "mutability": "mutable",
                            "name": "permissionedQuantity",
                            "nameLocation": "9956:20:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "9949:27:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12584,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9949:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12590,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12586,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "9979:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12588,
                            "indexExpression": {
                              "id": 12587,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12536,
                              "src": "9988:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9979:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 12589,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permissionedQuantity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12285,
                          "src": "9979:41:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9949:71:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 12594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12592,
                                "name": "quantity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12551,
                                "src": "10183:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 12593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10194:1:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10183:12:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e20646f6573206e6f74206578697374",
                              "id": 12595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10197:24:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              },
                              "value": "Edition does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9c9273c1fe64a32735b0b5ece8584cacfde26591fa0939cb17180fbc17d3db",
                                "typeString": "literal_string \"Edition does not exist\""
                              }
                            ],
                            "id": 12591,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10175:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10175:47:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12597,
                        "nodeType": "ExpressionStatement",
                        "src": "10175:47:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 12599,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "10303:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "10303:9:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 12601,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12544,
                                "src": "10316:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10303:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d7573742073656e6420656e6f75676820746f207075726368617365207468652065646974696f6e2e",
                              "id": 12603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10323:43:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              },
                              "value": "Must send enough to purchase the edition."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a671e31ed9a9fe9218e57df46a0db8d55da91a6547e86c3cdc375b0e5dea9b7b",
                                "typeString": "literal_string \"Must send enough to purchase the edition.\""
                              }
                            ],
                            "id": 12598,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10295:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10295:72:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12605,
                        "nodeType": "ExpressionStatement",
                        "src": "10295:72:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12607,
                                "name": "endTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12578,
                                "src": "10437:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 12608,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "10447:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 12609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "10447:15:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10437:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "41756374696f6e2068617320656e646564",
                              "id": 12611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10464:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              },
                              "value": "Auction has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56b97bcc53ee0c0e9403b910ca18980144503ea7aa8dd9200096ebdea6941df5",
                                "typeString": "literal_string \"Auction has ended\""
                              }
                            ],
                            "id": 12606,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10429:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10429:55:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12613,
                        "nodeType": "ExpressionStatement",
                        "src": "10429:55:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12614,
                            "name": "startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12571,
                            "src": "10550:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 12615,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "10562:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 12616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "10562:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10550:27:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12647,
                          "nodeType": "Block",
                          "src": "11002:293:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 12643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 12641,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12558,
                                      "src": "11228:7:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 12642,
                                      "name": "quantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12551,
                                      "src": "11238:8:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "11228:18:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "546869732065646974696f6e20697320616c726561647920736f6c64206f75742e",
                                    "id": 12644,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11248:35:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    },
                                    "value": "This edition is already sold out."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9a34148a356c82c0a0273b00294704a270737da50eaab117a79e86d3623a5ca8",
                                      "typeString": "literal_string \"This edition is already sold out.\""
                                    }
                                  ],
                                  "id": 12640,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "11220:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 12645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11220:64:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12646,
                              "nodeType": "ExpressionStatement",
                              "src": "11220:64:44"
                            }
                          ]
                        },
                        "id": 12648,
                        "nodeType": "IfStatement",
                        "src": "10546:749:44",
                        "trueBody": {
                          "id": 12639,
                          "nodeType": "Block",
                          "src": "10579:417:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 12621,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 12619,
                                      "name": "numSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12558,
                                      "src": "10667:7:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 12620,
                                      "name": "permissionedQuantity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12585,
                                      "src": "10677:20:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "10667:30:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e6f207065726d697373696f6e656420746f6b656e7320617661696c61626c652026206f70656e2061756374696f6e206e6f742073746172746564",
                                    "id": 12622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10699:61:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    },
                                    "value": "No permissioned tokens available & open auction not started"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_267765f9170ac3737ee2548251baac4e5073ddc1745f79c67302ffa47e0d0bd9",
                                      "typeString": "literal_string \"No permissioned tokens available & open auction not started\""
                                    }
                                  ],
                                  "id": 12618,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10659:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 12623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10659:102:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12624,
                              "nodeType": "ExpressionStatement",
                              "src": "10659:102:44"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 12635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 12627,
                                          "name": "_signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12538,
                                          "src": "10861:10:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "id": 12628,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12536,
                                          "src": "10873:10:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 12629,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12540,
                                          "src": "10885:13:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 12626,
                                        "name": "getSigner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13422,
                                        "src": "10851:9:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                                          "typeString": "function (bytes calldata,uint256,uint256) returns (address)"
                                        }
                                      },
                                      "id": 12630,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10851:48:44",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 12631,
                                          "name": "editions",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12249,
                                          "src": "10903:8:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                            "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                          }
                                        },
                                        "id": 12633,
                                        "indexExpression": {
                                          "id": 12632,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12536,
                                          "src": "10912:10:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10903:20:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                          "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                        }
                                      },
                                      "id": 12634,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signerAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12287,
                                      "src": "10903:34:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "10851:86:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76616c6964207369676e6572",
                                    "id": 12636,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10955:16:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    },
                                    "value": "Invalid signer"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365",
                                      "typeString": "literal_string \"Invalid signer\""
                                    }
                                  ],
                                  "id": 12625,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10826:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 12637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10826:159:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12638,
                              "nodeType": "ExpressionStatement",
                              "src": "10826:159:44"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12650
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12650,
                            "mutability": "mutable",
                            "name": "tokenId",
                            "nameLocation": "11381:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12710,
                            "src": "11373:15:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12649,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11373:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12651,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11373:15:44"
                      },
                      {
                        "id": 12668,
                        "nodeType": "UncheckedBlock",
                        "src": "11398:201:44",
                        "statements": [
                          {
                            "expression": {
                              "id": 12659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 12652,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12650,
                                "src": "11422:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 12655,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 12653,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12536,
                                        "src": "11433:10:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313238",
                                        "id": 12654,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11447:3:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_128_by_1",
                                          "typeString": "int_const 128"
                                        },
                                        "value": "128"
                                      },
                                      "src": "11433:17:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 12656,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "11432:19:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 12657,
                                  "name": "newNumSold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12565,
                                  "src": "11454:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "11432:32:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11422:42:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12660,
                            "nodeType": "ExpressionStatement",
                            "src": "11422:42:44"
                          },
                          {
                            "expression": {
                              "id": 12666,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 12661,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12249,
                                    "src": "11547:8:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                      "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                    }
                                  },
                                  "id": 12663,
                                  "indexExpression": {
                                    "id": 12662,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12536,
                                    "src": "11556:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11547:20:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                    "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                  }
                                },
                                "id": 12664,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "numSold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12275,
                                "src": "11547:28:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 12665,
                                "name": "newNumSold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12565,
                                "src": "11578:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "11547:41:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 12667,
                            "nodeType": "ExpressionStatement",
                            "src": "11547:41:44"
                          }
                        ]
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 12669,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12249,
                                "src": "11728:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                  "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 12671,
                              "indexExpression": {
                                "id": 12670,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12536,
                                "src": "11737:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11728:20:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                "typeString": "struct TEST_ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 12672,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12271,
                            "src": "11728:37:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 12673,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11762,
                              "src": "11769:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 12674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11769:7:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11728:48:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12693,
                          "nodeType": "Block",
                          "src": "11911:137:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 12685,
                                        "name": "editions",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12249,
                                        "src": "11988:8:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                          "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                        }
                                      },
                                      "id": 12687,
                                      "indexExpression": {
                                        "id": 12686,
                                        "name": "_editionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12536,
                                        "src": "11997:10:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "11988:20:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                        "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                      }
                                    },
                                    "id": 12688,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12271,
                                    "src": "11988:37:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12689,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12027:3:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12690,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "src": "12027:9:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12684,
                                  "name": "_sendFunds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13335,
                                  "src": "11977:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 12691,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11977:60:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12692,
                              "nodeType": "ExpressionStatement",
                              "src": "11977:60:44"
                            }
                          ]
                        },
                        "id": 12694,
                        "nodeType": "IfStatement",
                        "src": "11724:324:44",
                        "trueBody": {
                          "id": 12683,
                          "nodeType": "Block",
                          "src": "11778:127:44",
                          "statements": [
                            {
                              "expression": {
                                "id": 12681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 12676,
                                    "name": "depositedForEdition",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12257,
                                    "src": "11850:19:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 12678,
                                  "indexExpression": {
                                    "id": 12677,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12536,
                                    "src": "11870:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11850:31:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 12679,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "11885:3:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "11885:9:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11850:44:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12682,
                              "nodeType": "ExpressionStatement",
                              "src": "11850:44:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12696,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12129:3:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12129:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12698,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12650,
                              "src": "12141:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12695,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1423,
                            "src": "12123:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 12699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12123:26:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12700,
                        "nodeType": "ExpressionStatement",
                        "src": "12123:26:44"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12702,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12536,
                              "src": "12182:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12703,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12650,
                              "src": "12194:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12704,
                              "name": "newNumSold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12565,
                              "src": "12203:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "expression": {
                                "id": 12705,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12215:3:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12215:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12707,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12540,
                              "src": "12227:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12701,
                            "name": "EditionPurchased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12332,
                            "src": "12165:16:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint32,address,uint256)"
                            }
                          },
                          "id": 12708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12165:76:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12709,
                        "nodeType": "EmitStatement",
                        "src": "12160:81:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12534,
                    "nodeType": "StructuredDocumentation",
                    "src": "9100:325:44",
                    "text": "@notice Creates a new token for the given edition, and assigns it to the buyer\n @param _editionId The id of the edition to purchase\n @param _signature A signed message for authorizing permissioned purchases\n @param _ticketNumber Ticket number required for validating this buyer hasn't already bought."
                  },
                  "functionSelector": "f71e54fb",
                  "id": 12711,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "buyEdition",
                  "nameLocation": "9439:10:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12541,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12536,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "9467:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12711,
                        "src": "9459:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12535,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9459:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12538,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "9502:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12711,
                        "src": "9487:25:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12537,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9487:5:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12540,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "9530:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12711,
                        "src": "9522:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12539,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9522:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9449:100:44"
                  },
                  "returnParameters": {
                    "id": 12542,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9567:0:44"
                  },
                  "scope": 13547,
                  "src": "9430:2818:44",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12743,
                    "nodeType": "Block",
                    "src": "12452:494:44",
                    "statements": [
                      {
                        "assignments": [
                          12718
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12718,
                            "mutability": "mutable",
                            "name": "remainingForEdition",
                            "nameLocation": "12545:19:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12743,
                            "src": "12537:27:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12717,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12537:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12726,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 12719,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12257,
                              "src": "12567:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 12721,
                            "indexExpression": {
                              "id": 12720,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12714,
                              "src": "12587:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12567:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 12722,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12261,
                              "src": "12601:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 12724,
                            "indexExpression": {
                              "id": 12723,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12714,
                              "src": "12621:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12601:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12567:65:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12537:95:44"
                      },
                      {
                        "expression": {
                          "id": 12733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12727,
                              "name": "withdrawnForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12261,
                              "src": "12704:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 12729,
                            "indexExpression": {
                              "id": 12728,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12714,
                              "src": "12724:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12704:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 12730,
                              "name": "depositedForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12257,
                              "src": "12738:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 12732,
                            "indexExpression": {
                              "id": 12731,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12714,
                              "src": "12758:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12738:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12704:65:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12734,
                        "nodeType": "ExpressionStatement",
                        "src": "12704:65:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 12736,
                                  "name": "editions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12249,
                                  "src": "12880:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                    "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                  }
                                },
                                "id": 12738,
                                "indexExpression": {
                                  "id": 12737,
                                  "name": "_editionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12714,
                                  "src": "12889:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12880:20:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                  "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                }
                              },
                              "id": 12739,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12271,
                              "src": "12880:37:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 12740,
                              "name": "remainingForEdition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12718,
                              "src": "12919:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12735,
                            "name": "_sendFunds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13335,
                            "src": "12869:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 12741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12869:70:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12742,
                        "nodeType": "ExpressionStatement",
                        "src": "12869:70:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12712,
                    "nodeType": "StructuredDocumentation",
                    "src": "12254:141:44",
                    "text": "@notice Withdraws from the Artist to the fundingRecipient for an edition\n @param _editionId The id of the edition to withdraw from"
                  },
                  "functionSelector": "155dd5ee",
                  "id": 12744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFunds",
                  "nameLocation": "12409:13:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12714,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "12431:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12744,
                        "src": "12423:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12713,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12423:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12422:20:44"
                  },
                  "returnParameters": {
                    "id": 12716,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12452:0:44"
                  },
                  "scope": 13547,
                  "src": "12400:546:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12769,
                    "nodeType": "Block",
                    "src": "13253:129:44",
                    "statements": [
                      {
                        "expression": {
                          "id": 12760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12755,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12249,
                                "src": "13263:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                  "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 12757,
                              "indexExpression": {
                                "id": 12756,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12747,
                                "src": "13272:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13263:20:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                "typeString": "struct TEST_ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 12758,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12281,
                            "src": "13263:30:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12759,
                            "name": "_startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12749,
                            "src": "13296:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13263:43:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 12761,
                        "nodeType": "ExpressionStatement",
                        "src": "13263:43:44"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12763,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12300,
                                "src": "13336:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$12300_$",
                                  "typeString": "type(enum TEST_ArtistV6.TimeType)"
                                }
                              },
                              "id": 12764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "START",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12298,
                              "src": "13336:14:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$12300",
                                "typeString": "enum TEST_ArtistV6.TimeType"
                              }
                            },
                            {
                              "id": 12765,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12747,
                              "src": "13352:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12766,
                              "name": "_startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12749,
                              "src": "13364:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$12300",
                                "typeString": "enum TEST_ArtistV6.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 12762,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12341,
                            "src": "13321:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$12300_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum TEST_ArtistV6.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 12767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13321:54:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12768,
                        "nodeType": "EmitStatement",
                        "src": "13316:59:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12745,
                    "nodeType": "StructuredDocumentation",
                    "src": "12952:198:44",
                    "text": "@notice Sets the start time for an edition\n @param _editionId The id of the edition to set the start time for\n @param _startTime The start time to set (in seconds since unix epoch)"
                  },
                  "functionSelector": "fbab9e04",
                  "id": 12770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12752,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "13241:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12753,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12751,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "13225:15:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13225:27:44"
                    }
                  ],
                  "name": "setStartTime",
                  "nameLocation": "13164:12:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12747,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13185:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12770,
                        "src": "13177:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13177:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12749,
                        "mutability": "mutable",
                        "name": "_startTime",
                        "nameLocation": "13204:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12770,
                        "src": "13197:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12748,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13197:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13176:39:44"
                  },
                  "returnParameters": {
                    "id": 12754,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13253:0:44"
                  },
                  "scope": 13547,
                  "src": "13155:227:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12795,
                    "nodeType": "Block",
                    "src": "13677:121:44",
                    "statements": [
                      {
                        "expression": {
                          "id": 12786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12781,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12249,
                                "src": "13687:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                  "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 12783,
                              "indexExpression": {
                                "id": 12782,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12773,
                                "src": "13696:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13687:20:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                "typeString": "struct TEST_ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 12784,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12283,
                            "src": "13687:28:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12785,
                            "name": "_endTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12775,
                            "src": "13718:8:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "13687:39:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 12787,
                        "nodeType": "ExpressionStatement",
                        "src": "13687:39:44"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12789,
                                "name": "TimeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12300,
                                "src": "13756:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_TimeType_$12300_$",
                                  "typeString": "type(enum TEST_ArtistV6.TimeType)"
                                }
                              },
                              "id": 12790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "END",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12299,
                              "src": "13756:12:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TimeType_$12300",
                                "typeString": "enum TEST_ArtistV6.TimeType"
                              }
                            },
                            {
                              "id": 12791,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "13770:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12792,
                              "name": "_endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12775,
                              "src": "13782:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_TimeType_$12300",
                                "typeString": "enum TEST_ArtistV6.TimeType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 12788,
                            "name": "AuctionTimeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12341,
                            "src": "13741:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_enum$_TimeType_$12300_$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (enum TEST_ArtistV6.TimeType,uint256,uint32)"
                            }
                          },
                          "id": 12793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13741:50:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12794,
                        "nodeType": "EmitStatement",
                        "src": "13736:55:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12771,
                    "nodeType": "StructuredDocumentation",
                    "src": "13388:190:44",
                    "text": "@notice Sets the end time for an edition\n @param _editionId The id of the edition to set the end time for\n @param _endTime The end time to set (in seconds since unix epoch)"
                  },
                  "functionSelector": "bb314ca1",
                  "id": 12796,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12778,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "13665:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12779,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12777,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "13649:15:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13649:27:44"
                    }
                  ],
                  "name": "setEndTime",
                  "nameLocation": "13592:10:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12773,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "13611:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12796,
                        "src": "13603:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13603:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12775,
                        "mutability": "mutable",
                        "name": "_endTime",
                        "nameLocation": "13630:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12796,
                        "src": "13623:15:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12774,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13623:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13602:37:44"
                  },
                  "returnParameters": {
                    "id": 12780,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13677:0:44"
                  },
                  "scope": 13547,
                  "src": "13583:215:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12829,
                    "nodeType": "Block",
                    "src": "14126:214:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12808,
                                "name": "_newSignerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12801,
                                "src": "14144:17:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12811,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14173:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 12810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14165:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12809,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14165:7:44",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14165:10:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14144:31:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e657220616464726573732063616e6e6f742062652030",
                              "id": 12814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14177:28:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              },
                              "value": "Signer address cannot be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4708ec4c8f0c9af4257bc705c896060167013acf910ae3e259f887bd60baab5e",
                                "typeString": "literal_string \"Signer address cannot be 0\""
                              }
                            ],
                            "id": 12807,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14136:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14136:70:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12816,
                        "nodeType": "ExpressionStatement",
                        "src": "14136:70:44"
                      },
                      {
                        "expression": {
                          "id": 12822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12817,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12249,
                                "src": "14217:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                  "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 12819,
                              "indexExpression": {
                                "id": 12818,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12799,
                                "src": "14226:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14217:20:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                "typeString": "struct TEST_ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 12820,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signerAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12287,
                            "src": "14217:34:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12821,
                            "name": "_newSignerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12801,
                            "src": "14254:17:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14217:54:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12823,
                        "nodeType": "ExpressionStatement",
                        "src": "14217:54:44"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12825,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12799,
                              "src": "14303:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12826,
                              "name": "_newSignerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12801,
                              "src": "14315:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12824,
                            "name": "SignerAddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12347,
                            "src": "14286:16:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address)"
                            }
                          },
                          "id": 12827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14286:47:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12828,
                        "nodeType": "EmitStatement",
                        "src": "14281:52:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12797,
                    "nodeType": "StructuredDocumentation",
                    "src": "13804:207:44",
                    "text": "@notice Sets the signature address of an edition\n @param _editionId The edition id to set the signature address for\n @param _newSignerAddress The address that will be used to sign purchases"
                  },
                  "functionSelector": "56dee996",
                  "id": 12830,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12804,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "14114:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12805,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12803,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "14098:15:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14098:27:44"
                    }
                  ],
                  "name": "setSignerAddress",
                  "nameLocation": "14025:16:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12799,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "14050:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12830,
                        "src": "14042:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12798,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14042:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12801,
                        "mutability": "mutable",
                        "name": "_newSignerAddress",
                        "nameLocation": "14070:17:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12830,
                        "src": "14062:25:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12800,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14062:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14041:47:44"
                  },
                  "returnParameters": {
                    "id": 12806,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14126:0:44"
                  },
                  "scope": 13547,
                  "src": "14016:324:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12866,
                    "nodeType": "Block",
                    "src": "14692:337:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 12842,
                                    "name": "editions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12249,
                                    "src": "14794:8:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                      "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                    }
                                  },
                                  "id": 12844,
                                  "indexExpression": {
                                    "id": 12843,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12833,
                                    "src": "14803:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14794:20:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                    "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                  }
                                },
                                "id": 12845,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signerAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12287,
                                "src": "14794:34:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12848,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14840:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 12847,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14832:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12846,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14832:7:44",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14832:10:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14794:48:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45646974696f6e206d75737420686176652061207369676e6572",
                              "id": 12851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14844:28:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              },
                              "value": "Edition must have a signer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d7f2bb41a8c7f75338264dccd2c90a31cb66cb1456822abf680288b916ad34ec",
                                "typeString": "literal_string \"Edition must have a signer\""
                              }
                            ],
                            "id": 12841,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14786:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14786:87:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12853,
                        "nodeType": "ExpressionStatement",
                        "src": "14786:87:44"
                      },
                      {
                        "expression": {
                          "id": 12859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12854,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12249,
                                "src": "14884:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                  "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 12856,
                              "indexExpression": {
                                "id": 12855,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12833,
                                "src": "14893:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14884:20:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                "typeString": "struct TEST_ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 12857,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "permissionedQuantity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12285,
                            "src": "14884:41:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12858,
                            "name": "_permissionedQuantity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12835,
                            "src": "14928:21:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "14884:65:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 12860,
                        "nodeType": "ExpressionStatement",
                        "src": "14884:65:44"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12862,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12833,
                              "src": "14988:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12863,
                              "name": "_permissionedQuantity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12835,
                              "src": "15000:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 12861,
                            "name": "PermissionedQuantitySet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12353,
                            "src": "14964:23:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint32)"
                            }
                          },
                          "id": 12864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14964:58:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12865,
                        "nodeType": "EmitStatement",
                        "src": "14959:63:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12831,
                    "nodeType": "StructuredDocumentation",
                    "src": "14346:201:44",
                    "text": "@notice Sets the permissioned quantity for an edition\n @param _editionId The edition id to set the permissioned quantity for\n @param _permissionedQuantity The new permissiond quantity"
                  },
                  "functionSelector": "52e25bf2",
                  "id": 12867,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12838,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "14676:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12839,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12837,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "14660:15:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14660:27:44"
                    }
                  ],
                  "name": "setPermissionedQuantity",
                  "nameLocation": "14561:23:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12833,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "14593:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12867,
                        "src": "14585:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12832,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14585:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12835,
                        "mutability": "mutable",
                        "name": "_permissionedQuantity",
                        "nameLocation": "14612:21:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12867,
                        "src": "14605:28:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12834,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14605:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14584:50:44"
                  },
                  "returnParameters": {
                    "id": 12840,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14692:0:44"
                  },
                  "scope": 13547,
                  "src": "14552:477:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12894,
                    "nodeType": "Block",
                    "src": "15255:153:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12874,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "15273:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 12875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15273:12:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12876,
                                    "name": "soundRecoveryAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13301,
                                    "src": "15289:20:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 12877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15289:22:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15273:38:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12879,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2149,
                                    "src": "15315:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 12880,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15315:12:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12881,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11762,
                                    "src": "15331:5:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 12882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15331:7:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15315:23:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "15273:65:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "756e617574686f72697a6564",
                              "id": 12885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15340:14:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 12873,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15265:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15265:90:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12887,
                        "nodeType": "ExpressionStatement",
                        "src": "15265:90:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 12891,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12870,
                              "src": "15391:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 12888,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "15366:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_TEST_ArtistV6_$13547_$",
                                "typeString": "type(contract super TEST_ArtistV6)"
                              }
                            },
                            "id": 12890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11819,
                            "src": "15366:24:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 12892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15366:35:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12893,
                        "nodeType": "ExpressionStatement",
                        "src": "15366:35:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12868,
                    "nodeType": "StructuredDocumentation",
                    "src": "15035:161:44",
                    "text": "@notice Sets a new owner, only callable by current owner or the soundRecoveryAddress (ie: gnosis safe)\n @param _newOwner The new owner of the contract"
                  },
                  "functionSelector": "75a8f08f",
                  "id": 12895,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setOwnerOverride",
                  "nameLocation": "15210:16:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12870,
                        "mutability": "mutable",
                        "name": "_newOwner",
                        "nameLocation": "15235:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12895,
                        "src": "15227:17:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12869,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15227:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15226:19:44"
                  },
                  "returnParameters": {
                    "id": 12872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15255:0:44"
                  },
                  "scope": 13547,
                  "src": "15201:207:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12935,
                    "nodeType": "Block",
                    "src": "15664:263:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 12912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 12907,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12249,
                                      "src": "15695:8:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                        "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                      }
                                    },
                                    "id": 12909,
                                    "indexExpression": {
                                      "id": 12908,
                                      "name": "_editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12898,
                                      "src": "15704:10:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15695:20:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                      "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                    }
                                  },
                                  "id": 12910,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "quantity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12277,
                                  "src": "15695:29:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 12911,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15727:1:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15695:33:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 12918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 12913,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12249,
                                      "src": "15732:8:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                        "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                      }
                                    },
                                    "id": 12915,
                                    "indexExpression": {
                                      "id": 12914,
                                      "name": "_editionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12898,
                                      "src": "15741:10:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15732:20:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                      "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                    }
                                  },
                                  "id": 12916,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "permissionedQuantity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12285,
                                  "src": "15732:41:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 12917,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15776:1:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15732:45:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "15695:82:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e6f6e6578697374656e742065646974696f6e",
                              "id": 12920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15791:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163",
                                "typeString": "literal_string \"Nonexistent edition\""
                              },
                              "value": "Nonexistent edition"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9b670af3aa1209060edea5e633c678c131eaf2999c0746d27a2bd794ea991163",
                                "typeString": "literal_string \"Nonexistent edition\""
                              }
                            ],
                            "id": 12906,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15674:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15674:148:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12922,
                        "nodeType": "ExpressionStatement",
                        "src": "15674:148:44"
                      },
                      {
                        "expression": {
                          "id": 12928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 12923,
                                "name": "editions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12249,
                                "src": "15833:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                  "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                }
                              },
                              "id": 12925,
                              "indexExpression": {
                                "id": 12924,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12898,
                                "src": "15842:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15833:20:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                "typeString": "struct TEST_ArtistV6.Edition storage ref"
                              }
                            },
                            "id": 12926,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "baseURI",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12289,
                            "src": "15833:28:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12927,
                            "name": "_baseURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12900,
                            "src": "15864:8:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "15833:39:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 12929,
                        "nodeType": "ExpressionStatement",
                        "src": "15833:39:44"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12931,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12898,
                              "src": "15899:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12932,
                              "name": "_baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12900,
                              "src": "15911:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 12930,
                            "name": "BaseURISet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12359,
                            "src": "15888:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,string memory)"
                            }
                          },
                          "id": 12933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15888:32:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12934,
                        "nodeType": "EmitStatement",
                        "src": "15883:37:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12896,
                    "nodeType": "StructuredDocumentation",
                    "src": "15414:135:44",
                    "text": "@notice Sets the base URI for an edition\n @param _editionId The target edition's id\n @param _baseURI The new base URI"
                  },
                  "functionSelector": "79672692",
                  "id": 12936,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 12903,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11699,
                          "src": "15652:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "id": 12904,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12902,
                        "name": "checkPermission",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11923,
                        "src": "15636:15:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15636:27:44"
                    }
                  ],
                  "name": "setEditionBaseURI",
                  "nameLocation": "15563:17:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12898,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "15589:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12936,
                        "src": "15581:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12897,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15581:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12900,
                        "mutability": "mutable",
                        "name": "_baseURI",
                        "nameLocation": "15617:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12936,
                        "src": "15601:24:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12899,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15601:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15580:46:44"
                  },
                  "returnParameters": {
                    "id": 12905,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15664:0:44"
                  },
                  "scope": 13547,
                  "src": "15554:373:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1051
                  ],
                  "body": {
                    "id": 12996,
                    "nodeType": "Block",
                    "src": "16310:615:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 12947,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12939,
                                  "src": "16336:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 12946,
                                "name": "_exists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1279,
                                "src": "16328:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 12948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16328:17:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                              "id": 12949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16347:49:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              },
                              "value": "ERC721Metadata: URI query for nonexistent token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                                "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                              }
                            ],
                            "id": 12945,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16320:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16320:77:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12951,
                        "nodeType": "ExpressionStatement",
                        "src": "16320:77:44"
                      },
                      {
                        "assignments": [
                          12953
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12953,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "16416:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12996,
                            "src": "16408:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12952,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16408:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12957,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12955,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12939,
                              "src": "16443:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12954,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13168,
                            "src": "16428:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 12956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16428:24:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16408:44:44"
                      },
                      {
                        "assignments": [
                          12959
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12959,
                            "mutability": "mutable",
                            "name": "editionBaseURI",
                            "nameLocation": "16477:14:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 12996,
                            "src": "16463:28:44",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 12958,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "16463:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12964,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 12960,
                              "name": "editions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12249,
                              "src": "16494:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                              }
                            },
                            "id": 12962,
                            "indexExpression": {
                              "id": 12961,
                              "name": "editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12953,
                              "src": "16503:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16494:19:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_storage",
                              "typeString": "struct TEST_ArtistV6.Edition storage ref"
                            }
                          },
                          "id": 12963,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "baseURI",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12289,
                          "src": "16494:27:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16463:58:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 12967,
                                  "name": "editionBaseURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12959,
                                  "src": "16705:14:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 12966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16699:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 12965,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16699:5:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16699:21:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 12969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "16699:28:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 12970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16730:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "16699:32:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12984,
                        "nodeType": "IfStatement",
                        "src": "16695:145:44",
                        "trueBody": {
                          "id": 12983,
                          "nodeType": "Block",
                          "src": "16733:107:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 12975,
                                    "name": "editionBaseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12959,
                                    "src": "16768:14:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 12978,
                                        "name": "_tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12939,
                                        "src": "16801:8:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 12976,
                                        "name": "Strings",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4271,
                                        "src": "16784:7:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                          "typeString": "type(library Strings)"
                                        }
                                      },
                                      "id": 12977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toString",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4133,
                                      "src": "16784:16:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                        "typeString": "function (uint256) pure returns (string memory)"
                                      }
                                    },
                                    "id": 12979,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16784:26:44",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f6d657461646174612e6a736f6e",
                                    "id": 12980,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16812:16:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c",
                                      "typeString": "literal_string \"/metadata.json\""
                                    },
                                    "value": "/metadata.json"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_36729b1384b41036aa5c7ea0f008334bd05ce4ca3b51916e8ea94d31c3454c5c",
                                      "typeString": "literal_string \"/metadata.json\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 12973,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16754:6:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 12972,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16754:6:44",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "16754:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 12981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16754:75:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 12944,
                              "id": 12982,
                              "nodeType": "Return",
                              "src": "16747:82:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 12988,
                                "name": "_contractBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13536,
                                "src": "16871:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 12989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16871:18:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 12992,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12939,
                                  "src": "16908:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 12990,
                                  "name": "Strings",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4271,
                                  "src": "16891:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                    "typeString": "type(library Strings)"
                                  }
                                },
                                "id": 12991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4133,
                                "src": "16891:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 12993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16891:26:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 12986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16857:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 12985,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "16857:6:44",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "16857:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 12994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16857:61:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 12944,
                        "id": 12995,
                        "nodeType": "Return",
                        "src": "16850:68:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12937,
                    "nodeType": "StructuredDocumentation",
                    "src": "16036:188:44",
                    "text": "@notice Returns token URI (metadata URL). e.g. https://sound.xyz/api/metadata/[contractAddress]/[tokenId]/metadata.json\n @dev Concatenate the baseURI and tokenId, to create URI."
                  },
                  "functionSelector": "c87b56dd",
                  "id": 12997,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "16238:8:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12941,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16277:8:44"
                  },
                  "parameters": {
                    "id": 12940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12939,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "16255:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 12997,
                        "src": "16247:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16247:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16246:18:44"
                  },
                  "returnParameters": {
                    "id": 12944,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12943,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12997,
                        "src": "16295:13:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12942,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "16295:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16294:15:44"
                  },
                  "scope": 13547,
                  "src": "16229:696:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13011,
                    "nodeType": "Block",
                    "src": "17109:71:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 13006,
                                "name": "_contractBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13536,
                                "src": "17140:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 13007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17140:18:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "73746f726566726f6e74",
                              "id": 13008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17160:12:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                "typeString": "literal_string \"storefront\""
                              },
                              "value": "storefront"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9643a0d8c4846c48aa18bf04fda7178241657d62def69524789b3988f71798e7",
                                "typeString": "literal_string \"storefront\""
                              }
                            ],
                            "expression": {
                              "id": 13004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17126:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 13003,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "17126:6:44",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "17126:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 13009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17126:47:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 13002,
                        "id": 13010,
                        "nodeType": "Return",
                        "src": "17119:54:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12998,
                    "nodeType": "StructuredDocumentation",
                    "src": "16931:114:44",
                    "text": "@notice Returns contract URI used by Opensea. e.g. https://sound.xyz/api/metadata/[contractAddress]/storefront"
                  },
                  "functionSelector": "e8a3d485",
                  "id": 13012,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contractURI",
                  "nameLocation": "17059:11:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12999,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17070:2:44"
                  },
                  "returnParameters": {
                    "id": 13002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13001,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13012,
                        "src": "17094:13:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13000,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17094:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17093:15:44"
                  },
                  "scope": 13547,
                  "src": "17050:130:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    149
                  ],
                  "body": {
                    "id": 13070,
                    "nodeType": "Block",
                    "src": "17496:371:44",
                    "statements": [
                      {
                        "assignments": [
                          13026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13026,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "17514:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13070,
                            "src": "17506:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13025,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17506:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13030,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 13028,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13015,
                              "src": "17541:8:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13027,
                            "name": "tokenToEdition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13168,
                            "src": "17526:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 13029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17526:24:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17506:44:44"
                      },
                      {
                        "assignments": [
                          13033
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13033,
                            "mutability": "mutable",
                            "name": "edition",
                            "nameLocation": "17575:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13070,
                            "src": "17560:22:44",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Edition_$12290_memory_ptr",
                              "typeString": "struct TEST_ArtistV6.Edition"
                            },
                            "typeName": {
                              "id": 13032,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 13031,
                                "name": "Edition",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 12290,
                                "src": "17560:7:44"
                              },
                              "referencedDeclaration": 12290,
                              "src": "17560:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_storage_ptr",
                                "typeString": "struct TEST_ArtistV6.Edition"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13037,
                        "initialValue": {
                          "baseExpression": {
                            "id": 13034,
                            "name": "editions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12249,
                            "src": "17585:8:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                              "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                            }
                          },
                          "id": 13036,
                          "indexExpression": {
                            "id": 13035,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13026,
                            "src": "17594:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17585:19:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Edition_$12290_storage",
                            "typeString": "struct TEST_ArtistV6.Edition storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17560:44:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 13038,
                              "name": "edition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13033,
                              "src": "17619:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Edition_$12290_memory_ptr",
                                "typeString": "struct TEST_ArtistV6.Edition memory"
                              }
                            },
                            "id": 13039,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fundingRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12271,
                            "src": "17619:24:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "307830",
                                "id": 13042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17655:3:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 13041,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17647:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13040,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17647:7:44",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17647:12:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17619:40:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13051,
                        "nodeType": "IfStatement",
                        "src": "17615:107:44",
                        "trueBody": {
                          "id": 13050,
                          "nodeType": "Block",
                          "src": "17661:61:44",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "expression": {
                                      "id": 13045,
                                      "name": "edition",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13033,
                                      "src": "17683:7:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Edition_$12290_memory_ptr",
                                        "typeString": "struct TEST_ArtistV6.Edition memory"
                                      }
                                    },
                                    "id": 13046,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fundingRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12271,
                                    "src": "17683:24:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 13047,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17709:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 13048,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17682:29:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(address payable,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 13024,
                              "id": 13049,
                              "nodeType": "Return",
                              "src": "17675:36:44"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          13053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13053,
                            "mutability": "mutable",
                            "name": "royaltyBPS",
                            "nameLocation": "17740:10:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13070,
                            "src": "17732:18:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13052,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17732:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13059,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13056,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13033,
                                "src": "17761:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$12290_memory_ptr",
                                  "typeString": "struct TEST_ArtistV6.Edition memory"
                                }
                              },
                              "id": 13057,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "royaltyBPS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12279,
                              "src": "17761:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 13055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17753:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 13054,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17753:7:44",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17753:27:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17732:48:44"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 13060,
                                "name": "edition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13033,
                                "src": "17799:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Edition_$12290_memory_ptr",
                                  "typeString": "struct TEST_ArtistV6.Edition memory"
                                }
                              },
                              "id": 13061,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12271,
                              "src": "17799:24:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 13064,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 13062,
                                      "name": "_salePrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13017,
                                      "src": "17826:10:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 13063,
                                      "name": "royaltyBPS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13053,
                                      "src": "17839:10:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "17826:23:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 13065,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17825:25:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "hexValue": "31305f303030",
                                "id": 13066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17853:6:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10_000"
                              },
                              "src": "17825:34:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 13068,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "17798:62:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "functionReturnParameters": 13024,
                        "id": 13069,
                        "nodeType": "Return",
                        "src": "17791:69:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13013,
                    "nodeType": "StructuredDocumentation",
                    "src": "17186:129:44",
                    "text": "@notice Get royalty information for token\n @param _tokenId token id\n @param _salePrice Sale price for the token"
                  },
                  "functionSelector": "2a55205a",
                  "id": 13071,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "royaltyInfo",
                  "nameLocation": "17329:11:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13019,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17417:8:44"
                  },
                  "parameters": {
                    "id": 13018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13015,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "17349:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13071,
                        "src": "17341:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13014,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17341:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13017,
                        "mutability": "mutable",
                        "name": "_salePrice",
                        "nameLocation": "17367:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13071,
                        "src": "17359:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13016,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17359:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17340:38:44"
                  },
                  "returnParameters": {
                    "id": 13024,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13021,
                        "mutability": "mutable",
                        "name": "fundingRecipient",
                        "nameLocation": "17451:16:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13071,
                        "src": "17443:24:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13020,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17443:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13023,
                        "mutability": "mutable",
                        "name": "royaltyAmount",
                        "nameLocation": "17477:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13071,
                        "src": "17469:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13022,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17469:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17442:49:44"
                  },
                  "scope": 13547,
                  "src": "17320:547:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 13104,
                    "nodeType": "Block",
                    "src": "17996:174:44",
                    "statements": [
                      {
                        "assignments": [
                          13078
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13078,
                            "mutability": "mutable",
                            "name": "total",
                            "nameLocation": "18014:5:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13104,
                            "src": "18006:13:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13077,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18006:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13080,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 13079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18022:1:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18006:17:44"
                      },
                      {
                        "body": {
                          "id": 13100,
                          "nodeType": "Block",
                          "src": "18088:54:44",
                          "statements": [
                            {
                              "expression": {
                                "id": 13098,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13093,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13078,
                                  "src": "18102:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 13094,
                                      "name": "editions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12249,
                                      "src": "18111:8:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Edition_$12290_storage_$",
                                        "typeString": "mapping(uint256 => struct TEST_ArtistV6.Edition storage ref)"
                                      }
                                    },
                                    "id": 13096,
                                    "indexExpression": {
                                      "id": 13095,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13082,
                                      "src": "18120:2:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18111:12:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Edition_$12290_storage",
                                      "typeString": "struct TEST_ArtistV6.Edition storage ref"
                                    }
                                  },
                                  "id": 13097,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "numSold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12275,
                                  "src": "18111:20:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "18102:29:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13099,
                              "nodeType": "ExpressionStatement",
                              "src": "18102:29:44"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13085,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13082,
                            "src": "18054:2:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 13086,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12244,
                                "src": "18059:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 13087,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "18059:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 13088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18059:21:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18054:26:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13101,
                        "initializationExpression": {
                          "assignments": [
                            13082
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 13082,
                              "mutability": "mutable",
                              "name": "id",
                              "nameLocation": "18046:2:44",
                              "nodeType": "VariableDeclaration",
                              "scope": 13101,
                              "src": "18038:10:44",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 13081,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18038:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 13084,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 13083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18051:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18038:14:44"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 13091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "18082:4:44",
                            "subExpression": {
                              "id": 13090,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13082,
                              "src": "18082:2:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13092,
                          "nodeType": "ExpressionStatement",
                          "src": "18082:4:44"
                        },
                        "nodeType": "ForStatement",
                        "src": "18033:109:44"
                      },
                      {
                        "expression": {
                          "id": 13102,
                          "name": "total",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13078,
                          "src": "18158:5:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13076,
                        "id": 13103,
                        "nodeType": "Return",
                        "src": "18151:12:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13072,
                    "nodeType": "StructuredDocumentation",
                    "src": "17873:63:44",
                    "text": "@notice The total number of tokens created by this contract"
                  },
                  "functionSelector": "18160ddd",
                  "id": 13105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "17950:11:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13073,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17961:2:44"
                  },
                  "returnParameters": {
                    "id": 13076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13075,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13105,
                        "src": "17987:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17987:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17986:9:44"
                  },
                  "scope": 13547,
                  "src": "17941:229:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    940,
                    2986
                  ],
                  "body": {
                    "id": 13128,
                    "nodeType": "Block",
                    "src": "18521:142:44",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 13121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13117,
                                    "name": "IERC2981Upgradeable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 150,
                                    "src": "18555:19:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC2981Upgradeable_$150_$",
                                      "typeString": "type(contract IERC2981Upgradeable)"
                                    }
                                  ],
                                  "id": 13116,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "18550:4:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18550:25:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC2981Upgradeable_$150",
                                  "typeString": "type(contract IERC2981Upgradeable)"
                                }
                              },
                              "id": 13119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "18550:37:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 13120,
                              "name": "_interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13108,
                              "src": "18591:12:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "18550:53:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 13124,
                                "name": "_interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13108,
                                "src": "18643:12:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 13122,
                                "name": "ERC721Upgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "18607:17:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1718_$",
                                  "typeString": "type(contract ERC721Upgradeable)"
                                }
                              },
                              "id": 13123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 940,
                              "src": "18607:35:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 13125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18607:49:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18550:106:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13115,
                        "id": 13127,
                        "nodeType": "Return",
                        "src": "18531:125:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13106,
                    "nodeType": "StructuredDocumentation",
                    "src": "18176:181:44",
                    "text": "@notice Informs other contracts which interfaces this contract supports\n @param _interfaceId The interface id to check\n @dev https://eips.ethereum.org/EIPS/eip-165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 13129,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "18371:17:44",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13112,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 13110,
                        "name": "ERC721Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1718,
                        "src": "18455:17:44"
                      },
                      {
                        "id": 13111,
                        "name": "IERC165Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2987,
                        "src": "18474:18:44"
                      }
                    ],
                    "src": "18446:47:44"
                  },
                  "parameters": {
                    "id": 13109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13108,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nameLocation": "18396:12:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13129,
                        "src": "18389:19:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 13107,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "18389:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18388:21:44"
                  },
                  "returnParameters": {
                    "id": 13115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13114,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13129,
                        "src": "18511:4:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13113,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18511:4:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18510:6:44"
                  },
                  "scope": 13547,
                  "src": "18362:301:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13141,
                    "nodeType": "Block",
                    "src": "18788:117:44",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 13135,
                                "name": "atEditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12244,
                                "src": "18805:11:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Counter_$2170_storage",
                                  "typeString": "struct CountersUpgradeable.Counter storage ref"
                                }
                              },
                              "id": 13136,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "current",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2182,
                              "src": "18805:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2170_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2170_storage_ptr_$",
                                "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 13137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18805:21:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 13138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18829:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "18805:25:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13134,
                        "id": 13140,
                        "nodeType": "Return",
                        "src": "18798:32:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13130,
                    "nodeType": "StructuredDocumentation",
                    "src": "18669:58:44",
                    "text": "@notice returns the number of editions for this artist"
                  },
                  "functionSelector": "4bf44026",
                  "id": 13142,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "editionCount",
                  "nameLocation": "18741:12:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13131,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18753:2:44"
                  },
                  "returnParameters": {
                    "id": 13134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13133,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13142,
                        "src": "18779:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18779:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18778:9:44"
                  },
                  "scope": 13547,
                  "src": "18732:173:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 13167,
                    "nodeType": "Block",
                    "src": "19076:356:44",
                    "statements": [
                      {
                        "assignments": [
                          13151
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13151,
                            "mutability": "mutable",
                            "name": "editionId",
                            "nameLocation": "19158:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13167,
                            "src": "19150:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13150,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19150:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13155,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13152,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13145,
                            "src": "19170:8:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "313238",
                            "id": 13153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19182:3:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "19170:15:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19150:35:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13156,
                            "name": "editionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13151,
                            "src": "19283:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19296:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19283:14:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13164,
                        "nodeType": "IfStatement",
                        "src": "19279:120:44",
                        "trueBody": {
                          "id": 13163,
                          "nodeType": "Block",
                          "src": "19299:100:44",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 13159,
                                  "name": "_tokenToEdition",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12253,
                                  "src": "19363:15:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 13161,
                                "indexExpression": {
                                  "id": 13160,
                                  "name": "_tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13145,
                                  "src": "19379:8:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19363:25:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 13149,
                              "id": 13162,
                              "nodeType": "Return",
                              "src": "19356:32:44"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 13165,
                          "name": "editionId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13151,
                          "src": "19416:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13149,
                        "id": 13166,
                        "nodeType": "Return",
                        "src": "19409:16:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13143,
                    "nodeType": "StructuredDocumentation",
                    "src": "18911:88:44",
                    "text": "@notice Returns the edition id for a given token id\n @param _tokenId token id"
                  },
                  "functionSelector": "602787ed",
                  "id": 13168,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenToEdition",
                  "nameLocation": "19013:14:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13145,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nameLocation": "19036:8:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13168,
                        "src": "19028:16:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13144,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19028:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19027:18:44"
                  },
                  "returnParameters": {
                    "id": 13149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13148,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13168,
                        "src": "19067:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19067:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19066:9:44"
                  },
                  "scope": 13547,
                  "src": "19004:428:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13215,
                    "nodeType": "Block",
                    "src": "19658:211:44",
                    "statements": [
                      {
                        "assignments": [
                          13182
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13182,
                            "mutability": "mutable",
                            "name": "owners",
                            "nameLocation": "19685:6:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13215,
                            "src": "19668:23:44",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 13180,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19668:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13181,
                              "nodeType": "ArrayTypeName",
                              "src": "19668:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13189,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13186,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13172,
                                "src": "19708:9:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 13187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "19708:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19694:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 13183,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19698:7:44",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13184,
                              "nodeType": "ArrayTypeName",
                              "src": "19698:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 13188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19694:31:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19668:57:44"
                      },
                      {
                        "body": {
                          "id": 13211,
                          "nodeType": "Block",
                          "src": "19782:58:44",
                          "statements": [
                            {
                              "expression": {
                                "id": 13209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 13201,
                                    "name": "owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13182,
                                    "src": "19796:6:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 13203,
                                  "indexExpression": {
                                    "id": 13202,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13191,
                                    "src": "19803:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19796:9:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 13205,
                                        "name": "_tokenIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13172,
                                        "src": "19816:9:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 13207,
                                      "indexExpression": {
                                        "id": 13206,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13191,
                                        "src": "19826:1:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "19816:12:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 13204,
                                    "name": "ownerOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 992,
                                    "src": "19808:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view returns (address)"
                                    }
                                  },
                                  "id": 13208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19808:21:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "19796:33:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13210,
                              "nodeType": "ExpressionStatement",
                              "src": "19796:33:44"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13194,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13191,
                            "src": "19755:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 13195,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13172,
                              "src": "19759:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 13196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "19759:16:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19755:20:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13212,
                        "initializationExpression": {
                          "assignments": [
                            13191
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 13191,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "19748:1:44",
                              "nodeType": "VariableDeclaration",
                              "scope": 13212,
                              "src": "19740:9:44",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 13190,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19740:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 13193,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 13192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19752:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "19740:13:44"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 13199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "19777:3:44",
                            "subExpression": {
                              "id": 13198,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13191,
                              "src": "19777:1:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13200,
                          "nodeType": "ExpressionStatement",
                          "src": "19777:3:44"
                        },
                        "nodeType": "ForStatement",
                        "src": "19735:105:44"
                      },
                      {
                        "expression": {
                          "id": 13213,
                          "name": "owners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13182,
                          "src": "19856:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 13177,
                        "id": 13214,
                        "nodeType": "Return",
                        "src": "19849:13:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13169,
                    "nodeType": "StructuredDocumentation",
                    "src": "19438:118:44",
                    "text": "@notice Returns a list of owner addresses for a given list of token ids\n @param _tokenIds List of token ids"
                  },
                  "functionSelector": "52f5c2e4",
                  "id": 13216,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownersOfTokenIds",
                  "nameLocation": "19570:16:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13172,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nameLocation": "19606:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13216,
                        "src": "19587:28:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13170,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "19587:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13171,
                          "nodeType": "ArrayTypeName",
                          "src": "19587:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19586:30:44"
                  },
                  "returnParameters": {
                    "id": 13177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13176,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13216,
                        "src": "19640:16:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13174,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "19640:7:44",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 13175,
                          "nodeType": "ArrayTypeName",
                          "src": "19640:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19639:18:44"
                  },
                  "scope": 13547,
                  "src": "19561:308:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 13272,
                    "nodeType": "Block",
                    "src": "20232:308:44",
                    "statements": [
                      {
                        "assignments": [
                          13232
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13232,
                            "mutability": "mutable",
                            "name": "claimed",
                            "nameLocation": "20256:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13272,
                            "src": "20242:21:44",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 13230,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "20242:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13231,
                              "nodeType": "ArrayTypeName",
                              "src": "20242:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13239,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13236,
                                "name": "_ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13222,
                                "src": "20277:14:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 13237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "20277:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "20266:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bool[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 13233,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "20270:4:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13234,
                              "nodeType": "ArrayTypeName",
                              "src": "20270:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            }
                          },
                          "id": 13238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20266:33:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20242:57:44"
                      },
                      {
                        "body": {
                          "id": 13268,
                          "nodeType": "Block",
                          "src": "20362:147:44",
                          "statements": [
                            {
                              "assignments": [
                                13252,
                                null,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 13252,
                                  "mutability": "mutable",
                                  "name": "storedBit",
                                  "nameLocation": "20385:9:44",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13268,
                                  "src": "20377:17:44",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 13251,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20377:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null,
                                null,
                                null
                              ],
                              "id": 13259,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 13254,
                                    "name": "_editionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13219,
                                    "src": "20427:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 13255,
                                      "name": "_ticketNumbers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13222,
                                      "src": "20439:14:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 13257,
                                    "indexExpression": {
                                      "id": 13256,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13241,
                                      "src": "20454:1:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "20439:17:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13253,
                                  "name": "_getBitForTicketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13490,
                                  "src": "20404:22:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 13258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20404:53:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20376:81:44"
                            },
                            {
                              "expression": {
                                "id": 13266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 13260,
                                    "name": "claimed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13232,
                                    "src": "20471:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 13262,
                                  "indexExpression": {
                                    "id": 13261,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13241,
                                    "src": "20479:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "20471:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 13263,
                                    "name": "storedBit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13252,
                                    "src": "20484:9:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 13264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20497:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "20484:14:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "20471:27:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13267,
                              "nodeType": "ExpressionStatement",
                              "src": "20471:27:44"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13244,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13241,
                            "src": "20330:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 13245,
                              "name": "_ticketNumbers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13222,
                              "src": "20334:14:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 13246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "20334:21:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20330:25:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13269,
                        "initializationExpression": {
                          "assignments": [
                            13241
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 13241,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "20323:1:44",
                              "nodeType": "VariableDeclaration",
                              "scope": 13269,
                              "src": "20315:9:44",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 13240,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20315:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 13243,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 13242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20327:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20315:13:44"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 13249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "20357:3:44",
                            "subExpression": {
                              "id": 13248,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13241,
                              "src": "20357:1:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13250,
                          "nodeType": "ExpressionStatement",
                          "src": "20357:3:44"
                        },
                        "nodeType": "ForStatement",
                        "src": "20310:199:44"
                      },
                      {
                        "expression": {
                          "id": 13270,
                          "name": "claimed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13232,
                          "src": "20526:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "functionReturnParameters": 13227,
                        "id": 13271,
                        "nodeType": "Return",
                        "src": "20519:14:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13217,
                    "nodeType": "StructuredDocumentation",
                    "src": "19875:203:44",
                    "text": "@notice Returns the claimed ticket numbers for a given edition and list of ticket numbers (indexes)\n @param _editionId Edition id\n @param _ticketNumbers List of ticket numbers (indexes)"
                  },
                  "functionSelector": "065d5b85",
                  "id": 13273,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkTicketNumbers",
                  "nameLocation": "20092:18:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13223,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13219,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "20119:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13273,
                        "src": "20111:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20111:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13222,
                        "mutability": "mutable",
                        "name": "_ticketNumbers",
                        "nameLocation": "20150:14:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13273,
                        "src": "20131:33:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13220,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20131:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13221,
                          "nodeType": "ArrayTypeName",
                          "src": "20131:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20110:55:44"
                  },
                  "returnParameters": {
                    "id": 13227,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13226,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13273,
                        "src": "20213:13:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13224,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "20213:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 13225,
                          "nodeType": "ArrayTypeName",
                          "src": "20213:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20212:15:44"
                  },
                  "scope": 13547,
                  "src": "20083:457:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 13300,
                    "nodeType": "Block",
                    "src": "20717:276:44",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 13279,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "20731:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 13280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "20731:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 13281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20748:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "20731:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 13286,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "20835:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 13287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "20835:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 13288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20852:1:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "20835:18:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 13297,
                            "nodeType": "Block",
                            "src": "20935:52:44",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "756e737570706f7274656420636861696e",
                                      "id": 13294,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20956:19:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45",
                                        "typeString": "literal_string \"unsupported chain\""
                                      },
                                      "value": "unsupported chain"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_997890f0b262363042d0d11b91677f58cfe44d549cb3b930c7eaac47c9fb0f45",
                                        "typeString": "literal_string \"unsupported chain\""
                                      }
                                    ],
                                    "id": 13293,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "20949:6:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 13295,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20949:27:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 13296,
                                "nodeType": "ExpressionStatement",
                                "src": "20949:27:44"
                              }
                            ]
                          },
                          "id": 13298,
                          "nodeType": "IfStatement",
                          "src": "20831:156:44",
                          "trueBody": {
                            "id": 13292,
                            "nodeType": "Block",
                            "src": "20855:74:44",
                            "statements": [
                              {
                                "expression": {
                                  "hexValue": "307865653335453934364464373345463738643335323435346333463931356532634130613039643837",
                                  "id": 13290,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20876:42:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "value": "0xee35E946Dd73EF78d352454c3F915e2cA0a09d87"
                                },
                                "functionReturnParameters": 13278,
                                "id": 13291,
                                "nodeType": "Return",
                                "src": "20869:49:44"
                              }
                            ]
                          }
                        },
                        "id": 13299,
                        "nodeType": "IfStatement",
                        "src": "20727:260:44",
                        "trueBody": {
                          "id": 13285,
                          "nodeType": "Block",
                          "src": "20751:74:44",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "307838353861393235313134383537313543666237353466333937613738393462373732346337416264",
                                "id": 13283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20772:42:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "value": "0x858a92511485715Cfb754f397a7894b7724c7Abd"
                              },
                              "functionReturnParameters": 13278,
                              "id": 13284,
                              "nodeType": "Return",
                              "src": "20765:49:44"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13274,
                    "nodeType": "StructuredDocumentation",
                    "src": "20546:96:44",
                    "text": "@notice Returns the address (ie: gnosis safe) authorized to change ownership of the contract"
                  },
                  "functionSelector": "0bcca831",
                  "id": 13301,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "soundRecoveryAddress",
                  "nameLocation": "20656:20:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20676:2:44"
                  },
                  "returnParameters": {
                    "id": 13278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13277,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13301,
                        "src": "20708:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20708:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20707:9:44"
                  },
                  "scope": 13547,
                  "src": "20647:346:44",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13334,
                    "nodeType": "Block",
                    "src": "21326:235:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 13312,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "21352:4:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_TEST_ArtistV6_$13547",
                                        "typeString": "contract TEST_ArtistV6"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_TEST_ArtistV6_$13547",
                                        "typeString": "contract TEST_ArtistV6"
                                      }
                                    ],
                                    "id": 13311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21344:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 13310,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21344:7:44",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 13313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21344:13:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 13314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "21344:21:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 13315,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13306,
                                "src": "21369:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21344:32:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e73756666696369656e742062616c616e636520666f722073656e64",
                              "id": 13317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21378:31:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              },
                              "value": "Insufficient balance for send"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_296e025c92f97d4a0bd3391ec432085f5013e4cb10420a28a6ac8a0f54556268",
                                "typeString": "literal_string \"Insufficient balance for send\""
                              }
                            ],
                            "id": 13309,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21336:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21336:74:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13319,
                        "nodeType": "ExpressionStatement",
                        "src": "21336:74:44"
                      },
                      {
                        "assignments": [
                          13321,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13321,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "21427:7:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13334,
                            "src": "21422:12:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 13320,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "21422:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 13328,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 13326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21472:2:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 13322,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13304,
                                "src": "21440:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 13323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "21440:15:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 13325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 13324,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13306,
                                "src": "21463:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "21440:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 13327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21440:35:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21421:54:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13330,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13321,
                              "src": "21493:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "556e61626c6520746f2073656e642076616c75653a20726563697069656e74206d61792068617665207265766572746564",
                              "id": 13331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21502:51:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              },
                              "value": "Unable to send value: recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db4f065c239902b2bfc00792475c85e9c0c6567034ab3c0dc51047a09d6967b2",
                                "typeString": "literal_string \"Unable to send value: recipient may have reverted\""
                              }
                            ],
                            "id": 13329,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21485:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21485:69:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13333,
                        "nodeType": "ExpressionStatement",
                        "src": "21485:69:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13302,
                    "nodeType": "StructuredDocumentation",
                    "src": "21105:143:44",
                    "text": "@notice Sends funds to an address\n @param _recipient The address to send funds to\n @param _amount The amount of funds to send"
                  },
                  "id": 13335,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendFunds",
                  "nameLocation": "21262:10:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13304,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "21289:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13335,
                        "src": "21273:26:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 13303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21273:15:44",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13306,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "21309:7:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13335,
                        "src": "21301:15:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21301:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21272:45:44"
                  },
                  "returnParameters": {
                    "id": 13308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21326:0:44"
                  },
                  "scope": 13547,
                  "src": "21253:308:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 13421,
                    "nodeType": "Block",
                    "src": "21998:1062:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13348,
                                "name": "_ticketNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13342,
                                "src": "22184:13:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                },
                                "id": 13351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 13349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22200:1:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 13350,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22203:2:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "22200:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                }
                              },
                              "src": "22184:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5469636b6574206e756d6265722065786365656473206d6178",
                              "id": 13353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22207:27:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              },
                              "value": "Ticket number exceeds max"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6e103a53dd93fbc4a81c43992a6a3c4cb186a9dcee55c799e67dee15af7d8c1d",
                                "typeString": "literal_string \"Ticket number exceeds max\""
                              }
                            ],
                            "id": 13347,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22176:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22176:59:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13355,
                        "nodeType": "ExpressionStatement",
                        "src": "22176:59:44"
                      },
                      {
                        "assignments": [
                          13357,
                          13359,
                          13361,
                          13363
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13357,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "22299:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13421,
                            "src": "22291:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13356,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22291:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 13359,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "22330:10:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13421,
                            "src": "22322:18:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13358,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22322:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 13361,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "22362:16:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13421,
                            "src": "22354:24:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13360,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22354:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 13363,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "22400:16:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13421,
                            "src": "22392:24:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13362,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22392:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13368,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 13365,
                              "name": "_editionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13340,
                              "src": "22452:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13366,
                              "name": "_ticketNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13342,
                              "src": "22464:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13364,
                            "name": "_getBitForTicketNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13490,
                            "src": "22429:22:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 13367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22429:49:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22277:201:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13370,
                                "name": "storedBit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13357,
                                "src": "22497:9:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 13371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22510:1:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22497:14:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964207469636b6574206e756d626572206f72204e465420616c726561647920636c61696d6564",
                              "id": 13373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22513:46:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              },
                              "value": "Invalid ticket number or NFT already claimed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6401ed5de3727eacc202d96fb3af07c9049b770015b4dcaa0ac15238c0534182",
                                "typeString": "literal_string \"Invalid ticket number or NFT already claimed\""
                              }
                            ],
                            "id": 13369,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22489:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22489:71:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13375,
                        "nodeType": "ExpressionStatement",
                        "src": "22489:71:44"
                      },
                      {
                        "expression": {
                          "id": 13390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 13376,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12267,
                                "src": "22645:13:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 13379,
                              "indexExpression": {
                                "id": 13377,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13340,
                                "src": "22659:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22645:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13380,
                            "indexExpression": {
                              "id": 13378,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13363,
                              "src": "22671:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22645:43:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13381,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13359,
                              "src": "22691:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13387,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 13384,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "22713:1:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 13383,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22705:7:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 13382,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22705:7:44",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22705:10:44",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "id": 13386,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13361,
                                    "src": "22719:16:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "22705:30:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 13388,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "22704:32:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "22691:45:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22645:91:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13391,
                        "nodeType": "ExpressionStatement",
                        "src": "22645:91:44"
                      },
                      {
                        "assignments": [
                          13393
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13393,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "22755:6:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13421,
                            "src": "22747:14:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 13392,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "22747:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13415,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 13397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22821:10:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 13398,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12236,
                                  "src": "22849:16:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 13402,
                                          "name": "PERMISSIONED_SALE_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12234,
                                          "src": "22904:26:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 13405,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "22940:4:44",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_TEST_ArtistV6_$13547",
                                                "typeString": "contract TEST_ArtistV6"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_TEST_ArtistV6_$13547",
                                                "typeString": "contract TEST_ArtistV6"
                                              }
                                            ],
                                            "id": 13404,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "22932:7:44",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 13403,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "22932:7:44",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 13406,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22932:13:44",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 13407,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "22947:3:44",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 13408,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "22947:10:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 13409,
                                          "name": "_editionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13340,
                                          "src": "22959:10:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 13410,
                                          "name": "_ticketNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13342,
                                          "src": "22971:13:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 13400,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "22893:3:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 13401,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "22893:10:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 13411,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22893:92:44",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 13399,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "22883:9:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 13412,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22883:103:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 13395,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22787:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 13396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "22787:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 13413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22787:213:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 13394,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "22764:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 13414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22764:246:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22747:263:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13418,
                              "name": "_signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13338,
                              "src": "23042:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 13416,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13393,
                              "src": "23027:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 13417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recover",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4427,
                            "src": "23027:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address)"
                            }
                          },
                          "id": 13419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23027:26:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 13346,
                        "id": 13420,
                        "nodeType": "Return",
                        "src": "23020:33:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13336,
                    "nodeType": "StructuredDocumentation",
                    "src": "21567:281:44",
                    "text": "@notice Gets signer address to validate permissioned purchase\n @param _signature signed message\n @param _editionId edition id\n @param _ticketNumber ticket number to check\n @return address of signer\n @dev https://eips.ethereum.org/EIPS/eip-712"
                  },
                  "id": 13422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSigner",
                  "nameLocation": "21862:9:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13338,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nameLocation": "21896:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13422,
                        "src": "21881:25:44",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13337,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "21881:5:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13340,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "21924:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13422,
                        "src": "21916:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13339,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21916:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13342,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "21952:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13422,
                        "src": "21944:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13341,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21944:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21871:100:44"
                  },
                  "returnParameters": {
                    "id": 13346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13345,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13422,
                        "src": "21989:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21989:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21988:9:44"
                  },
                  "scope": 13547,
                  "src": "21853:1207:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 13489,
                    "nodeType": "Block",
                    "src": "23436:763:44",
                    "statements": [
                      {
                        "assignments": [
                          13439
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13439,
                            "mutability": "mutable",
                            "name": "localGroup",
                            "nameLocation": "23454:10:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13489,
                            "src": "23446:18:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13438,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23446:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13440,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23446:18:44"
                      },
                      {
                        "assignments": [
                          13442
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13442,
                            "mutability": "mutable",
                            "name": "ticketNumbersIdx",
                            "nameLocation": "23522:16:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13489,
                            "src": "23514:24:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13441,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23514:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13443,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23514:24:44"
                      },
                      {
                        "assignments": [
                          13445
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13445,
                            "mutability": "mutable",
                            "name": "localGroupOffset",
                            "nameLocation": "23592:16:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13489,
                            "src": "23584:24:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13444,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23584:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13446,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23584:24:44"
                      },
                      {
                        "assignments": [
                          13448
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13448,
                            "mutability": "mutable",
                            "name": "storedBit",
                            "nameLocation": "23687:9:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13489,
                            "src": "23679:17:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13447,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23679:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13449,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23679:17:44"
                      },
                      {
                        "id": 13462,
                        "nodeType": "UncheckedBlock",
                        "src": "23777:125:44",
                        "statements": [
                          {
                            "expression": {
                              "id": 13454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 13450,
                                "name": "ticketNumbersIdx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13442,
                                "src": "23801:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13451,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13427,
                                  "src": "23820:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 13452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23836:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "23820:19:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23801:38:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13455,
                            "nodeType": "ExpressionStatement",
                            "src": "23801:38:44"
                          },
                          {
                            "expression": {
                              "id": 13460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 13456,
                                "name": "localGroupOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13445,
                                "src": "23853:16:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13457,
                                  "name": "_ticketNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13427,
                                  "src": "23872:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 13458,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23888:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "23872:19:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23853:38:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13461,
                            "nodeType": "ExpressionStatement",
                            "src": "23853:38:44"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 13469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13463,
                            "name": "localGroup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13439,
                            "src": "23960:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 13464,
                                "name": "ticketNumbers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12267,
                                "src": "23973:13:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 13466,
                              "indexExpression": {
                                "id": 13465,
                                "name": "_editionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13425,
                                "src": "23987:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23973:25:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13468,
                            "indexExpression": {
                              "id": 13467,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13442,
                              "src": "23999:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "23973:43:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23960:56:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13470,
                        "nodeType": "ExpressionStatement",
                        "src": "23960:56:44"
                      },
                      {
                        "expression": {
                          "id": 13481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13471,
                            "name": "storedBit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13448,
                            "src": "24058:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13474,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 13472,
                                    "name": "localGroup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13439,
                                    "src": "24071:10:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "id": 13473,
                                    "name": "localGroupOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13445,
                                    "src": "24085:16:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24071:30:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 13475,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "24070:32:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "31",
                                  "id": 13478,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24113:1:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "id": 13477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24105:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13476,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24105:7:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24105:10:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24070:45:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24058:57:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13482,
                        "nodeType": "ExpressionStatement",
                        "src": "24058:57:44"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 13483,
                              "name": "storedBit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13448,
                              "src": "24134:9:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13484,
                              "name": "localGroup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13439,
                              "src": "24145:10:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13485,
                              "name": "localGroupOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13445,
                              "src": "24157:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13486,
                              "name": "ticketNumbersIdx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13442,
                              "src": "24175:16:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 13487,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "24133:59:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 13437,
                        "id": 13488,
                        "nodeType": "Return",
                        "src": "24126:66:44"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13423,
                    "nodeType": "StructuredDocumentation",
                    "src": "23066:146:44",
                    "text": "@notice Gets the bit variables associated with a ticket number\n @param _editionId edition id\n @param _ticketNumber ticket number"
                  },
                  "id": 13490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBitForTicketNumber",
                  "nameLocation": "23226:22:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13425,
                        "mutability": "mutable",
                        "name": "_editionId",
                        "nameLocation": "23257:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13490,
                        "src": "23249:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13424,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23249:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13427,
                        "mutability": "mutable",
                        "name": "_ticketNumber",
                        "nameLocation": "23277:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13490,
                        "src": "23269:21:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13426,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23269:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23248:43:44"
                  },
                  "returnParameters": {
                    "id": 13437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13430,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13490,
                        "src": "23351:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23351:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13432,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13490,
                        "src": "23372:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23372:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13434,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13490,
                        "src": "23393:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13433,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23393:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13436,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13490,
                        "src": "23414:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13435,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23414:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23337:94:44"
                  },
                  "scope": 13547,
                  "src": "23217:982:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 13535,
                    "nodeType": "Block",
                    "src": "24270:321:44",
                    "statements": [
                      {
                        "assignments": [
                          13496
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13496,
                            "mutability": "mutable",
                            "name": "contractAddress",
                            "nameLocation": "24294:15:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 13535,
                            "src": "24280:29:44",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 13495,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "24280:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13511,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 13505,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "24356:4:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_TEST_ArtistV6_$13547",
                                            "typeString": "contract TEST_ArtistV6"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_TEST_ArtistV6_$13547",
                                            "typeString": "contract TEST_ArtistV6"
                                          }
                                        ],
                                        "id": 13504,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "24348:7:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 13503,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "24348:7:44",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 13506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "24348:13:44",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 13502,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24340:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 13501,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24340:7:44",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 13507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24340:22:44",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 13500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24332:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13499,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "24332:7:44",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24332:31:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "3230",
                              "id": 13509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24365:2:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              }
                            ],
                            "expression": {
                              "id": 13497,
                              "name": "Strings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4271,
                              "src": "24312:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Strings_$4271_$",
                                "typeString": "type(library Strings)"
                              }
                            },
                            "id": 13498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toHexString",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4250,
                            "src": "24312:19:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 13510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24312:56:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24280:88:44"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 13512,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "24382:5:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 13513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "24382:13:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 13514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24399:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "24382:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13533,
                          "nodeType": "Block",
                          "src": "24509:76:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13528,
                                    "name": "baseURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12238,
                                    "src": "24544:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  },
                                  {
                                    "id": 13529,
                                    "name": "contractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13496,
                                    "src": "24553:15:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 13530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24570:3:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 13526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24530:6:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 13525,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24530:6:44",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 13527,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "24530:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 13531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24530:44:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 13494,
                              "id": 13532,
                              "nodeType": "Return",
                              "src": "24523:51:44"
                            }
                          ]
                        },
                        "id": 13534,
                        "nodeType": "IfStatement",
                        "src": "24378:207:44",
                        "trueBody": {
                          "id": 13524,
                          "nodeType": "Block",
                          "src": "24402:101:44",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "68747470733a2f2f6d657461646174612e736f756e642e78797a2f76312f",
                                    "id": 13519,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24437:32:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96",
                                      "typeString": "literal_string \"https://metadata.sound.xyz/v1/\""
                                    },
                                    "value": "https://metadata.sound.xyz/v1/"
                                  },
                                  {
                                    "id": 13520,
                                    "name": "contractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13496,
                                    "src": "24471:15:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "hexValue": "2f",
                                    "id": 13521,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24488:3:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    },
                                    "value": "/"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_47d765071a63d5b8f58cd07a90800801ba8a1bbcf934ceffbffcb469149c4f96",
                                      "typeString": "literal_string \"https://metadata.sound.xyz/v1/\""
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                      "typeString": "literal_string \"/\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 13517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "24423:6:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 13516,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24423:6:44",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 13518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "concat",
                                  "nodeType": "MemberAccess",
                                  "src": "24423:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                                    "typeString": "function () pure returns (string memory)"
                                  }
                                },
                                "id": 13522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24423:69:44",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 13494,
                              "id": 13523,
                              "nodeType": "Return",
                              "src": "24416:76:44"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 13536,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_contractBaseURI",
                  "nameLocation": "24214:16:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24230:2:44"
                  },
                  "returnParameters": {
                    "id": 13494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13493,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13536,
                        "src": "24255:13:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13492,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "24255:6:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24254:15:44"
                  },
                  "scope": 13547,
                  "src": "24205:386:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 13545,
                    "nodeType": "Block",
                    "src": "24650:41:44",
                    "statements": [
                      {
                        "expression": {
                          "id": 13543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13541,
                            "name": "someNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12269,
                            "src": "24660:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13542,
                            "name": "_someNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13538,
                            "src": "24673:11:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24660:24:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13544,
                        "nodeType": "ExpressionStatement",
                        "src": "24660:24:44"
                      }
                    ]
                  },
                  "functionSelector": "79b236d2",
                  "id": 13546,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSomeNumber",
                  "nameLocation": "24606:13:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13539,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13538,
                        "mutability": "mutable",
                        "name": "_someNumber",
                        "nameLocation": "24628:11:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 13546,
                        "src": "24620:19:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13537,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24620:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24619:21:44"
                  },
                  "returnParameters": {
                    "id": 13540,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24650:0:44"
                  },
                  "scope": 13547,
                  "src": "24597:94:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 13548,
              "src": "2224:22469:44",
              "usedErrors": []
            }
          ],
          "src": "45:24649:44"
        },
        "id": 44
      },
      "contracts/utils/LibUintToString.sol": {
        "ast": {
          "absolutePath": "contracts/utils/LibUintToString.sol",
          "exportedSymbols": {
            "LibUintToString": [
              13592
            ]
          },
          "id": 13593,
          "license": "Unlicense",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13549,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:45"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "LibUintToString",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 13592,
              "linearizedBaseContracts": [
                13592
              ],
              "name": "LibUintToString",
              "nameLocation": "70:15:45",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 13552,
                  "mutability": "constant",
                  "name": "MAX_UINT256_STRING_LENGTH",
                  "nameLocation": "117:25:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 13592,
                  "src": "92:55:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "92:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3738",
                    "id": 13551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "145:2:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_78_by_1",
                      "typeString": "int_const 78"
                    },
                    "value": "78"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 13555,
                  "mutability": "constant",
                  "name": "ASCII_DIGIT_OFFSET",
                  "nameLocation": "176:18:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 13592,
                  "src": "153:46:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 13553,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "153:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3438",
                    "id": 13554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "197:2:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_48_by_1",
                      "typeString": "int_const 48"
                    },
                    "value": "48"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 13590,
                    "nodeType": "Block",
                    "src": "418:744:45",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13563,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13558,
                            "src": "432:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "437:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "432:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13569,
                        "nodeType": "IfStatement",
                        "src": "428:47:45",
                        "trueBody": {
                          "id": 13568,
                          "nodeType": "Block",
                          "src": "440:35:45",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 13566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "461:3:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 13562,
                              "id": 13567,
                              "nodeType": "Return",
                              "src": "454:10:45"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 13575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13570,
                            "name": "nstr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13561,
                            "src": "515:4:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 13573,
                                "name": "MAX_UINT256_STRING_LENGTH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13552,
                                "src": "533:25:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "522:10:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (string memory)"
                              },
                              "typeName": {
                                "id": 13571,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "526:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              }
                            },
                            "id": 13574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "522:37:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "515:44:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 13576,
                        "nodeType": "ExpressionStatement",
                        "src": "515:44:45"
                      },
                      {
                        "assignments": [
                          13578
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13578,
                            "mutability": "mutable",
                            "name": "k",
                            "nameLocation": "577:1:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 13590,
                            "src": "569:9:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13577,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "569:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13580,
                        "initialValue": {
                          "id": 13579,
                          "name": "MAX_UINT256_STRING_LENGTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13552,
                          "src": "581:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "569:37:45"
                      },
                      {
                        "body": {
                          "id": 13585,
                          "nodeType": "Block",
                          "src": "691:218:45",
                          "statements": [
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "714:185:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "732:47:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "ASCII_DIGIT_OFFSET",
                                          "nodeType": "YulIdentifier",
                                          "src": "748:18:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "n",
                                              "nodeType": "YulIdentifier",
                                              "src": "772:1:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "775:2:45",
                                              "type": "",
                                              "value": "10"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mod",
                                            "nodeType": "YulIdentifier",
                                            "src": "768:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "768:10:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "744:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "744:35:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "char",
                                        "nodeType": "YulTypedName",
                                        "src": "736:4:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "nstr",
                                              "nodeType": "YulIdentifier",
                                              "src": "807:4:45"
                                            },
                                            {
                                              "name": "k",
                                              "nodeType": "YulIdentifier",
                                              "src": "813:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "803:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "803:12:45"
                                        },
                                        {
                                          "name": "char",
                                          "nodeType": "YulIdentifier",
                                          "src": "817:4:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "796:26:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "796:26:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "839:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "k",
                                          "nodeType": "YulIdentifier",
                                          "src": "848:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "851:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "844:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "844:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "k",
                                        "nodeType": "YulIdentifier",
                                        "src": "839:1:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "870:15:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "n",
                                          "nodeType": "YulIdentifier",
                                          "src": "879:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "882:2:45",
                                          "type": "",
                                          "value": "10"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "875:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "875:10:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "n",
                                        "nodeType": "YulIdentifier",
                                        "src": "870:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 13555,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "748:18:45",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 13578,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "813:1:45",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 13578,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "839:1:45",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 13578,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "848:1:45",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 13558,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "772:1:45",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 13558,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "870:1:45",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 13558,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "879:1:45",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 13561,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "807:4:45",
                                  "valueSize": 1
                                }
                              ],
                              "id": 13584,
                              "nodeType": "InlineAssembly",
                              "src": "705:194:45"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13581,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13558,
                            "src": "683:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "688:1:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "683:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13586,
                        "nodeType": "WhileStatement",
                        "src": "676:233:45"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "927:208:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1002:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "nstr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1014:4:45"
                                  },
                                  {
                                    "name": "k",
                                    "nodeType": "YulIdentifier",
                                    "src": "1020:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1010:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1010:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "nstr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1002:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "nstr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1085:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "MAX_UINT256_STRING_LENGTH",
                                        "nodeType": "YulIdentifier",
                                        "src": "1095:25:45"
                                      },
                                      {
                                        "name": "k",
                                        "nodeType": "YulIdentifier",
                                        "src": "1122:1:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1091:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1091:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1078:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1078:47:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1078:47:45"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 13552,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1095:25:45",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13578,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1020:1:45",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13578,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1122:1:45",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13561,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1002:4:45",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13561,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1014:4:45",
                            "valueSize": 1
                          },
                          {
                            "declaration": 13561,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1085:4:45",
                            "valueSize": 1
                          }
                        ],
                        "id": 13587,
                        "nodeType": "InlineAssembly",
                        "src": "918:217:45"
                      },
                      {
                        "expression": {
                          "id": 13588,
                          "name": "nstr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13561,
                          "src": "1151:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 13562,
                        "id": 13589,
                        "nodeType": "Return",
                        "src": "1144:11:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13556,
                    "nodeType": "StructuredDocumentation",
                    "src": "206:135:45",
                    "text": "@dev Converts a `uint256` value to a string.\n @param n The integer to convert.\n @return nstr `n` as a decimal string."
                  },
                  "id": 13591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "355:8:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13558,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "372:1:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 13591,
                        "src": "364:9:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13557,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "364:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "363:11:45"
                  },
                  "returnParameters": {
                    "id": 13562,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13561,
                        "mutability": "mutable",
                        "name": "nstr",
                        "nameLocation": "412:4:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 13591,
                        "src": "398:18:45",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13560,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "398:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "397:20:45"
                  },
                  "scope": 13592,
                  "src": "346:816:45",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 13593,
              "src": "62:1102:45",
              "usedErrors": []
            }
          ],
          "src": "37:1128:45"
        },
        "id": 45
      }
    }
  }
}
